进程有3中状态:
就绪、运行、等待
对于操作系统来讲,要处理一个进程,并让其在3中状态下变换,是需要有相应的管理控制的,这就是所谓的进程控制。
操作系统中有一个叫做内核的概念,如果使用过linux的朋友都应该很清楚这个内容,内核的主要功能是负责与硬件的直接交互,是操作系统控制和管理硬件的接口,几乎所有的程序都要通过调用内核的程序来实现其逻辑功能。
操作内核的语言叫做原语,原语是执行过程中不可中断的、实现某种独立功能、可被其他程序调用的程序。OS中内核部分的程序都是以原语的形式存在的。
进程也是操作系统中的一个概念,进程之间的状态转换是要通过内核处理的,这就有了进程控制原语。
进程控制原语主要进行5种控制:
1 进程等待
实现进程从无到有的过程。
进程建立必须是由一个父进程建立的,而不是自生自灭的,因此,存在进程树的概念。
进程建立以后,不是立即运行,而是进入就绪队列,被建立的进程必须依靠进程调度来实现运行。
2 进程调度
从就绪队列中选取一个进程,分配其CPU时间片,修改PCB状态为运行态,实现其运行。
3 进程等待
即运行条件不满足,进程等待原语被激活,当前进程的PCB的状态修改为等待态,并将此进程放置到等待队列中。
4 进程唤醒
当等待队列中的某个进程的运行条件满足时,该进程的状态则由等待态修改为就绪态,这是通过调用进程唤醒原语实现的。
5 进程撤销
当进程已经实现其功能,就不需要该进程了,必须撤销,撤销分为2部分,一个是此进程创建的所有子进程必须撤销,另一个是进程本身必须向父进程发送撤销信息,用于撤销自身。举个例子:我们常使用的QQ,在退出时,会先关闭所有的聊天窗口,这些聊天窗口可以理解为QQ的主进程创建的子进程,当所有的子窗口关闭完成后,QQ本身也会被操作系统核心进程撤销。