本文主要讲解进程的组成,PCB,及状态模型
本文安排结构如下:
- 进程的基本概念: 主要讲进程的是什么,特点,及与程序的区别
- 进程控制块(Process Control Block, PCB)
- 进程的状态模型
进程的基本概念
非正式的说法就是进程就是执行中的程序, 活动实体。
进程的组成
包含程序执行时的所有状态信息:
- code
- data
- 状态寄存器(e.g.: CR0,IP)
- 通用寄存器
- 进程占用的系统资源(e.g: 打开的文件…)
特点
- 动态性: 每一条指令执行之后,进程的状态信息都是会变化的
并发性: 各个进程可以在操作系统中切来切去,如下图
独立性
- 制约性,受到系统资源的制约
进程与程序的区别
- 进程是OS 中处于执行状态的程序的抽象,是活动的
- 程序=文件(静态的可执行文件)
- 进程= 执行中的程序= 程序 + 执行的状态信息
- 进程是动态的
- 程序是静态的
进程控制块(Process Control Block, PCB)
PCB 就是保存程序执行状态信息的实体,是一个数据结构。包括:
- 进程的标识信息
- 处理机现场 : 进程切换需要保存
- 进程控制信息
进程的控制信息
PCB 的组织形式
就是将同一状态的进程组织成一个队列,不同状态的进程形成多个队列,当然这个“队列”可以用 链表或者索引表实现
接下来,我们谈谈进程的状态模型
进程的状态模型
我们这里主要讲解3状态模型和挂起状态模型
三状态模型
图中有5个状态,但主要持续的状态是 就绪,等待,运行
进程刚开始启动,就处于创建态,启动完成进入就绪态,等待被处理机调度执行,被调度之后处于运行态,(remark: 运行态并不会有运行队列,单个处理器一个时刻仅能运行一个进程), 运行态结束就会退出,若运行态,需要请求外部资源,比如说,打开文件,等待网络数据到达,这样就会处于等待态,当然运行态如果被抢占或者时间片到期,就会被OS 暂时暂停,放到就绪队列,等待态等待事件到达,也会被唤醒,到达就绪队列
挂起状态模型
三状态模型主要是限制在CPU 的角度来说的,挂起模型引入了外存,就是上一讲说的,内存的管理,中提到可能会把一些进程占用的内存资源换出到外存,这就引入了挂起模型
- 等待挂起,和就绪挂起都是在外存中的,就是处于等待状态的进程被处理机调度到外存中执行
- 就绪挂起,在外存中,**进入内存就可进入就绪态
下一节讲线程的基本概念
这里还有一个小问题