主要内容
所谓进程控制,就是系统使用一些具有特定功能的程序段来创建、撤销进程以及完成进程各状态间的转换,从而达到多进程高效率并发执行和协调、实现资源共享的目的。
在操作系统中,这些用于进程控制的程序段被做成原语。原语又分为创建原语、撤销原语、阻塞原语、唤醒原语、挂起原语和激活原语等。
创建进程
创建进程有两种方式:由系统程序模块统一创建;由父进程创建(形成家族关系)。
无论是哪种创建方式,都必须调用创建原语来实现。创建原语扫描系统的PCB链表(存储各进程的PCB),在找到一定的PCB表后,填入调用者提供的各项参数,最后形成代表进程的PCB结构。参数包括进程名、进程优先级P0、进程正文段起始地址d0和资源清单R0等。
撤销进程
撤销进程的情况:
(1)进程已完成所要求的功能而正常终止;
(2)由于某种错误导致非正常终止;
(3)父进程(祖先进程)要求撤销某个子进程。
撤销原语首先检查进程链表或进程家族是否存在要撤销的进程,如果有,且该进程没有子进程,则释放该进程占有的所有资源,并释放PCB结构。
阻塞进程
阻塞原语实现进程从执行状态到阻塞状态的转换。首先保存当前进程的CPU现场,然后将PCB块中的进程状态设置为“阻塞状态”,再将被阻塞进程放入等待队列。旧进程(被阻塞进程)处置好后,就要转进程调度,选择新进程(就绪进程)投入运行。
唤醒进程
唤醒进程有两种方式:由系统进程唤醒;由事件发生进程唤醒。
唤醒原语实现进程从阻塞状态到就绪状态的转换。首先将被唤醒进程从相应的等待队列摘下,然后将PCB块中的进程状态设置为“就绪状态”,并送入就绪队列。
随后唤醒原语既可以返回原调用程序,也可以转进程调度。
挂起进程
挂起进程的情况:
1)终端用户的需要:在程序运行期间发现可疑问题后,及时暂停处理。
2)父进程请求:父进程挂起子进程,可以协调各子进程间的活动。
3)调节负荷:当实时系统中的负荷影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,保证系统的正常运行。
4)挂起某些进程,以便检查资源的使用情况。
挂起的作用:
1. 挂起就绪状态的进程后,进程变为静止就绪态,直至被激活原语作用才能变为活动就绪态;同理,挂起阻塞状态的进程后,进程变为静止阻塞态,直至被激活原语作用才能变为活动阻塞态。
2. 执行状态的进程被挂起后变为静止就绪态。
3. 活动阻塞态的进程被唤醒后,只能变为活动就绪态;静止阻塞态的进程被唤醒后,只能变为静止就绪态。