您的当前位置:首页正文

(四)进程/线程模型

来源:要发发知识网

进程模型

  1. 多道程序设计
    允许多个程序同时进入内存并运行,其目的是为了提高系统效率。
  2. 并发环境
    一段时间间隔内,单处理器上有两个或两个以上的程序 同时处于开始运行但尚未结束的状态,并且次序不是事先确定的。
  3. 进程
    进程是具有独立功能的程序关于 某个数据集合上 的一次运行活动,是系统进行资源分配和调度的独立单位。又称“任务”。
  • 程序的一次执行过程
  • 是正在运行程序的抽象
  • 将一个CPU变幻成多个虚拟的CPU
  • 系统资源以进程为单位分配,如内存、文件... 每个具有独立的地址空间
  • 操作系统将CPU调度给需要的进程

进程控制块PCB

Process Control Block又称进程描述符、进程属性。
操作系统用于管理控制进程的一个专门的数据结构。记录进程的各种属性,描述进程的动态变化过程。 进程与PCB是一一对应的。
所有PCB的集合是进程表。

进程状态及状态转换

  1. 进程的三种基本状态
  • 运行态 Running
    占有CPU,并在CPU上运行
  • 就绪态 Ready
    已经具备运行条件,但由于没有空闲CPU,而暂时不能运行
  • 等待态 Waiting/Blocked(又称阻塞态、封锁态、睡眠态)
    因等待某一事件而暂时不能运行
  1. 状态转换


    状态转换

    假设某单处理器计算机系统中有n个进程,则系统中处于运行状态最多1个,最少0个;等待状态最多n个,最少n-1个;就绪状态最多n-1个,最少0个。

  2. 进程的其他状态
  • 创建new
    已完成创建一进程所必要的工作如PID,PCB等;但尚未同意执行该进程,可能因为资源有限。
  • 终止terminated
    终止执行后,进程进入该状态;可完成一些数据统计工作;资源回收。
  • 挂起 suspend
    用于调节负载;进程不占有内存空间,其进程映像交换到磁盘上
  1. 五状态进程模型


    五状态进程模型
  2. 七状态进程模型


    七状态进程模型

进程队列

操作系统为每一类进程建立一个或多个队列。队列元素为PCB。伴随进程状态的改变,其PCB从一个队列进入另一个队列。
由于等待的原因有很多,所以有多个等待类型的队列。

进程控制

进程控制操作完成进程各状态之间的转换。

  1. 进程的创建
  • 给新进程分配一个唯一标识以及进程控制块
  • 为进程分配地址空间
  • 初始化进程控制块(设置默认值,如状态为New...)
  • 设置相应的队列指针(如:把新进程加到就绪队列链表中)
    unix下创建进程用:fork / exec
    windows下创建进程用:CreateProcess
  1. 进程的撤销
    即结束进程。
  • 收回进程所占有的资源(关闭打开的文件、断开网络连接、回收分配的内存...)
  • 撤销该进程的PCB
    unix下撤销用:exit
    windows: TerminateProcess
  1. 进程阻塞
    处于运行状态的进程,在其运行过程中期待某一事件发生,如等待键盘输入、等待磁盘数据传输完成、等待其它进程发送消息,当被等待的事件未发生时,由进程自己执行阻塞原语,使自己由运行态变为阻塞态。
    unix:wait
    windows:WaitForSingleObject
fork()过程

进程的分类

  1. 系统进程 & 用户进程
  2. 前台进程 & 后台进程
  3. CPU密集型进程 & I/O密集型进程

线程模型

  1. 为什么在进程中再派生线程
  • 应用的需要


  • 开销的考虑
    进程相关操作有:创建进程、撤销进程、进程通信、进程切换。
    时间/控件开销大,限制了并发度的提高
    线程的开销小(创建一个新线程花费时间少,两个线程切换花费的时间少,线程之间相互通信无须通过内核,同一进程内的线程共享内存和文件)
  • 性能的考虑

可再入程序(可重入):
可被多个进程同时调用的程序,具有下列性质:它是纯代码的,即在执行过程中自身不改变;调用它的进程应该提供数据区。