一、进程概述
1. 程序和进程
程序是包含一系列信息的文件,这些信息描述了如何在运行时创建一个进程。
进程是正在运行的程序的实例。资源分配的最小单位,一个程序可以创建多个进程。
程序整个文件里面存储了 机器指令、程序入口地址、数据等创建进程必须的内容。
2. 单道、多道程序设计
单道程序:计算机内存中只允许一个程序运行
多道程序:计算机内存中同时存放几道相互独立的程序。
宏观上程序是并行运行的,微观上是串行运行的,多个进程轮换使用CPU。
3. 时间片
时间片,处理器分配给每个进程的微观上的CPU占用时间,时间片耗尽后,进程放弃CPU资源,轮换给其他进程使用。
4. 并行和并发
5. 进程控制块(PCB)
a. 每个进程都有一个PCB,维护此进程相关信息。
b. PCB在Linux本质上就是一个struct
c. 进程PCB内部主要信息
ⅰ. 进程ID:每个进程都有唯一的ID,是一个非负整数。
ⅱ. 进程当前状态:就绪、运行、挂起、停止等状态。
ⅲ. 进程切换时需要保存和恢复的一些CPU寄存器
ⅳ. 虚拟地址空间的信息
ⅴ. 描述控制终端的信息
ⅵ. 文件描述符表
二、 进程的状态
1. 进程三态模型
1.1 运行态:
进程正在占有处理器运行
1.2 就绪态:
进程具有被运行条件,拿到了进程执行所需要的资源,等待系统分配处理器后就可以运行。
处于就绪态的进程通常不止有一个,通常它们排成一个队列,成为就绪队列。
1.3 阻塞态:
等待(wait)或者睡眠(sleep)状态,指进程不具备运行条件,正在等待某个事件的完成
2. 进程五态模型
2.1. 新建态:
进程刚被创建,尚未进入就绪队列
2.2. 终止态:
进程任务完成,到达正常结束点,或者出现无法克服的错误而异常终止。进入终止态的进程以后不再执行,但是仍然保存在操作系统中,等待善后,等待其他进程(一般为父进程)回收资源后消失。