深入理解操作系统[3]:进程的控制

版权声明:xueliangwang https://blog.csdn.net/ShyLoneGirl/article/details/84032079

1. 进程的执行模式

  1. 用户模式:非特权模式。
  2. 内核模式:又叫系统模式,控制模式或内核模式。在内核模式下的软件会完全控制处理器和所有指令,寄存器和内存。

模式切换
  当用户调用一个操作系统的服务或者中断触发系统例程的执行时,执行模式会由用户模式转换为内核模式
  当从系统服务返回用户进程时,执行模式又置回用户模式

2. 进程创建

引发原因

  --系统内核创建:1用户登录;2作业调度;3提供服务;
  --由应用创建:4应用请求(进程派生)。

创建过程

  --1. 申请空白PCB;
  --2.为新进程分配资源;
  --3. 初始化进程控制块(初始化标识信息,处理器状态信息,处理器控制信息);
  --4. 将新进程插入就绪队列。

3. 进程终止

引发事件

  --1. 正常结束
  --2. 异常结束:越界错误,保护错,非法指令,特权指令错,运行超时错,等待超时,算术运算错,I/O故障。
  --3. 外界干预
     --操作员或OS干预(比如发生了思索,需要操作员或OS终止该进程);
     --被父进程终止;
     --父进程终止。

终止过程

  --1. 从PCB集合种检索出该进程的PCB,从种读取进程状态;
  --2. 若处于执行状态,终止该进程的执行,并置调度标志为真重新调度;
  --3. 若有子孙进程,将所有子孙进程终止;
  --4. 将全部资源归还给父进程或系统;
  --5. 将其从PCB所在队列(或链表)中移除。

4. 阻塞/唤醒

引发事件

  1. 请求系统服务;
  2. 启动某种操作;
  3. 新数据为到达;
  4. 无新工作可做。

阻塞过程(Block)

  --1. 保存当前进程的CPU现场;
  2. 置该进程状态(执行到阻塞);
  3. 进入阻塞队列(根据不同的阻塞原因进入不同队列);
  4. 转进程调度程序进行重新调度,把处理器分配给别人。
    (阻塞是进程自身的一种主动行为)

唤醒过程(Wakeup)

  1. 把被阻塞的进程从阻塞队列中移出;
  2. PCB状态改阻塞为就绪;
  3. 将PCB插入就绪队列。
  (如果在某进程中调用了阻塞原语,则必须在与之相合作的另一进程中或其他相关的进程中安排唤醒原语,以能唤醒阻塞进程)


5. 挂起/激活

挂起过程(Suspend)

检查被挂起进程状态:
  --活动就绪 -> 静止就绪
  --活动阻塞 -> 静止阻塞
  –执行状态 -> 转向调度程序重新调度/并且进入静止就绪

激活过程(Active)

  --静止就绪 -> 活动就绪
  --静止阻塞 -> 活动阻塞

6. 进程的切换

引发事件
  1. 中断:与当前正在运行进程无关的外部事件相关,比如完成了一次I/O操作。
    --控制权转让给中断处理程序;
    --中断处理程序完成辅助工作;
    --控制权再转交给已发生中断的例程。
   中断常有时钟中断I/O中断内存失效中断(需要调页/段)

  2. 陷阱:与当前运行的进程产生的错误或异常条件有关,如非法的文件操作。
    --当错误致命时,进程置退出,并切换进程;
    --不致命时,尝试恢复,或通知用户。

  3. 系统调用

进程切换的步骤
  1. 保存处理器上下文;
  2. 更新当前进程的PCB;
  3. 将PCB移到相应队列;
  4. 选择另一进程;
  5. 更新所选进程的PCB;
  6. 更新内存管理数据结构;
  7. 更新上下文信息为当前进程的上下文信息。

.
.
.
.
.
.


桃花仙人种桃树,又摘桃花换酒钱_

猜你喜欢

转载自blog.csdn.net/ShyLoneGirl/article/details/84032079