目录
2.3 进程及其实现
- 进程定义和属性
- 进程状态和转换
- 进程描述和组成
- 进程上下文切换与处理器状态转换
- 进程控制和管理
2.4 线程及其实现
- 引入多线程的动机
- 多线程环境中的进程与线程
- 线程的实现
进程及其实现
2.3.1 进程的定义和性质
- 进程定义:
既能用来共享资源,又能描述程序并发执行过程的系统的基本单位。 - 进程的属性
- 动态性
- 共享性
- 独立性
- 制约性
- 并发性
2.3.2 进程状态和转换
进程三态模型及其状态转换
image.png
image.png
进程的挂起:
-
为了让某些进程暂时不参与低级调度,释放它占有的资源,以平滑系统负荷的目的
image.png
挂起进程具有如下特征:
- 该进程不能立即被执行。
- 挂起进程可能会等待事件,但所等待的事件是独立于挂起条件的,事件结束并不能导致进程具备执行条件。
- 进程进入挂起状态是由于操作系统,父进程或进程本身阻止它的运行。
- 结束进程挂起状态的命令只能通过操作系统或父进程发出。
2.3.3 进程描述和组成
OS中把进程物理实体和支持进程运行的环境合称为进程上下文。
当系统调度新进程占有处理器时,新老进程随之发生上下文切换。进程的运行被认为是在上下文中执行。
进程上下文组成:
- 用户级上下文
- 系统级上下文
- 寄存器上下文
进程控制块:
进程控制块PCB是OS用于记录和刻画进程状态及有关信息的数据结构,也是OS掌握进程的唯一资料结构,它包括进程执行时的情况,以及进程让出处理器后所处的状态,断点等信息。
进程控制块包含三类信息:
- 标识信息
- 现场信息
- 控制信息
进程队列及其管理
处于同一状态的所有PCB链接在一起的数据结构称为进程队列。
同一状态进程的PCB既可以按先来先到的原则排成队列,也可以按优先数或其他原则排队。
通用队列组织方式:
- 线性方式
- 链接方式
-
索引方式
image.png
2.3.4 进程上下文切换与处理器状态转换
进程切换是让处于运行态的进程中断运行,让出处理器,这时要做一次进程上下文切换,即保存老进程的上下文而装入被保护了的新进程的上下文,以便新进程运行。
进程上下文切换步骤
- 保存被中断进程的处理器现场信息
- 修改被中断进程的进程控制块有关信息,如进程状态等
- 把被中断进程的PSW加入有关队列
- 选择下一个占有处理器运行的进程
- 修改被选中进程的PSW的有关信息
- 根据被选中进程设置操作系统用到的地址转换和存储保护信息
- 根据被选中进程恢复处理器现场
进程调度和切换时机问题
请求调度的事件发生后,就会运行低级调度程序,低级调度程序选中新的就绪进程后,就会进行上下文切换。实际上,由于种种原因,调度和切换并不一定能一气呵成。
处理器状态转换
当中断/系统 调用发生时,暂时中断正在执行的用户进程,把进程从用户状态转换到内核状态,去执行操作系统服务程序以获得服务,这就是一次处理器状态转换;
内核在被中断了的进程的上下文中对这个中断事件作处理,即使该中断可能不是此进程引起的。
处理器状态转换步骤
- 保存被中断进程的处理器现场信息;
- 处理器从用户态转换到核心态,以便执行服务程序或中断处理程序;
- 如果处理中断,可根据规定的中断级设置中断屏蔽位;
- 根据系统调用号或中断号,从系统调用表或中断入口表找到服务程序或中断处理程序地址。
CPU上执行的进程所处活动范围
- 用户空间中,处于进程上下文,用户进程在运行,使用用户栈。
- 内核空间中,处于进程上下文,内核代表某进程在运行,使用核心栈。
- 内核空间中,处于中断上下文,与任何进程无关,中断服务程序正在处理特定中断,Intel x86未提供中断栈,借用核心栈。
-
内核空间中,内核线程(无用户地址空间的进程)运行于内核态。
image.png
2.3.5 进程控制和管理
处理器管理的一个主要工作是对进程的控制,包括:创建进程、阻塞进程、唤醒进程、挂起进程、激活进程、终止进程和撤销进程等。这些控制和管理功能由操作系统中的原语实现。
原语是在管态下执行、完成系统特定功能的过程。
原语和机器指令类似,其特点是执行过程中不允许被中断,是一个不可分割的基本单位,原语的执行是顺序的而不可能是并发的。
进程的控制和管理
-
进程创建
- 在进程列表中增加一项,从PCB池中申请一个空闲PCB,为新进程分配惟一的进程标识符;
- 为新进程的进程映像分配地址空间,以便容纳进程实体。进程管理程序确定加载到进程地址空间中的程序;
- 为新进程分配除主存空间外的其他各种所需资源;
- 初始化PCB,如进程标识符、处理器初始状态、进程优先级等;
- 把新进程状态置为就绪态,并移入就绪进程队列;
- 通知操作系统的某些模块,如记账程序、性能监控程序。
-
进程撤销
- 根据撤销进程标识号,从相应队列中找到并移出它;
- 将该进程拥有的资源归还给父进程或操作系统;
- 若该进程拥有子进程,先撤销它的所有子进程,以防它们脱离控制;
- 回收PCB,并归还到PCB池。
-
进程阻塞
- 停止进程执行,保存现场信息到PCB;
- 修改进程PCB有关内容,如进程状态由运行态改为等待态等,并把修改状态后的进程移入相应事件的等待队列中;
- 转入进程调度程序去调度其他进程运行。
-
进程唤醒
- 从相应的等待队列中移出进程;
- 修改进程PCB的有关信息,如进程状态改为就绪态,并移入就绪队列;
- 若被唤醒进程比当前运行进程优先级高,重新设置调度标志。
-
进程挂起
-
进程激活
2.4 线程及其实现
2.4.1 引入多线程的动机
为了减少程序并发执行时所付出的时空开销,使得并发粒度更细,并发性更好。
2.4.2 多线程环境中的进程和线程
image.png多线程环境中的线程概念
线程是OS进程中能够独立执行的实体(控制流),是处理器调度和分派的基本单位。线程是进程的组成部分,每个进程内允许包含多个并发执行的实体(控制流),这就是多线程。
线程的组成
(1)线程唯一标识符及线程状态信息(运行态、就绪态、阻塞态和终止态);
(2)线程是一条执行路径,有独立的程序计数器;未运行时保护线程上下文。
(3)线程有执行栈和存放局部变量的私用存储空间。
(4 )可访问所属进程的内存和资源,并与该进程中的其他线程共享这些资源。
线程的状态
运行、就绪、等待和终止。
2.4.3 线程的实现
线程调度
(1)当若干进程都有多个线程时,就存在两个层次的并行:进程和线程。操作系统调度程序需要根据是用户级线程还是内核级线程来决定对进程和线程的调度方法。
(2)用户级线程的调度:
(3)内核级线程的调度;
(4)用户级线程和内核级线程调度之间的差别:
网友评论