进程简介
进程和程序
程序是被动实体,进程是活动实体
进程的状态
-
进程有以下5个状态:
- 新的:进程正在被创建
- 运行:指令正在被执行
- 等待:进程等待某个事件的发生(如I/O完成或收到信号)
- 就绪:进程等待分配处理器
- 终止:进程完成执行
-
5个状态之间的转换关系如下图:
进程控制块
- 进程控制块:每个进程在操作系统内用进程控制块(PCB)来表示。下图给出了一个PCB的例子,它包含了许多与一个特定进程相关的信息。
- 当CPU在进程之间进行切换时,需要保存进程上下文,如图3所示:
调度队列
- 就绪队列:驻留在内存中就绪的,等待运行的进程保存在就绪队列中。
- 设备队列:等待特定I/O设备的进程列表称为设备队列。
调度程序
调度程序:进程在其生命周期中会在各种调度队列之间迁移,为了调度,操作系统必须按某种方式从这些队列中选择进程。
- 长期调度程序或作业调度程序:从磁盘上的缓冲池中选择进程并装入内存已备执行;
- 短期调度程序或CPU调度程序:从准备执行的进程中选择进程并为之分配CPU;
- 有的操作系统如分时系统可能引入另外的中期调度程序,其核心思想是能将进程从内存中移除,从而降低多道程序(多道程序系统在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插运行,以使系统中的各种资源尽可能地满负荷工作,从而提高整个计算机系统的使用效率)设计的程度。
进程终止
进程终止的2种情况:
- 当进程执行完最后的语句并使用系统调用exit()请求操作系统删除自身时,进程终止。这时进程可以返回状态值到父进程,所有进程资源(包括物理内存,打开文件和I/O缓冲)会被操作系统释放。
- 父进程通过调用适当的系统调用终止子进程。父进程终止其子进程的原因可能有:
- 子进程使用了超过它所分配到的一些资源
- 分配给子进程的任务已不再需要
- 父进程退出,如果父进程终止,那么操作系统不允许子进程继续。级联终止。
进程间通信(IPC)
进程间通信常见的有两种方式:
- 共享内存:允许以最快的速度进行方便的通信
- 消息传递:通常用系统调用实现,因此需要更多的内核介入的时间消耗。在共享内存系统中,仅在建立共享内存区域时需要系统调用,一旦建立了共享内存,所有的访问都被处理为常规的内存访问,如图4所示。