DJ2-2 进程管理
创始人
2025-05-28 14:15:28

目录

2.3  进程控制

2.3.1  操作系统内核

2.3.2  进程的创建

2.3.3  进程的终止

2.3.4  进程的阻塞与唤醒

2.3.5  进程的挂起与激活


2.3  进程控制

进程控制是用于创建一个新进程,终止一个已完成的进程,或去终止一个因出现某事件而使其无法运行下去的进程,还负责进程运行中的状态转换。

进程控制一般是由 OS 的内核中的原语(Primitive)来实现的。

2.3.1  操作系统内核

OS 内核——常驻内存。

  • 与硬件紧密相关的模块(中断处理)
  • 常用设备驱动、运行频率高的模块(时钟管理、进程调度)

OS 内核包含两大功能:

  • 支撑功能
  • 资源管理功能

2.3.2  进程的创建

1. 进程的层次结构

  • 父进程
  • 子进程:可以继承父进程所拥有的资源

2. 进程图(process graph)

进程图是用于描述一个进程的家族关系的有向树。

  • 子进程可以继承父进程所拥有的资源。
  • 当子进程被撤消时,应将其从父进程那里获得的资源归还给父进程。
  • 在撤消父进程时,也必须同时撤消其所有的子进程。

3. 引起进程创建的事件

导致一个进程去创建另一个进程的典型事件,可有以下四类:

  • 用户登录(如:从终端登录到主机)
  • 作业调度(如:挑选作业来执行)
  • 提供服务(如:C/S、B/S)
  • 应用请求

4. 进程的创建过程

调用进程创建原语 Creat() 按下述步骤创建一个新进程:

1)申请空白 PCB  

2)为新进程分配资源(挂到 PCB 上)

3)初始化进程控制块 PCB,包括:

  • 初始化标识信息
  • 初始化处理机状态信息
  • 初始化处理机控制信息

4)将新进程插入就绪队列

2.3.3  进程的终止

1. 引起进程终止的事件

1)正常结束:批处理中用 Holt 指令,分时中用 Logs off 指令。

2)异常结束:

本进程运行中出现了异常事件。

  1. 越界错误。存储区
  2. 保护错。写一个只读文件(权限)
  3. 非法指令。执行一条不存在的指令(指令集)
  4. 特权指令错。用户访问只允许 OS 执行的指令
  5. 运行超时。(防止资源浪费或骗取权限)
  6. 等待超时。
  7. 算术运算错。被 0 除(除以 0)
  8. I/O 故障

OS 是无法预先判断一个作业需要运行多长时间的。

3)外界干预

并非指本进程运行中出现了异常事件,而是指进程为响应外界请求而终止运行。

  1. 操作员或操作系统干预
  2. 父进程请求终止该进程
  3. 当父进程终止时,OS 也将终止其所有子孙进程

2. 进程的终止过程

1)根据被终止进程的标识符 ID,从 PCB 集合中检索出该进程的 PCB,从中读出该进程的状态。

2)若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为 true,用于指示该进程被终止后应重新进行调度。

3)若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防它们成为不可控的进程。

级联地终止,防止孤儿进程的出现。

4)将被终止进程所拥有的全部资源,或者归还给其父进程,或者归还给系统。

5)将被终止进程(它的PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息。

2.3.4  进程的阻塞与唤醒

1. 引起进程阻塞的事件

1)请求系统服务:进程提出 I/O 服务请求且不能被立即满足时,转变为阻塞状态来等待。

2)启动某种操作:当进程启动某种操作后,在该操作完成之后才能继续执行

3)新数据尚未到达:对于相互合作的进程而言。

4)无新工作可做(如发送进程)

为了防止 CPU 空转,进程自己把自己阻塞,有新工作时再唤醒。

2. 进程的阻塞过程

1)正在执行的进程,当发现上述某事件时,由于无法继续执行,于是进程便通过调用阻塞原语 block( ) 把自己阻塞。

2)把进程控制块中的现行状态由执行改为阻塞,并将 PCB 插入阻塞队列。

3)转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换。

3. 进程的阻塞与唤醒

当被阻塞进程所期待的事件出现时,则由有关进程(如:用完并释放了该 I/O 设备的进程)调用唤醒原语 wakeup(),将等待该事件的进程唤醒。

4. 进程的唤醒过程

1)首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其 PCB 中的现行状态由阻塞改为就绪。

2)然后再将该 PCB 插入到就绪队列中。

2.3.5  进程的挂起与激活

1. 进程的挂起过程

当出现了引起进程挂起的事件时,系统将利用挂起原语 suspend() 将指定进程挂起。

suspend() 的执行过程是:

首先检查被挂起进程的现行状态

  • 若处于活动就绪状态,则将其改为静止就绪状态;
  • 若对于活动阻塞状态,则将之改为静止阻塞状态。

2. 进程的激活过程

当发生了激活进程的事件时,则可将在外存上处于静止就绪状态的进程换入内存,系统再利用激活原语 active() 将指定进程激活。

active() 的执行过程是:

首先将进程从外存调入内存,检查该进程的现行状态

  • 若处于静止就绪状态,则将其改为活动就绪状态;
  • 若对于静止阻塞状态,则将之改为活动阻塞状态。

相关内容

热门资讯

议论文写作六种结构模式 议论文写作六种结构模式  由议论文的三要素引入议论文段常用结构模式:观点+材料+评论+小结。下面是小...
像的比喻句 有关像的比喻句(精选125句)  一片片飘落的树叶,像一只只飞舞的蝴蝶,真美啊!以下是小编为大家整理...
制定新年计划英语作文(通用6... 制定新年计划英语作文 篇一My New Year's ResolutionAs the new ye...
朱自清《春》的创作背景 朱自清《春》的创作背景  《春》是现代散文家朱自清的作品。《春》是朱自清的散文名篇,最初发表于193...
近代文学家废名及其作品 近代文学家废名及其作品  废名,湖北黄梅人,原名冯文炳,中国现代作家、诗人、小说家,在文学史上被视为...