三 进程控制
1. 两种执行模式
l 系统模式(系统态,控制模式,内核模式):
n 具有较高的特权。
n 运行系统特定的指令,包括读/写控制寄存器的指令,基本I/O指令以及与存储器管理有关的指令,及一些特定的内存区。
n 内核模式下的处理机及其指令、寄存器和内存收受到完全控制和保护
l 用户模式(或用户态):
n 具有较低的特权。
n 用户程序一般运行在用户模式。
2. 模式切换
l 用户模式 → 系统模式:用户程序执行到一条系统调用,进程操作系统内核执行。
l 系统模式 → 用户模式:执行完系统调用的功能,返回到用户程序。
l 特殊情况:程序执行到结束语句时,切换到系统模式,不再返回到用户程序。
3. 进程创建
3.1进程创建原因:(p84 表3.1)
l 提交新的批处理作业
l 交互登录:终端用户登录到系统
l 操作系统提供服务
l 父进程创建子进程
3.2 进程创建:步骤
1) 为进程分配一个唯一的进程标识号:主进程表中增加一个新项目。
2) 为进程分配空间:用户地址空间、用户栈空间、PCB空间。若共享已有空间,则应建立相应的链接。
3) 初始化PCB:进程标识、处理机状态信息、进程状态。
4) 建立链接:若调度队列是链表,则将新进程插入到就绪或就绪/挂起链表。
5) 建立或扩展其他数据结构
4 进程终止。
4.1 终止原因(p85)
4.2 步骤
1) 根据被终止进程的标识符ID,找到其PCB,读出该进程状态
2) 若该进程为执行状态,则终止其执行,调度新进程执行;
3) 若该进程有子孙进程,则立即终止其所有子孙进程;
4) 将该进程的全部资源,或归还给其父进程,或归还给系统
5) 将被终止进程(的PCB)从所在的队列中移出,等待其他进程来搜集信息。
5 进程阻塞与唤醒
l 阻塞原因:请求系统服务;启动某种操作,如I/O;新数据尚未到达,暂时无新工作可做等;
l 当出现阻塞事件,进程调用阻塞原语将自己阻塞。并将其状态变为“阻塞状态”,并进入相应事件的阻塞队列;
l 当阻塞进程期待的事情发生,有关进程调用唤醒原语,将等待该事件的进程唤醒。并将其状态变为“就绪状态”,插入就绪队列
l 一般,进程可以自己阻塞自己当唤醒则由操作系统或其他相关进程来完成,进程无法自己唤醒自己。
6 进程挂起与激活
l 当出现挂起事件,系统里利用挂起原语将指定进程或一个阻塞进程挂起。
l 当激活事件发生,系统利用激活原语将指定进程激活。
7. 进程切换(从正在运行的进程中收回处理器,然后再使待运行进程来占用处理器)
7.1 切换原因
l 时钟中断
n 进程执行完一个时间片
l I/O中断
l 内存访问出错
l 陷阱
n 执行遇到错误
7.2 进程切换vs模式切换
l 进程切换:作用于进程之间的一种操作。当分派程序收回当前进程的cpu并准备把它分派给某个就绪进程时,该操作将被引用。
l 模式切换,进程内部所引用的一种操作。当用户程序转入系统调用,或相反时,该操作将被引用。
l 进程切换一定引发模式切换(比如从用户进程切换到下一个进程或系统进程,要切换一定要执行调度程序,调度程序需要内核处理)。反之则不然。