进程控制以及相关原语的使用(创建,终止,阻塞,唤醒,切换)

1.基本概念

1.进程控制

进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。

进程控制就是要实现进程状态转换。

2.实现进程控制(原语)
1.原语

原语是一种特殊的程序,它的执行具有原子性。也就是说,这段程序的运行必须一气呵成,不可中断。

如果不能“一气呵成”,就有可能导致操作系统中的某些关键数据结构信息不统一的情况,这会影响操作系统进行别的管理工作。
进程控制以及相关原语的使用(创建,终止,阻塞,唤醒,切换)_第1张图片

2.原语的原子性

原语的执行具有原子性,即执行过程只能一气呵成,期间不允许被中断。可以用“关中断指令”和“开中断指令”这两个特权指令实现原子性.

  1. 正常情况:CPU每执行完一条指令都会例行检查是否有中断信号需要处理,如果有,则暂停运行当前这段程序,转而执行相应的中断处理程序。
  2. CPU执行了关中断指令之后,就不再例行检查中断信号,直到执行开中断指令之后才会恢复检查。
  3. 这样,关中断、开中断之间的这些指令序列就是不可被中断的,这就实现了“原子性”.

2.进程控制相关的原语

1.进程的创建

操作系统创建一个进程时使用的原语

1.创建原语
  1. 申请空白PCB
  2. 为新进程分配所需资源
  3. 初始化PCB
  4. 将PCB插入就绪队列(创建态到就绪态)
2.引起进程创建的事件
  1. 用户登录:分时系统中,用户登录成功,系统会建立为其建立一个新的进程
  2. 作业调度:多道批处理系统中,有新的作业放入内存时,会为其建立一个新的进程
  3. 提供服务:用户向操作系统提出某些请求时,会新建一个进程处理该请求
  4. 应用请求:由用户进程主动请求创建一个子进程

2.进程的终止

要终止一个进程时使用,从就绪态,阻塞态或者运行态直接到终止态。

1.撤销原语
  1. 从PCB集合中找到终止进程的PCB
  2. 若进程正在运行,立即剥夺CPU,将CPU分配给其他进程
  3. 终止其所有子进程(进程间的关系是树形结构)
  4. 将该进程拥有的所有资源归还给父进程或操作系统
  5. 删除PCB
2.引起进程终止的事件
  1. 正常结束:进程自己请求终止(exit系统调用)
  2. 异常结束:整数除以0、非法使用特权指令,然后被操作系统强行杀掉
  3. 外界干预:Ctrl+Alt+delete,用户选择杀掉进程

3.进程的阻塞

运行态到阻塞态

1.阻塞原语
  1. 找到要阻塞的进程对应的PCB
  2. 保护进程运行现场,将PCB状态信息设置为“阻塞态",暂时停止进程运行
  3. 将PCB插入相应事件的等待队列
2.引起进程阻塞的事件
  1. 需要等待系统分配某种资源
  2. 需要等待相互合作的其他进程完成工作

4.进程的唤醒

阻塞态到就绪态

1.唤醒原语
  1. 在事件等待队列中找到PCB
  2. 将PCB从等待队列移除,设置进程为就绪态
  3. 将PCB插入就绪队列,等待被调度
2.引起进程唤醒的事件

等待的事件发生。(因何事阻塞,就应由何事唤醒)
因此阻塞原语唤醒原语必须成对使用

5.进程的切换

运行态到就绪态,就绪态到运行态。

1.切换原语
  1. 将运行环境信息存入PCB
  2. PCB移入相应队列
  3. 选择另一个进程执行,并更新其PCB
  4. 根据PCB恢复新进程所需的运行环境
2.切换进程的事件
  1. 当前进程时间片到
  2. 有更高优先级的进程到达
  3. 当前进程主动阻塞
  4. 当前进程终止

3.进程的运行环境

CPU中会设置很多“寄存器”,用来存放程序运行过程中所需的某些数据。

  • PSW:程序状态字寄存器
  • PC:程序计数器,存放下一条指令的地址
  • IR:指令寄存器,存放当前正在执行的指令
  • 通用寄存器:其他一些必要信息

进程控制以及相关原语的使用(创建,终止,阻塞,唤醒,切换)_第2张图片
当一个进程要下CPU时,在进程切换时先在PCB中保存这个进程的运行环境(保存一些必要的寄存器信息)
当原来的进程再次投入运行时,可以通过PCB恢复它的运行环境。

你可能感兴趣的:(操作系统,linux,服务器,centos)