写在前面:
- 本系列笔记主要以《计算机操作系统(汤小丹…)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
- 视频链接:操作系统(汤小丹等第四版)_哔哩哔哩_bilibili
一、前趋图
前趋图是指一个有向无循环图,可记为DAG(DirectedAcyclic Graph),它用于描述进程之间执行的先后顺序,图中的每个结点可用来表示一个进程或程序段,乃至一条语句,结点间的有向边则表示两个结点之间存在的偏序(Partial Order)或前趋关系(Precedence Relation)。
进程(或程序)之间的前趋关系可用“→”来表示,如果进程和
存在着前趋关系,可表示为
,也可写成
,表示在
开始执行之前
必须完成,此时称
是
的直接前趋,而称
是
的直接后继。
在前趋图中,把没有前趋的结点称为初始结点,把没有后继的结点称为终止结点。此外,每个结点还具有一个重量,用于表示该结点所含有的程序量或程序的执行时间。
应当注意,前趋图中是不允许有循环的,否则必然会产生不可能实现的前趋关系。
二、程序顺序执行
1、程序的顺序执行
一个应用程序由若干个程序段组成,每一个程序段完成特定的功能,它们在执行时,都需要按照某种先后次序顺序执行,仅当前一程序段执行完后,才运行后一程序段。
2、程序顺序执行时的特征
(1)顺序性:处理机的操作严格按照程序所规定的顺序执行,即每一操作必须在下一个操作开始之前结束。
(2)封闭性:程序在封闭的环境下运行,即程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它,程序一旦开始执行,其计算结果不受外界因素的影响。
(3)可再现性:只要程序执行时的环境和初始条件相同,当程序重复执行时,不论它是从头到尾不停顿地执行,还是“停停走走”地执行,都可获得相同的结果。
三、程序并发执行
1、程序的并发执行
程序顺序执行时,虽然可以给程序员带来方便,但系统资源的利用率却很低。为此,在系统中引入了多道程序技术,使程序或程序段间能并发执行,不过只有在不存在前趋关系的程序之间才有可能并发执行,否则无法并发执行。
2、程序并发执行时的特征
(1)间断性:在多道程序设计的环境下,程序的并发执行,以及为完成一项任务而相互合作,这些程序之间要共享系统的资源,形成了相互制约的关系,相互制约导致并发程序具有“执行—暂停—执行”这种间断性的活动规律。
(2)失去封闭性:程序在并发执行时,系统的资源状态由多道程序来改变,程序运行失去封闭性,程序的运行可能会受到其它程序的影响。
(3)不可再现性:程序在并发执行时,多次运行初始条件相同的同一程序可能会得出不同的运行结果。