本文已参与「新人创作礼」活动,一起开启掘金创作之路。
第二章 进程的描述与控制
现代OS中进程和线程的概念
进程:是资源分配的和独立运行的基本单位。 线程:是系统调度的基本单位。
前驱图和程序执行
- 前驱图 有向无循环图(DAG )。描述一个程序的各部分(程序段或语句)间的依赖关系,或者是一个大的计算的各个子任务间的因果(前后) 关系。前趋图中的每个结点可以表示一条语句、一个程序段或一个进程,结点间的有向边表示两个结点之间存在的偏序关系或前趋关系“→ ”。没有前趋的结点称为初始结点,没有后继的结点称为终止结点。此外,每个结点还具有一个权值,用于表示该结点所含有的程序量或结点的执行时间。
- 程序顺序执行
- 顺序性
- 封闭性
- 可再现性
- 程序并发执行
- 异步性
- 失去封闭性
- 不可再现性
进程的描述
进程的定义
进程是程序在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位。 扩:进程实体:程序段+数据段+PCB
进程的特征
- 动态性
- 并发性
- 独立性
- 异步性
进程和程序的区别
程序是指令的有序集合,是静态的,其存在是无生命周期的,而进程由程序段、数据段、PCB组成,是动态的,有生命周期的。
进程的状态模型
- 二状态模型 Running Not-Running
- 三状态模型 Running Ready Block
- 五状态模型 Running Ready Block New Exit
- 七状态模型 Running Ready Block Ready,Suspend Block,Suspend New Exit
挂起需要用到Swapping技术;
如何区分阻塞Or挂起?
- 进程是否等待事件,阻塞与否
- 进程是否被换出内存,挂起与否
进程控制块PCB
- 定义: 是操作系统为了管理和控制进程的运行,而为每一个进程定义的一个数据结构,它记录了系统管理进程所需的全部信息。
- 位置: 常驻内存,存放在操作系统中专门开辟的PCB区内。
- 作用: a. 作为独立运行基本单位的标志,进程存在的唯一标志,系统根据PCB而感知相关进程的存在。 b. 能实现间断性运行方式。保护现场 c. 提供进程管理所需要的信息 d. 提供进程调度所需要的信息 e. 实现与其他进程的同步和通信
- 内容: a. 进程标识符 b. 处理机状态 c. 进程调度信息 d. 进程控制信息
进程控制
操作系统内核的功能
- 支撑功能
- 中断处理
- 时钟管理
- 原语1操作
- 资源管理功能
- 进程管理
- 存储器管理
- 设备管理
进程的层次结构
- 子进程可继承父进程的所有资源
- 子进程撤销时要把资源归还给父进程
- 父进程撤销时也必须撤销所有子进程
引起进程创建的事件
用户登录、作业调度、提供服务、应用请求
进程创建流程
- 为进程分配一个唯一标识号
- 为进程分配空间
- 初始化PCB
- 建立链接
- 建立或扩展其他数据结构
引起进程结束的事件
正常、异常、外界干预
进程的终止过程
- 根据PID找到PCB,读出该进程的状态
- 若该进程为执行状态,则终止其执行,调度新进程执行
- 若该进程有子孙进程,则立即终止其所有子孙进程
- 将该进程的全部资源,或归还其父进程,或归还系统
- 将被终止进程的PCB从所在队列中移出,等待其他程序来搜集信息
进程的阻塞与唤醒
阻塞是主动的,唤醒是被动的
进程的挂起与激活
挂起是由进程自己或其父进程调 Suspend 原语完成。激活是由父进程或用户进程请求激活指定进程,系统利用 Active 原语将指定进程激活。
线程相关
- 当引入线程后,线程是系统调度的基本单位,进程是资源分配的基本单位,而不再是一个可执行的实体。
- 进程与线程的存在方式
- 进程与线程的比较
进程同步
定义
是指对多个相关进程在执行次序上进行协调,他的目的是使系统中诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。
机制
硬件机制、信号量机制、管程机制
制约关系
- 直接制约关系(进程同步)
- 间接制约关系(进程互斥)
临界资源
临界资源是一次只允许一个进程使用的资源,需要进程采用互斥方式访问;访问临界资源的那一段代码叫做临界区(CS区)。
同步机制规则
- 空闲让进
- 忙则等待
- 有限等待
- 让权等待
硬件机制
- 关中断
- TS指令
- Swap指令 不符让权等待(造成了忙等)
信号量机制
操作:P、V操作 原语:wait、signal(必须成对存在) 类别:资源信号量、互斥信号量 资源信号量:申请/归还资源,可以初始化为一个正整数(>=0 表示可用资源数 <0表示被阻塞的进程数) 互斥信号量:申请/释放使用权,常初始化为1 注意事项:两个wait操作相邻的话,顺序很重要!同步wait必须在互斥wait前面!wait,signal成对出现,当为互斥操作时,处于同一进程,否则不在同一进程;使用PV不当,会产生死锁;
管程机制
定义:一个数据结构和在该数据结构上能被并发进程所执行的一组操作,这组操作能使进程同步和改变管程中的数据。 管程规定每次只准许一个进程执行,从而实现了进程互斥,保证了管程共享变量的数据完整性。
经典进程同步的同步问题
生产者消费者问题
资源信号量:full=0、empty=n(分别表示满缓冲区的数目、空缓冲区的数目)
互斥资源量:mutex=1
核心算法表示:
哲学家进餐问题
互斥资源量:五个
可能会出现死锁,改进如下:
读者写者问题
- 读者优先:
共享变量:readcount,当前读者个数,初值为0
互斥信号量:Rmutex=1(读互斥)、Wmutex=1(写互斥)
- 写者优先
共享变量:readcount,当前读者个数,初值为0
互斥信号量:Rmutex=1(读互斥)、Wmutex=1(写互斥)、S=1(读写互斥)
进程通信
- 共享存储器系统
- 消息传递系统
- 直接通信方式:消息缓冲通信
- 间接通信方式:信箱通信方式
- 管道通信(共享文件通信)
- 客户机-服务器系统
Footnotes
-
由若干条指令组成的,用于完成一定功能的一个过程。是一个不可分割的基本单位,执行过程中不许中断。 ↩