2.2 进程控制
- 进程控制是进程管理中最基本的功能。
- 进程控制包括:
◆ 创建进程
◆ 终止进程
◆ 进程状态转换
- 进程控制是由OS的内核完成的。
2.2.1 进程的创建
2.进程的创建
调用进程创建原语Create(),按下述步骤创建一个进程
(1)申请空白PCB;
(2)为新进程分配资源。主要是内存空间。
(3)初始化PCB。包括:
(4)将新进程插入就绪队列
2.2.2 进程的终止
2.进程的终止过程
OS调用终止原语,按下述过程终止进程:
- 根据被终止进程的标识,从PCB集合中找除该进程的PCB,读出该进程状态。
- 若被终止进程正处于执行状态,应立即终止其执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度。若该进程还有子孙进程,应将其所有子孙进程终止,以防止它们成为不可控进程。
- 将被终止进程的所有资源,或者归还给其父进程,或者归还给系统。
- 将被终止进程(它的PCB)从所在队列中移出,等待其他进程来搜索信息。
2.2.3 进程的阻塞和唤醒
2.进程阻塞过程
调用阻塞原语block把自己阻塞。(主动行为)
阻塞(block)过程:
- 立即停止执行;
- 把PCB中进程状态由“执行”改为“阻塞”;
- 将PCB插入具有相同事件的阻塞队列;
- 转进程调度程序,将处理机分配给某个就绪进程,并进行进程切换——保留被阻塞进程的处理机状态(在PCB中),再按新进程的PCB中处理机状态设置CPU的环境。
- 3.进程唤醒过程
- 调用唤醒原语wakeup( ),将等待事件的进程唤醒。
- 唤醒原语执行过程:
- ▲将被唤醒进程的PCB从阻塞队列移出;
- ▲将其PCB中进程状态由“阻塞”改为“就绪”;
- ▲将改PCB插入到就绪队列中。
2.2.4 进程的挂起和激活
1.进程的挂起
当出现了引起进程挂起的事件时(用户进程请求将自己挂起,或父进程请求将子进程挂起),系统将用挂起原语suspend( )将指定进程或处于阻塞状态的进程挂起。
挂起原语的执行过程
2.进程的激活