进程模型
- 多道程序设计
允许多个程序同时进入内存并运行,其目的是为了提高系统效率。 - 并发环境
一段时间间隔内,单处理器上有两个或两个以上的程序 同时处于开始运行但尚未结束的状态,并且次序不是事先确定的。 - 进程
进程是具有独立功能的程序关于 某个数据集合上 的一次运行活动,是系统进行资源分配和调度的独立单位。又称“任务”。
- 程序的一次执行过程
- 是正在运行程序的抽象
- 将一个CPU变幻成多个虚拟的CPU
- 系统资源以进程为单位分配,如内存、文件... 每个具有独立的地址空间
- 操作系统将CPU调度给需要的进程
进程控制块PCB
Process Control Block又称进程描述符、进程属性。
操作系统用于管理控制进程的一个专门的数据结构。记录进程的各种属性,描述进程的动态变化过程。 进程与PCB是一一对应的。
所有PCB的集合是进程表。
进程状态及状态转换
- 进程的三种基本状态
- 运行态 Running
占有CPU,并在CPU上运行 - 就绪态 Ready
已经具备运行条件,但由于没有空闲CPU,而暂时不能运行 - 等待态 Waiting/Blocked(又称阻塞态、封锁态、睡眠态)
因等待某一事件而暂时不能运行
-
状态转换
状态转换
假设某单处理器计算机系统中有n个进程,则系统中处于运行状态最多1个,最少0个;等待状态最多n个,最少n-1个;就绪状态最多n-1个,最少0个。
- 进程的其他状态
- 创建new
已完成创建一进程所必要的工作如PID,PCB等;但尚未同意执行该进程,可能因为资源有限。 - 终止terminated
终止执行后,进程进入该状态;可完成一些数据统计工作;资源回收。 - 挂起 suspend
用于调节负载;进程不占有内存空间,其进程映像交换到磁盘上
-
五状态进程模型
五状态进程模型 -
七状态进程模型
七状态进程模型
进程队列
操作系统为每一类进程建立一个或多个队列。队列元素为PCB。伴随进程状态的改变,其PCB从一个队列进入另一个队列。
由于等待的原因有很多,所以有多个等待类型的队列。
进程控制
进程控制操作完成进程各状态之间的转换。
- 进程的创建
- 给新进程分配一个唯一标识以及进程控制块
- 为进程分配地址空间
- 初始化进程控制块(设置默认值,如状态为New...)
- 设置相应的队列指针(如:把新进程加到就绪队列链表中)
unix下创建进程用:fork / exec
windows下创建进程用:CreateProcess
- 进程的撤销
即结束进程。
- 收回进程所占有的资源(关闭打开的文件、断开网络连接、回收分配的内存...)
- 撤销该进程的PCB
unix下撤销用:exit
windows: TerminateProcess
- 进程阻塞
处于运行状态的进程,在其运行过程中期待某一事件发生,如等待键盘输入、等待磁盘数据传输完成、等待其它进程发送消息,当被等待的事件未发生时,由进程自己执行阻塞原语,使自己由运行态变为阻塞态。
unix:wait
windows:WaitForSingleObject
进程的分类
- 系统进程 & 用户进程
- 前台进程 & 后台进程
- CPU密集型进程 & I/O密集型进程
线程模型
- 为什么在进程中再派生线程
-
应用的需要
- 开销的考虑
进程相关操作有:创建进程、撤销进程、进程通信、进程切换。
时间/控件开销大,限制了并发度的提高
线程的开销小(创建一个新线程花费时间少,两个线程切换花费的时间少,线程之间相互通信无须通过内核,同一进程内的线程共享内存和文件) - 性能的考虑
可再入程序(可重入):
可被多个进程同时调用的程序,具有下列性质:它是纯代码的,即在执行过程中自身不改变;调用它的进程应该提供数据区。