目录
一、前驱图和程序执行
1.程序的顺序执行及其特征
(1)程序的顺序执行
一个程序由若干个程序段组成,而这些程序段的执行必须是顺序的,这种程序执行的方式称为程序的顺序执行
例:在进行计算时,首先输入用户的程序和数据Input,然后进行计算Caculate,最后打印计算结果Print
(2)程序顺序执行时的特征
① 顺序性
处理的操作严格按照程序所规定的顺序执行
②封闭性
程序一旦开始执行,其计算结果不受外界因素的影响【程序运行时独占全机资源,资源的状态只有本程序才能改变,比如程序要执行打印操作,申请打印机,将打印机状态由空闲变为忙碌;同样变、量-a这个资sdwqa qwedfghjkli、
只要程序执行时的环境和初始条件相同,当程序重复执行时,都可获得相同的结果【比如1+1无论是今天做还是明天做结果都为1】
顺序执行的效率太慢了,必须按照指令的顺序一条一条地运行,执行每一条指令的过程中对资源的利用率并不是很好,可能在执行这条指令的过程中其他资源是空闲的,这些资源又不能为下一条指令服务,必然出现资源的浪费,计算机单位时间内处理的指令数目或任务数目没有那么多,吞吐量不高
2.前驱图
前驱图是一个有向无环图,用于描述进程之间执行的前后关系
结点:表示一个程序段或进程,或一条语句
有向边:结点之间的偏序或前驱关系
描述下图
重量:结点重量指的是结点的程序段执行所要花费的时间,这个程序段所包含的指令越多,它执行的时间越长
3.程序的并发执行及其特征
(1)程序的并发执行
例:在系统中有n个作业,每个作业都有3个处理步骤:输入数据、处理、输出结果,即、、(i=1,2,3……,n)
、、的执行必须严格按照顺序执行,而因为输入使用键盘、计算使用cpu、输出使用打印机,使用不同的资源,所以可以在同一时间间隔内执行不同作业的不同步骤,与,与、是可以同时执行的
又如:4个程序段
S3 必须在 a 和 b 被赋值后方能执行; S4 必须在 S3 之后执行;但 S1 和 S2 则可以并发执行,因为它们彼此互不依赖。
(2)程序并发执行的特征
这是书上一个错误,并发执行的应该是进程,因为程序装入内存,创建进程,进程执行
①间断性
在多道程序设计的环境下,程序的并发执行,以及为完成一项任务而相互合作,这些程序之间要共享系统的资源,形成了相互制约的关系
导致并发程序具有“执行-暂停-执行”这种间断性的活动规律
② 失去封闭性
程序在并发执行时,系统的资源状态由多道程序来改变,程序运行失去封闭性,程序的运行受到其他程序的影响
例:打印机资源的状态可以由多道程序改变
③不可再现性
程序在并发执行时,多次运行初始条件相同的同一程序会得出不同的运行结果。
例:共享公共变量的两个程序,它们执行时可能产生不同结果
如果先执行程序B在执行程序A ,则打印0;如果先执行程序A在执行程序B ,则打1,产生不同的结果
可以用进程来解决程序并发执行时依然具有可再现性
4.进程
(1)定义
进程是程序关于某个数据集合的一次执行过程
行为的一个规则叫做程序,程序在处理机上执行时所发生的活动称为进程
进程(有时称为任务)是一个程序与其数据一道通过处理机的执行所发生的活动
进程是执行中的程序
(2)特征(与程序比较)
①结构特征
进程控制块(PCB)+程序+数据=进程实体
PCB是控制和管理进程所需资源和信息的数据结构【查询pcb知道进程需要哪些资源】,唯一标识进程,随着进程的创建而产生,调度而执行,撤销而灭亡
播放音乐时程序就是暴风软件,数据就是音乐文件
②动态性——最基本特征
进程:进程实体的一次执行过程,有生命周期【厨师炒菜】
程序:程序是一组有序指令的集合,是静态的概念【菜单】
③并发性
程序只能顺序执行
④独立性
独立运行、独立分配资源、独立接受调度
⑤异步性
进程按各自独立的、不可预知的速度向前推进
(3)进程的三种基本状态
①就绪状态
进程已获得除CPU之外所有必需资源,一旦得到CPU控制权立即可以运行
②运行状态
进程已获得运行所必需的资源,它正在处理机上执行
③阻塞状态
正在执行的进程由于发生某事件(如申请打印操作)而暂时无法执行时,便放弃处理机而处于暂停状态,称该进程处于阻塞状态或等待状态
【题目】
1.下列选项中,会导致进程从执行态变为就绪态的事件是 ( )
2.AB
(4)挂起状态
挂起就是把进程从内存放到外存的操作,为了释放更多的内存空间,让更多的进程得以创建得以执行
①引起挂起状态的原因
- 终端用户的请求:程序员编号一段程序,想要修改这个程序,这个程序暂时不需要执行
- 父进程请求:父进程将子进程挂起
- 负荷调节的需要:计算机负载重,将不重要资源挂起
- 操作系统的需要:操作系统需要执行一个挂起操作
②进程的状态转换
引入挂起状态后,增加了挂起状态(静止状态)到非挂起状态(活动状态的转换),或者相反
二、进程的描述
1.进程控制块PCB
(1)进程控制块的作用
存放进程管理和控制信息的数据结构称为进程控制块。它是进程管理和控制的最重要的数据机构,在创建时,建立PCB,并伴随进程运行的全过程,直到进程撤销而撤销
- PCB就像我们的户口
- PCB是进程存在的唯一标志
系统的所有PCB组织成链表或队列,常驻内存的PCB区
创建一个进程实质上是创建进程实体当中的PCB,撤销进程实际上是撤销进程实体中的PCB;要到内存PCB区找到这个进程的PCB,才能去执行这个进程
(2)PCB中的信息
①进程标识符
一个进程通常有两种标识符:外部标识(为了方便用户(进程)对进程的访问,如consumer)、内部标识(为了系统对进程的访问,一串数字)
②处理机状态
主要由处理机的各种寄存器中的内容组成。处理机运行时的信息存放在寄存器中,当被中断时这些信息要存放在PCB中
例如:有一个计算1到100之和的程序,执行该程序对应进程时,时间片到了,需要保存当前计算到的位置并把中间结果保存下来
③进程调度信息
- 进程状态(获取进程状态,方知进程接下来要处于什么状态)
- 进程优先级(进程调度依据)
- 进程调度所需的其他信息(如进程执行需要100ms,已经执行了50ms,提供该信息)
- 事件(什么原因而阻塞)
④进程控制信息
- 程序和数据的地址(进程执行所需数据的位置)
- 进程通信和同步机制(用消息队列实现进程的通信,使用信号量实现同步机制)
- 资源清单(进程执行需要哪些资源)
- 链接指针(进程并发执行,执行完这个进程要告知下一个要执行进程的pcb首地址)
(3)PCB组织方式
内存里有数百个、数千个进行,相应也有数百个、数千个pcb,为了对他们加以有效管理,用相应的方式将这些PCB组织起来
①链接方式
把具有同一状态的PCB用其中的链接字链接成一个队列
- 就绪队列【按照优先级高低将就绪状态进程的pcb从高到低进行排列】
- 若干个阻塞队列【根据阻塞原因分成若干个队列】
②索引方式
系统根据所有进程的状态建立几张索引表,把各表的内存首地址记录在内存的专用单元中
索引表的表目中记录了相应状态的某个PCB在PCB表中的地址
三、进程控制
进程控制是对系统中全部进程实施有效的管理,包括进程创建、终止、进程阻塞和唤醒
1.进程的创建
(1)进程图
描述进程的家族关系的有向树
撤销进程时,要检查该进程是否有子进程,撤销所有子进程,并回收他们所拥有的所有资源
(2)进程的创建
操作系统发现要求创建新进程的事件后,调用进程创建原语Creat()创建新进程
原语是由若干条指令组成,能够完成一定功能的程序段
事件有以下4类——
用户登录:如分时系统有很多终端用户,每个用户都想登录到系统中,当一个用户一旦登录了,他就要创建一个进程,这个进程为这个用户提供服务
作业调度:从外存后备队列中选中若干个作业,创建到内存的过程就是创建进程及为他们分配内存资源的过程
提供服务:想要打印就要创建一个打印进程,通过os调度这个进程,然后分配打印机资源来完成打印任务
应用请求
进程的创建过程:
申请空白PCB——>为新进程分配资源——>初始化进程控制块【填写PCB数据内容的过程,如记录当前处理器的状态、这个进程所拥有的资源、进程的优先级】——>将新进程插入就绪队列
2.进程的终止
引起进程终止的事件
- 正常结束
- 异常结束:越界错误、非法指令
- 外界干预:操作员或操作系统干预;父进程请求;父进程终止
进程的终止过程:
找出被终止进程的PCB——>若进程状态为运行态,置CPU调度标志为真——>若其有子孙进程,终止其子孙进程并回收其他资源——>回收终止进程的资源——>回收终止进程的PCB
3.进程的阻塞与唤醒
(1)阻塞
引起进程阻塞的事件
- 请求系统服务(打印机服务)
- 启动某种操作(I/O操作)
- 新数据尚未到达
- 无新工作可做
进程阻塞过程:
调用阻塞原语阻塞自己——>将PCB中的状态改为阻塞,并加入阻塞队列——>转进程调度
(2)唤醒
阻塞进程等待的事件发生,有关进程调用唤醒原语wakeup()唤醒等待该事件的进程
把阻塞进程从等待该事件的阻塞队列中移出——>置进程状态为就绪态,将PCB插入到就绪队列中
阻塞原语与唤醒原语作用相反,成对使用
4.进程的挂起与激活
(1)挂起
当出现引起进程挂起的事件时,系统利用挂起原语suspend()将指定进程或处于阻塞的进程挂起
进程的挂起过程——
检查被挂起进程的状态:
- 若处于活动就绪,则改为静止就绪
- 若处于活动阻塞,则改为静止阻塞
- 若挂起的进程正在执行,则重新进行进程调度
(2)激活
当发生激活进程的事件时,系统利用激活原语active()将指定进程激活
进程的激活过程——
Ⅰ激活原语先将进程从外存调入内存
Ⅱ检查该进程的状态:
- 若为静止就绪,则改为活动就绪
- 若为静止阻塞,则改为活动阻塞