第2章 处理器管理及并发进程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014-6-19
12
2.1.4 并发程序执行的条件
• 具有何种特性的两个程序并发执行呢?关于这个问题, Bernstein 作过研究,并于 1966 年提出了两个程序并发执行的条 件,故又称之为 Bernstein 条件,即并发进程如果是无关的,则 这些进程可以并发执行。并发进程的无关性是指它们分别在不 同的变量集合上运行。下面对Bernstein条件做简单介绍。 • 约 定 程 序 Pi 在 执 行 期 间 所 需 引 用 的 变 量 的 集 合 , 记 作 R(Pi)={a1,a2,a3,…,an},实际上,R(Pi)就是Pi的读集。 • 约 定 程 序 Pi 在 执 行 期 间 所 需 修 改 的 变 量 的 集 合 , 记 作 W(Pi)={b1,b2,b3,…,bm},实际上,W(Pi)就是Pi的写集。 • 有了以上的约定, Bernstein 条件就可以表述为:如果两个程序 P1和P2满足R(P1)∩W(P2)∪R(P2) ∩W(P1) ∪W(P1) ∩W(P2)={}, 它们就能够并发执行,否则不能并发执行,会发生与时间有关 的错误。
2014-6-19
8
• 从总体上看,采用多道程序设计技术可以增加单 位时间内执行的作业数,但是,对于某一个作业 而言,它的执行时间可能会延长。
• 【例2-1】在一个单处理器的系统中,假设有两道 作业,一道单纯计算11分钟,另一道先计算3分 钟,再打印6分钟。请问在单道程序设计系统中, 两道作业的执行总时间至少为多少分钟?而在多 道程序设计系统中,这一时间又至少为多少分钟?
2014-6-19
18
• 从进程的定义中,可以看出进程具有以下六个属性。 (1) 动态性:进程是程序的一次执行活动,执行轨迹是“走走停停, 停停走走”,并且进程具有创建、运行到终止的生命历程。因 此,动态性是进程的一个重要属性.而程序是静态的,没有生 命周期,程序作为一种系统资源(文件形式)可以长久存在。 程序和进程的本质区别就是:程序是静态的,进程是动态的。 (2) 结构性:进程不仅包括了运行于其上的程序,还包括了某个数 据集合。为了在操作系统内部实现进程,就需要一个数表结构, 即进程控制块来记录和描述进程的动态运行情况。因此,一个 进程都是有程序代码段、数据块和进程控制块三部分组成。 (3) 独立性:在传统的操作系统中,进程既是资源的分配和保护的 基本单位,也是处理器调度的基本单位。在具有并发活动的系 统中,没有建立进程的程序,是不能够作为独立单位进行运行 的。在现代操作系统中,具有多进程多线程能力,进程仍然作 为资源的分配和保护的独立单位,而调度和执行的基本单位改 为由线程来完成。
2014-6-19
14
• 值得注意的是,Bernstein条件是一个理论上保证 程序能够并发执行的充分条件。在操作系统中, 由于进程间共享某些资源而不满足Bernstein条件 的情况十分普遍,从理论上讲,它们是不能够并 发执行的,否则会发生与时间有关的错误。但是, 只要采取适当的措施,这些进程就可以正确、安 全地并发执行,这可以通过信号量和PV操作或者 管程机制等来予以解决。这些是涉及到进程互斥 和同步部分的内容,本章后面会详细介绍。
2014-6-19
17
• 进程不是程序,而是程序的一次执行活动, 和传统的程序概念有着本质的区别。在日 常生活中,很容易找到类似于“程序”和 “进程”的例子,例如厨师炒菜,菜谱相 当于程序,一次炒菜过程就是一个“进 程”;再如乐谱和演奏,乐谱相当于程序, 而一次演奏就相当于一个进程;此外,火 车时刻表以及列车的运行,课程表和上课, 都有类似关系。
第2章 处理器管理及并发进程
2014-6-19
1
本章学习任务
进程与线程 进程调度 进程互斥与同步 管程 进程通信 死锁
2
2014-6-19
2.1.1 程序的顺序执行
•Байду номын сангаас示意图
I1 P1 O1 I2 P2 O2 I3 P3 O3
• 特点
简单、方便,容易理解; 确定性; 封闭性; 可再现性。
2014-6-19
I1 P1 O1
I2
P2
O2
I3
P3
O3
• 并发执行的特点 程序运行“走走停停,停停走走”;由于在并发 环境下,各个程序不再独立,破坏了顺序程序的 确定性、封闭性和可再现性。
2014-6-19
7
2.1.3 多道程序设计
• 主存中每次只存在一个程序,该程序运行时独占 整个计算机系统资源,这种程序设计方式就是 “单道程序设计”,而让多个程序同时进入一个 计算机系统的主存储器并发执行,这种程序设计 方式就是“多道程序设计”。 • 具有多道程序设计能力的计算机系统称为多道程 序设计系统。 • 采用多道程序设计的好处是:充分发挥了计算机 硬件的并行性,消除了处理器和外围设备的互相 等待现象,大大提高了系统的效率。
2014-6-19
9
• 解答:在单道系统中,两道作业必须顺序运行, 因此执行的总时间是11+(3+6)=20(分钟)。 而在多道程序设计系统中,可以让第二道作业先 进行执行,计算3分钟后,进行打印,接下去第一 道作业进行计算,这时处理器和打印机真正并行 工作,因此,这时,两道作业的执行总时间是 3+11=14(分钟)。
2014-6-19
4
2.1.2 程序的并发执行
• 并发(Concurrency):一个程序的执行还没有 结束,另一个程序就已经开始。因此,从某个宏 观时间段来考察,在这段时间内,“同时”完成 了几个程序,这就叫并发,但从微观某个时刻来 看,任何时刻却只有一个程序在运行。 • 并发性有两层含义: ①内部顺序性,对于一个程序而言,它的所有指 令是按序执行的; ②外部的并发性,对于多个程序而言,它们是交 叉运行的。
3
•
顺序程序设计的四个特点,使得编程和调试 很方便,缺点就是计算机资源使用效率不高。我 们知道,操作系统是管理和控制计算机系统资源 并方便用户使用的一种最重要的系统软件,提高 资源的使用效率是操作系统设计的主要目标之一。 因此,必须要提出一种程序的执行方式,提高系 统的效率,这就是程序的并发执行。
2014-6-19
19
• (4). 并发性:并发性是进程的固有特性,引入进程的目的 之一就是让进程能够并发执行。并发性也是现代操作系统 的一个重要属性。并发就是指一个进程运行没有结束,另 一个进程就已经开始,各个进程运行在时间上可以有重叠。 • (5)制约性:并发进程由于共享资源和相互协作,从而产生 制约关系,使得进程在关键点上需要相互等待或互相通信, 采取一些必要的措施,才能保证进程执行的结果的确定性、 唯一性和可再现性。 • (6)共享性:同一个程序的各个进程对应的程序代码是相同 的,此外,不同进程之间还可以共享公共变量,以竞争或 协作的方式进行工作。
2014-6-19
15
2.2 进程
• • • • 2.2.1 进程的定义及其属性 2.2.2 进程的状态及其转换 2.2.3 进程控制块 2.2.4 进程队列
2014-6-19
16
2.2.1 进程的定义及其属性
• 进程是操作系统中最基础也是最重要的 概念
• 我们采用进程定义如下: 进程是并发环境下,一个具有独立功能的 程序在某个数据集上的一次执行活动,它 是操作系统进行资源分配和保护的基本单 位,也是执行的单位。
2014-6-19
10
• 【例2-2】在一个单处理器的多道程序设计系统中, 现在有两道作业将要同时执行,一道作业以计算为主, 一道作业以I/O操作(输入输出)为主,请问,先调 度哪个作业进程?为什么? • 解答:在现代计算机系统中,处理器可以和外部设备 真正并行工作。因此,本题中,应该先调度I/O型的 作业进程,赋予I/O型的作业进程更高的优先级,这 样做的好处是可以提高系统资源的使用效率。这是因 为,将I/O型的作业进程先调度运行,利用CPU进行 运算,完成后让出CPU处理器,进行输入输出处理, 而此时可以调度计算型作业进程到处理器上运行,这 样做到CPU与外部设备并行工作,提高了资源利用率。 例2-1用到了这一思想。
2014-6-19
21
2.2.2 进程的状态及其转换
• 进程具有并发性、制约性、动态性、结构 性以及独立性,运行轨迹是“走走停停, 停停走走”,有时在占用处理器,有时又 在申请外部设备,有时又在进行I/O处理。 为了刻画每个进程活动的过程和状态的变 化,以及为了进程控制和调度的方便,就 要记录和控制进程的运行过程,这就是进 程的状态。
2014-6-19
5
• 并行(Parallel):若干个程序在微观上也是同时 执行的,当然,对于程序的并行执行,需要多个 处理器。 • 本书中,主要讨论单CPU的情况,因此,程序的 执行是并发执行。 • 现代计算机系统由于采用了通道等技术,使得处 理器与外围设备能够并行工作。
2014-6-19
6
• 并发执行示意图
2014-6-19
20
• 下面对程序和进程的联系作个简单介绍。从进 程的结构特性可以看出,进程包含程序,但进 程和程序并非一一对应,一个程序可以对应多 个进程(数据集不同),而同样,有的进程对 应一个程序,而有的程序可被属于不同的进程 的几个程序进行调用,每次调用就对数据进行 一次处理,而这个处理过程只是相应进程的一 部分。
2014-6-19
22
• 为了管理上的方便,大多数系统中进程都具有以下三种基 本的状态。 (1)运行态( Running ):此时的进程获得了当时运行所需的 系统资源,并且正在占有CPU进行处理。 (2)等待态( Waiting ),也叫阻塞态( Blocked ):运行中的 进程,由于要申请使用某个系统资源,或者申请到了某个 外部设备正在进行与外部设备进行数据传输 , 或者进程运 行中出现了异常需要等待用户进行干涉处理,这时的进程 就不能继续运行下去,而不得不放弃CPU,从而转入等待 态。 (3)就绪态(Ready ):处于等待态的进程,由于所等待的事 件得到了满足,这时就转入到就绪态。就绪态的进程,运 行所需要的系统资源,除了CPU之外,全部得到了满足, 可是说“万事俱备,只欠CPU”。
2014-6-19
13
• 【例2-4】对于下列四条语句,将它们的读集和写集都写出来。 解答: 语句 读集R(si) 写集W(si) s1: a=x*y; R(s1)={x,y} W(s1)={a} s2: b=z-1; R(s2)={z} W(s2)={b} s3: c=b+a+8; R(s3)={a,b} W(s3)={c} s4: w=c+5; R(s2)={c} W(s2)={w} 运用Bernstein条件,有: R(s1) ∩W(s2) ∪R(s2) ∩W(s1) ∪W(s1) ∩ W(s2)= {},因此,语句s1和 s2可以并发执行; R(s1) ∩W(s3) ∪R(s3) ∩W(s1) ∪W(s1) ∩ W(s3)= {a}≠{},因此语句s1 和s3不能并发执行。 同理语句s2和s3,s3和s4也不能并发执行。
2014-6-19
11
• 【例 2-3 】 有一台计算机,配置有 1MB 主存,操作系统占 用200KB,每个用户进程各占用200KB,如果用户进程等 待I/O的时间为70%,若增加1MB主存,则CPU的利用率提 高多少?再增加1MB主存,则CPU的利用率比只有1MB主 存时又提高多少? • 解答:当只有1MB主存时,除了操作系统占用的200KB, 则其余的 800KB 主存可以容纳 4 个用户进程。由于每个进 程等待I/O的时间为70%,那么只有四个进程都同时等待时, CPU 才 是 空 闲 的 , 那 么 CPU 的 利 用 率 是 1 - ( 0.7 ) 4= 0.7599 ≈ 0.76;假如再增加1MB主存,则主存中的用户进 程共 4+5=9 个, CPU 的利用率是1-( 0.7 ) 9 ≈ 0.9596 ≈ 0.96 , 那 么 CPU 的 利 用 率 提 高 了 ( 0.96 - 0.76 ) /0.76×100% ≈ 26%。若再增加1MB主存,则CPU的利用率 是 1 -( 0.7 ) 14 ≈ 0.99 , CPU 的利用率又提高了( 0.99 - 0.76)/0.76×100% ≈ 30%。
12
2.1.4 并发程序执行的条件
• 具有何种特性的两个程序并发执行呢?关于这个问题, Bernstein 作过研究,并于 1966 年提出了两个程序并发执行的条 件,故又称之为 Bernstein 条件,即并发进程如果是无关的,则 这些进程可以并发执行。并发进程的无关性是指它们分别在不 同的变量集合上运行。下面对Bernstein条件做简单介绍。 • 约 定 程 序 Pi 在 执 行 期 间 所 需 引 用 的 变 量 的 集 合 , 记 作 R(Pi)={a1,a2,a3,…,an},实际上,R(Pi)就是Pi的读集。 • 约 定 程 序 Pi 在 执 行 期 间 所 需 修 改 的 变 量 的 集 合 , 记 作 W(Pi)={b1,b2,b3,…,bm},实际上,W(Pi)就是Pi的写集。 • 有了以上的约定, Bernstein 条件就可以表述为:如果两个程序 P1和P2满足R(P1)∩W(P2)∪R(P2) ∩W(P1) ∪W(P1) ∩W(P2)={}, 它们就能够并发执行,否则不能并发执行,会发生与时间有关 的错误。
2014-6-19
8
• 从总体上看,采用多道程序设计技术可以增加单 位时间内执行的作业数,但是,对于某一个作业 而言,它的执行时间可能会延长。
• 【例2-1】在一个单处理器的系统中,假设有两道 作业,一道单纯计算11分钟,另一道先计算3分 钟,再打印6分钟。请问在单道程序设计系统中, 两道作业的执行总时间至少为多少分钟?而在多 道程序设计系统中,这一时间又至少为多少分钟?
2014-6-19
18
• 从进程的定义中,可以看出进程具有以下六个属性。 (1) 动态性:进程是程序的一次执行活动,执行轨迹是“走走停停, 停停走走”,并且进程具有创建、运行到终止的生命历程。因 此,动态性是进程的一个重要属性.而程序是静态的,没有生 命周期,程序作为一种系统资源(文件形式)可以长久存在。 程序和进程的本质区别就是:程序是静态的,进程是动态的。 (2) 结构性:进程不仅包括了运行于其上的程序,还包括了某个数 据集合。为了在操作系统内部实现进程,就需要一个数表结构, 即进程控制块来记录和描述进程的动态运行情况。因此,一个 进程都是有程序代码段、数据块和进程控制块三部分组成。 (3) 独立性:在传统的操作系统中,进程既是资源的分配和保护的 基本单位,也是处理器调度的基本单位。在具有并发活动的系 统中,没有建立进程的程序,是不能够作为独立单位进行运行 的。在现代操作系统中,具有多进程多线程能力,进程仍然作 为资源的分配和保护的独立单位,而调度和执行的基本单位改 为由线程来完成。
2014-6-19
14
• 值得注意的是,Bernstein条件是一个理论上保证 程序能够并发执行的充分条件。在操作系统中, 由于进程间共享某些资源而不满足Bernstein条件 的情况十分普遍,从理论上讲,它们是不能够并 发执行的,否则会发生与时间有关的错误。但是, 只要采取适当的措施,这些进程就可以正确、安 全地并发执行,这可以通过信号量和PV操作或者 管程机制等来予以解决。这些是涉及到进程互斥 和同步部分的内容,本章后面会详细介绍。
2014-6-19
17
• 进程不是程序,而是程序的一次执行活动, 和传统的程序概念有着本质的区别。在日 常生活中,很容易找到类似于“程序”和 “进程”的例子,例如厨师炒菜,菜谱相 当于程序,一次炒菜过程就是一个“进 程”;再如乐谱和演奏,乐谱相当于程序, 而一次演奏就相当于一个进程;此外,火 车时刻表以及列车的运行,课程表和上课, 都有类似关系。
第2章 处理器管理及并发进程
2014-6-19
1
本章学习任务
进程与线程 进程调度 进程互斥与同步 管程 进程通信 死锁
2
2014-6-19
2.1.1 程序的顺序执行
•Байду номын сангаас示意图
I1 P1 O1 I2 P2 O2 I3 P3 O3
• 特点
简单、方便,容易理解; 确定性; 封闭性; 可再现性。
2014-6-19
I1 P1 O1
I2
P2
O2
I3
P3
O3
• 并发执行的特点 程序运行“走走停停,停停走走”;由于在并发 环境下,各个程序不再独立,破坏了顺序程序的 确定性、封闭性和可再现性。
2014-6-19
7
2.1.3 多道程序设计
• 主存中每次只存在一个程序,该程序运行时独占 整个计算机系统资源,这种程序设计方式就是 “单道程序设计”,而让多个程序同时进入一个 计算机系统的主存储器并发执行,这种程序设计 方式就是“多道程序设计”。 • 具有多道程序设计能力的计算机系统称为多道程 序设计系统。 • 采用多道程序设计的好处是:充分发挥了计算机 硬件的并行性,消除了处理器和外围设备的互相 等待现象,大大提高了系统的效率。
2014-6-19
9
• 解答:在单道系统中,两道作业必须顺序运行, 因此执行的总时间是11+(3+6)=20(分钟)。 而在多道程序设计系统中,可以让第二道作业先 进行执行,计算3分钟后,进行打印,接下去第一 道作业进行计算,这时处理器和打印机真正并行 工作,因此,这时,两道作业的执行总时间是 3+11=14(分钟)。
2014-6-19
4
2.1.2 程序的并发执行
• 并发(Concurrency):一个程序的执行还没有 结束,另一个程序就已经开始。因此,从某个宏 观时间段来考察,在这段时间内,“同时”完成 了几个程序,这就叫并发,但从微观某个时刻来 看,任何时刻却只有一个程序在运行。 • 并发性有两层含义: ①内部顺序性,对于一个程序而言,它的所有指 令是按序执行的; ②外部的并发性,对于多个程序而言,它们是交 叉运行的。
3
•
顺序程序设计的四个特点,使得编程和调试 很方便,缺点就是计算机资源使用效率不高。我 们知道,操作系统是管理和控制计算机系统资源 并方便用户使用的一种最重要的系统软件,提高 资源的使用效率是操作系统设计的主要目标之一。 因此,必须要提出一种程序的执行方式,提高系 统的效率,这就是程序的并发执行。
2014-6-19
19
• (4). 并发性:并发性是进程的固有特性,引入进程的目的 之一就是让进程能够并发执行。并发性也是现代操作系统 的一个重要属性。并发就是指一个进程运行没有结束,另 一个进程就已经开始,各个进程运行在时间上可以有重叠。 • (5)制约性:并发进程由于共享资源和相互协作,从而产生 制约关系,使得进程在关键点上需要相互等待或互相通信, 采取一些必要的措施,才能保证进程执行的结果的确定性、 唯一性和可再现性。 • (6)共享性:同一个程序的各个进程对应的程序代码是相同 的,此外,不同进程之间还可以共享公共变量,以竞争或 协作的方式进行工作。
2014-6-19
15
2.2 进程
• • • • 2.2.1 进程的定义及其属性 2.2.2 进程的状态及其转换 2.2.3 进程控制块 2.2.4 进程队列
2014-6-19
16
2.2.1 进程的定义及其属性
• 进程是操作系统中最基础也是最重要的 概念
• 我们采用进程定义如下: 进程是并发环境下,一个具有独立功能的 程序在某个数据集上的一次执行活动,它 是操作系统进行资源分配和保护的基本单 位,也是执行的单位。
2014-6-19
10
• 【例2-2】在一个单处理器的多道程序设计系统中, 现在有两道作业将要同时执行,一道作业以计算为主, 一道作业以I/O操作(输入输出)为主,请问,先调 度哪个作业进程?为什么? • 解答:在现代计算机系统中,处理器可以和外部设备 真正并行工作。因此,本题中,应该先调度I/O型的 作业进程,赋予I/O型的作业进程更高的优先级,这 样做的好处是可以提高系统资源的使用效率。这是因 为,将I/O型的作业进程先调度运行,利用CPU进行 运算,完成后让出CPU处理器,进行输入输出处理, 而此时可以调度计算型作业进程到处理器上运行,这 样做到CPU与外部设备并行工作,提高了资源利用率。 例2-1用到了这一思想。
2014-6-19
21
2.2.2 进程的状态及其转换
• 进程具有并发性、制约性、动态性、结构 性以及独立性,运行轨迹是“走走停停, 停停走走”,有时在占用处理器,有时又 在申请外部设备,有时又在进行I/O处理。 为了刻画每个进程活动的过程和状态的变 化,以及为了进程控制和调度的方便,就 要记录和控制进程的运行过程,这就是进 程的状态。
2014-6-19
5
• 并行(Parallel):若干个程序在微观上也是同时 执行的,当然,对于程序的并行执行,需要多个 处理器。 • 本书中,主要讨论单CPU的情况,因此,程序的 执行是并发执行。 • 现代计算机系统由于采用了通道等技术,使得处 理器与外围设备能够并行工作。
2014-6-19
6
• 并发执行示意图
2014-6-19
20
• 下面对程序和进程的联系作个简单介绍。从进 程的结构特性可以看出,进程包含程序,但进 程和程序并非一一对应,一个程序可以对应多 个进程(数据集不同),而同样,有的进程对 应一个程序,而有的程序可被属于不同的进程 的几个程序进行调用,每次调用就对数据进行 一次处理,而这个处理过程只是相应进程的一 部分。
2014-6-19
22
• 为了管理上的方便,大多数系统中进程都具有以下三种基 本的状态。 (1)运行态( Running ):此时的进程获得了当时运行所需的 系统资源,并且正在占有CPU进行处理。 (2)等待态( Waiting ),也叫阻塞态( Blocked ):运行中的 进程,由于要申请使用某个系统资源,或者申请到了某个 外部设备正在进行与外部设备进行数据传输 , 或者进程运 行中出现了异常需要等待用户进行干涉处理,这时的进程 就不能继续运行下去,而不得不放弃CPU,从而转入等待 态。 (3)就绪态(Ready ):处于等待态的进程,由于所等待的事 件得到了满足,这时就转入到就绪态。就绪态的进程,运 行所需要的系统资源,除了CPU之外,全部得到了满足, 可是说“万事俱备,只欠CPU”。
2014-6-19
13
• 【例2-4】对于下列四条语句,将它们的读集和写集都写出来。 解答: 语句 读集R(si) 写集W(si) s1: a=x*y; R(s1)={x,y} W(s1)={a} s2: b=z-1; R(s2)={z} W(s2)={b} s3: c=b+a+8; R(s3)={a,b} W(s3)={c} s4: w=c+5; R(s2)={c} W(s2)={w} 运用Bernstein条件,有: R(s1) ∩W(s2) ∪R(s2) ∩W(s1) ∪W(s1) ∩ W(s2)= {},因此,语句s1和 s2可以并发执行; R(s1) ∩W(s3) ∪R(s3) ∩W(s1) ∪W(s1) ∩ W(s3)= {a}≠{},因此语句s1 和s3不能并发执行。 同理语句s2和s3,s3和s4也不能并发执行。
2014-6-19
11
• 【例 2-3 】 有一台计算机,配置有 1MB 主存,操作系统占 用200KB,每个用户进程各占用200KB,如果用户进程等 待I/O的时间为70%,若增加1MB主存,则CPU的利用率提 高多少?再增加1MB主存,则CPU的利用率比只有1MB主 存时又提高多少? • 解答:当只有1MB主存时,除了操作系统占用的200KB, 则其余的 800KB 主存可以容纳 4 个用户进程。由于每个进 程等待I/O的时间为70%,那么只有四个进程都同时等待时, CPU 才 是 空 闲 的 , 那 么 CPU 的 利 用 率 是 1 - ( 0.7 ) 4= 0.7599 ≈ 0.76;假如再增加1MB主存,则主存中的用户进 程共 4+5=9 个, CPU 的利用率是1-( 0.7 ) 9 ≈ 0.9596 ≈ 0.96 , 那 么 CPU 的 利 用 率 提 高 了 ( 0.96 - 0.76 ) /0.76×100% ≈ 26%。若再增加1MB主存,则CPU的利用率 是 1 -( 0.7 ) 14 ≈ 0.99 , CPU 的利用率又提高了( 0.99 - 0.76)/0.76×100% ≈ 30%。