一、进程的基本概念
1.1 进程的概念
- 程序:静态的,存放在磁盘里的可执行文件,是一系列的指令集合
- 进程Process:动态的,是程序的一次执行过程
1.2 进程的组成
- 数据结构PCB(process control block),即进程控制块
- PID(进程ID,process ID:os为进程分配的唯一的、不重复的号,是进程存在的唯一标志)
- UID(进程所属用户:基本进程描述信息,可以让os区分各个进程)
- 分配的资源(内存、I/O设备、使用那些文件等:用于实现os对资源的管理)
- 运行情况(CPU运行时间、磁盘使用情况、网络流量使用情况:用于实现os对系统进程的控制、调度)
- 一个进程实体(进程映像)由PCB、程序段、数据段组成,进程实体反应了进程在某一时刻的状态
- 进程是动态的,进程实体(进程映像)是静态的
- 进程是进程实体的运行过程,是系统进行资源分配和调度(os让进程在CPU上运行)的独立单位
1.3 进程的特征
- 动态性(最基本特性):进程是程序的一次执行过程,是动态地产生、变化和消亡的
- 并发性:内存中有多个进程实体,各进程可并发执行
- 独立性:进程是能独立运行、独立获得资源、独立接受调度的基本单位
- 异步性:各进程按各自独立的、不可预知的速度向前推进操作系统要提供“进程同步机制”来解决异步问题
- 结构性:每个进程都会配置一个PCB;结构上看,进程由程序段、数据段、PCB组成
1.4 进程的状态
- 三种基本状态:
- 运行态Runing:占有CPU,并在CPU上运行
- 就绪态Ready:已具备运行条件,但没有空闲CPU暂时不能运行
- 阻塞态/等待态Waiting/Blcoked:因等待某一事件而暂时不能运行
- 其他两种状态:
- 创建态/新建态New:进程正在被创建,os为进程分配资源、初始化PCB
- 终止态/结束态Terminated:进程正从系统中撤销,回收进程拥有的资源、撤销PCB
- 进程PCB中有变量state表示当前状态
1.5 进程的组织方式
- 链式方式:
- 按照进程状态将PCB分为多个队列:执行指针、就绪队列指针、阻塞队列指针(等待打印机的阻塞队列、等待磁盘的阻塞队列…)
- 操作系统持有指向各队列的指针
- 索引方式:
- 根据进程状态不同,建立几张索引表:执行指针、就绪表指针、阻塞表指针
- 操作系统持有指向各索引表的指针
二、进程的行为
进程控制会导致进程状态的转换,无论哪个进程控制原语,要做的无非三类事情:
- 更新PCB中的信息
- 所有的进程控制原语一定都会修改进程状态标志
- 剥夺当前运行进程的CPU使用权必然需要保存其运行环境
- 某进程开始运行前必然要恢复期运行环境
- 将PCB插入合适的队列
- 分配/回收咨源
2.1 进程控制的基本概念
- 进程控制的主要功能:对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程转换等功能
- 如何实现进程控制?原语
- 原语的执行具有原子性,即执行过程一气呵成、期间不允许被中断
- 通过“关中断指令”和“开中断指令”这两个特权指令实现其原子性
2.2 进程控制相关的原语
2.2.1 进程的创建
2.2.2 进程的终止
2.2.3 进程的阻塞与唤醒
2.2.4 进程的切换
2.3 进程通信IPC
- 进程间通信Inter-Process Communication,IPC:两个进程之间产生数据交互
- 进程通信需要操作系统支持:进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立
2.3.1 共享存储
- 基于数据结构的共享
- 基于存储区的共享
2.3.2 消息传递
- 直接通信方式
- 间接通信方式