《华工软件基础第3章-操作系统-第3节-进程及进程管理全解优秀PPT.ppt》由会员分享,可在线阅读,更多相关《华工软件基础第3章-操作系统-第3节-进程及进程管理全解优秀PPT.ppt(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3节节 进程及进程管理进程及进程管理本节学习内容与要求:本节学习内容与要求:1.理解和驾驭程序的依次执行和并发执行概念;理解和驾驭程序的依次执行和并发执行概念;2.理解和驾驭进程的概念(与程序的区分);理解理解和驾驭进程的概念(与程序的区分);理解进程限制块进程限制块(PCB)的概念及作用;的概念及作用;3.学习和驾驭进程的互斥与同步概念及其实现;学习和驾驭进程的互斥与同步概念及其实现;4.学习和了解进程通信的基本方式;学习和了解进程通信的基本方式;5.学习和理解线程的概念;学习和理解线程的概念;6.学习和理解死锁的概念及处理方法。学习和理解死锁的概念及处理方法。11)程序的依次执行)程序
2、的依次执行程序依次执行的特征程序依次执行的特征 依次性:依次程序的各个操作是依次执行的。依次性:依次程序的各个操作是依次执行的。封闭性:程序一旦起先执行,其计算结果不受外界封闭性:程序一旦起先执行,其计算结果不受外界因素的影响。因素的影响。可再现性:初始条件不变的状况下,程序多次执行可再现性:初始条件不变的状况下,程序多次执行的结果一样。的结果一样。一个计算过程通常由若干个简洁的操作所组成,假一个计算过程通常由若干个简洁的操作所组成,假如这些操作必需按某种先后次序来执行,那么这样一如这些操作必需按某种先后次序来执行,那么这样一类计算过程称为程序的依次执行过程,这类程序称为类计算过程称为程序的依
3、次执行过程,这类程序称为依次程序。依次程序。1.程序的依次执行和并发执行程序的依次执行和并发执行2I I1 1输入输入输入输入设备设备设备设备处理机处理机处理机处理机打印机打印机I I2 2C C1 1I I3 3C C2 2P P1 1C C3 3P P2 2t1t2t3t4t7t5t6t8P P3 3t9单道程序依次执行时的先后次序图单道程序依次执行时的先后次序图单道程序依次执行时的先后次序图单道程序依次执行时的先后次序图作业作业1作业作业2作业作业332)程序的并发执行)程序的并发执行 若干个程序段同时在系统中运行,这些程序段的执行若干个程序段同时在系统中运行,这些程序段的执行在时间上是
4、重迭的,一个程序段的执行尚未结束,另一在时间上是重迭的,一个程序段的执行尚未结束,另一个程序段的执行已经起先,称为程序的并发执行。个程序段的执行已经起先,称为程序的并发执行。并发执行的可行性:计算机中存在多个物理部件,因并发执行的可行性:计算机中存在多个物理部件,因此允许不同程序段的多个操作在不同部件上同时进行,此允许不同程序段的多个操作在不同部件上同时进行,例如例如CPU的计算、键盘输入、打印机打印等同时进行。的计算、键盘输入、打印机打印等同时进行。单机系统中的多个应用程序的并发活动。单机系统中的多个应用程序的并发活动。并发程序的描述方式:并发程序的描述方式:cobeginS1;S2;Sn;
5、coend 表示程序段表示程序段S1,S2,Sn可以并发执行。可以并发执行。4I I1 1P P3 3输入输入输入输入设备设备设备设备处理机处理机处理机处理机打印机打印机I I2 2C C1 1I I3 3C C2 2P P1 1C C3 3P P2 2t1 1t2 2t3 3t4 4t5 5多道程序并发执行时的先后次序图多道程序并发执行时的先后次序图多道程序并发执行时的先后次序图多道程序并发执行时的先后次序图5程序并发执行的特征:程序并发执行的特征:失去了程序的封闭性和可再现性失去了程序的封闭性和可再现性 程序与计算不再一对应:同一程序可被多个任务共享程序与计算不再一对应:同一程序可被多个任
6、务共享 程序并发执行的相互制约(协同操作)程序并发执行的相互制约(协同操作)main()int n=0;cobeginp1:while (A的任务未完成的任务未完成);n+;p2:while (B的任务未完成的任务未完成);printf(N IS%dn,n);n=0;coend ;问题:这个程序的执行可能产生哪些结果?问题:这个程序的执行可能产生哪些结果?问题:这个程序的执行可能产生哪些结果?问题:这个程序的执行可能产生哪些结果?例:例:共享变量共享变量n的两个程序段并发执行的算法。的两个程序段并发执行的算法。程序执行结果与程序执行结果与程序执行结果与程序执行结果与执行依次有关!执行依次有关!
7、执行依次有关!执行依次有关!6并发并发 vs.并行并行l并发:并发:concurrentt多个任务宏观上同时,微观上多个任务宏观上同时,微观上“交替执行交替执行”(交替占有交替占有CPU),不要求有多个处理器,不要求有多个处理器(CPU)。)。t多道程序设计技术多道程序设计技术l并行:并行:parallelt多个任务微观上同时执行多个任务微观上同时执行(同时占有不同同时占有不同CPU),要求有多个处理器。,要求有多个处理器。t“并行计算机并行计算机”、“并行算法并行算法”7多道程序系统中程序的活动规律:多道程序系统中程序的活动规律:推动,暂停,推动,暂停,推动,暂停,推动,暂停,.推动:获得处
8、理机(包括复原现场)推动:获得处理机(包括复原现场)暂停:保存现场暂停:保存现场(断点,寄存器),交出处理机断点,寄存器),交出处理机暂停缘由:暂停缘由:(1)自身缘由:等待资源,启动自身缘由:等待资源,启动IO等等 (2)被剥夺被剥夺CPU给其它程序运行机会给其它程序运行机会2.“进程进程”概念的引入概念的引入 “程序程序”这一概念无法反映并发程序在执行过程这一概念无法反映并发程序在执行过程中的活动规律及状态变更。因此引入中的活动规律及状态变更。因此引入“进程进程”这一这一概念来描述程序的执行过程,以便从变更的角度动概念来描述程序的执行过程,以便从变更的角度动态地分析探讨并发程序的活动。态地
9、分析探讨并发程序的活动。8u可参与并发执行的程序称为进程。可参与并发执行的程序称为进程。u进程是可以和其它计算并发执行的一个计算。进程是可以和其它计算并发执行的一个计算。u进程是具有确定独立功能的程序关于一个数据集合进程是具有确定独立功能的程序关于一个数据集合的一次运行活动。的一次运行活动。u所谓进程,就是一个程序在给定活动空间和初始环所谓进程,就是一个程序在给定活动空间和初始环境下,在一个处理机上的执行过程。境下,在一个处理机上的执行过程。l 定义强调两个方面:定义强调两个方面:u动态性:动态性:处于执行过程中的程序处于执行过程中的程序;u并发性:并发性:可与其他进程同时执行可与其他进程同时
10、执行。l 进程的定义:进程的定义:9探讨:进程和程序这两个概念有什么区分?探讨:进程和程序这两个概念有什么区分?程序程序程序程序静态的概念静态的概念不是独立的运行单位不是独立的运行单位不是资源竞争的基本单位不是资源竞争的基本单位一个程序可对应多个进程一个程序可对应多个进程类似于类似于乐曲乐曲与与乐曲的一次演奏乐曲的一次演奏之间的关系。之间的关系。进程进程进程进程动态的概念动态的概念独立的运行单位,能并行活动独立的运行单位,能并行活动是处理机调度、竞争资源的基本单位是处理机调度、竞争资源的基本单位不同的进程可以对应同一程序不同的进程可以对应同一程序 从微观上看,多个进程轮换占有处理机;从宏从微观
11、上看,多个进程轮换占有处理机;从宏观上看,多个进程是并发运行的。观上看,多个进程是并发运行的。从局部看,每个进程是按其程序串行进行的,从局部看,每个进程是按其程序串行进行的,从整体看,多个进程是并发进行的。从整体看,多个进程是并发进行的。103.1 进程的基本状态及状态变迁进程的基本状态及状态变迁(1 1)进程的三种基本状态)进程的三种基本状态)进程的三种基本状态)进程的三种基本状态 就绪状态就绪状态(ready)存在于处理机调度队列中的存在于处理机调度队列中的那些进程,它们已经准备就绪,一旦得到那些进程,它们已经准备就绪,一旦得到CPU,就可,就可以马上运行,这些进程所处的状态称为就绪状态。
12、以马上运行,这些进程所处的状态称为就绪状态。运行状态运行状态(running)当进程得到处理机限制权当进程得到处理机限制权时,它的程序正在处理机上运行,该进程所处的状时,它的程序正在处理机上运行,该进程所处的状态为运行状态。态为运行状态。等待状态等待状态(wait)若一个进程因等待着某一事若一个进程因等待着某一事务发生(如等待输入输出操作的完成)而短暂停止务发生(如等待输入输出操作的完成)而短暂停止执行,这时,即使给它执行,这时,即使给它CPU时间,它也无法执行,时间,它也无法执行,则称该进程处于等待状态(又可称为堵塞状态或挂则称该进程处于等待状态(又可称为堵塞状态或挂起状态)。起状态)。11
13、(2)进程状态的变迁及缘由)进程状态的变迁及缘由 进程随着自身的推动和外界条件的变更而从进程随着自身的推动和外界条件的变更而从一个状态变换为另一个状态称为状态变迁。一个状态变换为另一个状态称为状态变迁。l状态变迁及引发缘由状态变迁及引发缘由l就绪就绪运行:进程获得处理机运行:进程获得处理机(进程调度进程调度)l运行运行就绪:进程被剥夺处理机就绪:进程被剥夺处理机(时间片、优先级时间片、优先级)l运行运行等待:进程申请资源未得到,恳求服务等待:进程申请资源未得到,恳求服务(启动启动IO)l等待等待就绪:进程得到资源,服务得到响应就绪:进程得到资源,服务得到响应(IO结束结束)运行运行等待等待就绪
14、就绪服务请求服务请求(请求请求I/O等等)服务完成服务完成/事件来到事件来到进程调度进程调度时间片到时间片到123.2 进程的组成及进程限制块进程的组成及进程限制块(PCB)一个进程包含一个进程包含4个组成部分:个组成部分:程序程序描述进程要完成的功能的指令序列;描述进程要完成的功能的指令序列;数据数据程序加工的对象;程序加工的对象;工作区工作区程序执行运用的内存区域,如用户栈或系程序执行运用的内存区域,如用户栈或系统栈;统栈;进程限制块进程限制块存放进程限制和管理信息的数据结构。存放进程限制和管理信息的数据结构。进程限制块(进程限制块(PCB,Process Control Block)是进
15、程存在的)是进程存在的标记!是进程的标记!是进程的“档案袋档案袋”,用于记录和描述进程的动态过程。,用于记录和描述进程的动态过程。在创建进程时建立在创建进程时建立PCB,在撤消进程时删除相应的,在撤消进程时删除相应的PCB。在每个进程的生命周期内,操作系统通过对其在每个进程的生命周期内,操作系统通过对其PCB的管理来的管理来实现对该进程的管理。实现对该进程的管理。13l进程限制块(进程限制块(PCB)是纪录进程动态特性、运行限制等)是纪录进程动态特性、运行限制等信息的数据结构。其内容包括(不同系统不尽相同)信息的数据结构。其内容包括(不同系统不尽相同)进程标识符进程标识符pid进程当前状态(运
16、行、就绪或等待)进程当前状态(运行、就绪或等待)CPU现场现场(程序状态字、寄存器内容等程序状态字、寄存器内容等)资源清单(已占用的资源状况)资源清单(已占用的资源状况)优先级优先级队列指针、家族关系队列指针、家族关系通信机制(信箱或消息队列)通信机制(信箱或消息队列)同步、互斥机构(信号灯)同步、互斥机构(信号灯)程序存储位置程序存储位置动态特性动态特性运行限制运行限制Process Control Block14关于进程队列关于进程队列PCBPCBPCBhead1.总链队列:只有一个总链队列:只有一个(由系统当前全部由系统当前全部PCB构成构成)2.就绪队列:有一个或若干个(由调度算法确定
17、)就绪队列:有一个或若干个(由调度算法确定)3.等待队列:每种等待事务都有一个等待队列:每种等待事务都有一个(如等待运用如等待运用打印机的多个进程构成一个等待队列打印机的多个进程构成一个等待队列)PCB构成的队列类型:构成的队列类型:运行队列运行队列?15关于进程类型关于进程类型u系统进程系统进程t运行操作系统程序,完成系统管理运行操作系统程序,完成系统管理(服务服务)功能。功能。例如:例如:Windows系统:系统:system,svchostUNIX系统:系统:#0-sched,#1-initu用户进程用户进程t运行用户运行用户(应用应用)程序,为用户服务。例如:程序,为用户服务。例如:W
18、indows系统:系统:word,foxmailUNIX系统:系统:vi,shell16关于进程的特点关于进程的特点l并发性:可以与其它进程一道向前推动;并发性:可以与其它进程一道向前推动;l动态性:动态产生、消亡,进程在生存期内的动态性:动态产生、消亡,进程在生存期内的状态动态变更;状态动态变更;l独立性:进程是可调度的基本单位;独立性:进程是可调度的基本单位;l交互性:同时运行的进程可能发生相互作用;交互性:同时运行的进程可能发生相互作用;l异步性:进程以各自独立、不行预知的速度向异步性:进程以各自独立、不行预知的速度向前推动;前推动;l结构性:每个进程有一个结构性:每个进程有一个PCB结
19、构来描述。结构来描述。173.3 进程限制进程限制(进程管理)进程管理)(1 1)进程限制)进程限制)进程限制)进程限制 对系统中的进程实施有效的管理和限制,具体表对系统中的进程实施有效的管理和限制,具体表对系统中的进程实施有效的管理和限制,具体表对系统中的进程实施有效的管理和限制,具体表现为限制进程进入不同的状态。现为限制进程进入不同的状态。现为限制进程进入不同的状态。现为限制进程进入不同的状态。n 进程管理属于处理机二级调度中的微观调度!进程管理属于处理机二级调度中的微观调度!新进程新进程就绪就绪就绪就绪运行运行运行运行结束结束等待等待等待等待进程创建、撤销等进程创建、撤销等进程的同步和互
20、斥进程的同步和互斥进程通信进程通信18 (3 3)进程限制原语)进程限制原语 进程创建进程创建创建一个新进程创建一个新进程 进程撤消进程撤消撤消一个已完成任务的进程撤消一个已完成任务的进程 进程堵塞进程堵塞使处于运行状态的进程变为等待使处于运行状态的进程变为等待 状态状态 进程唤醒进程唤醒唤醒一个等待进程,使其进入就绪状态唤醒一个等待进程,使其进入就绪状态原语操作(原子操作):执行时不行中断的系统调用原语操作(原子操作):执行时不行中断的系统调用原语操作(原子操作):执行时不行中断的系统调用原语操作(原子操作):执行时不行中断的系统调用 进程的限制动作由操作系统完成;操作系统供应进程的限制动作
21、由操作系统完成;操作系统供应进程的限制动作由操作系统完成;操作系统供应进程的限制动作由操作系统完成;操作系统供应相应的原语以备调用。相应的原语以备调用。相应的原语以备调用。相应的原语以备调用。(2 2)进程限制的实现)进程限制的实现)进程限制的实现)进程限制的实现 194.进程的进程的互斥与同步互斥与同步临界资源临界资源临界资源临界资源一次仅允许一个进程运用的资源称为一次仅允许一个进程运用的资源称为一次仅允许一个进程运用的资源称为一次仅允许一个进程运用的资源称为临界资源。很多物理设备(如打印机等)和软件资临界资源。很多物理设备(如打印机等)和软件资临界资源。很多物理设备(如打印机等)和软件资临
22、界资源。很多物理设备(如打印机等)和软件资源(如变量、数据、队列等)都具有这种独占性的源(如变量、数据、队列等)都具有这种独占性的源(如变量、数据、队列等)都具有这种独占性的源(如变量、数据、队列等)都具有这种独占性的特点,属于临界资源。特点,属于临界资源。特点,属于临界资源。特点,属于临界资源。临界区临界区临界区临界区在进程中访问临界资源的那段代码称为在进程中访问临界资源的那段代码称为在进程中访问临界资源的那段代码称为在进程中访问临界资源的那段代码称为临界区。临界区。临界区。临界区。留意区分临界资源与临界区这两个概念!留意区分临界资源与临界区这两个概念!留意区分临界资源与临界区这两个概念!留
23、意区分临界资源与临界区这两个概念!互斥互斥互斥互斥当一个进程正在访问某临界区时,不允许当一个进程正在访问某临界区时,不允许当一个进程正在访问某临界区时,不允许当一个进程正在访问某临界区时,不允许其它进程进入其相应的临界区,这种相互制约的关其它进程进入其相应的临界区,这种相互制约的关其它进程进入其相应的临界区,这种相互制约的关其它进程进入其相应的临界区,这种相互制约的关系称为互斥。系称为互斥。系称为互斥。系称为互斥。(1)进程的互斥)进程的互斥反映了进程间的反映了进程间的竞争竞争与与合作合作20进程进程A:旅行社:旅行社A的订票业务的订票业务 旅行社旅行社A查到该机有座位;查到该机有座位;与顾客
24、商议;与顾客商议;旅行社旅行社A预订该机座;预订该机座;多进程共享外部设备多进程共享外部设备多进程共享公共变量多进程共享公共变量进程进程B:旅行社:旅行社B的订票业务的订票业务 旅行社旅行社B查到该机有座位;查到该机有座位;与顾客商议;与顾客商议;旅行社旅行社B预订该机座;预订该机座;例如:飞机订票系统中各个订票点对机票库的访问例如:飞机订票系统中各个订票点对机票库的访问例如:打印机共享例如:打印机共享假如不对进程进行互斥限制,则假如不对进程进行互斥限制,则临界资源的运用将混乱不堪!临界资源的运用将混乱不堪!21进入区进入区临界区临界区临界区临界区退出区退出区进入区进入区临界区临界区临界区临界
25、区退出区退出区.变更临界变更临界资源状态资源状态释放资源释放资源并唤醒等并唤醒等待进程待进程进程进程 1进程进程 2等待临界等待临界资源释放资源释放进程如何互斥地进入临界区进程如何互斥地进入临界区?每次至多有一个进程处于临界区。每次至多有一个进程处于临界区。进程在临界区内仅逗留有限的时间。进程在临界区内仅逗留有限的时间。进程间不应相互堵塞而致使彼此都不能进入临界区。进程间不应相互堵塞而致使彼此都不能进入临界区。互斥原则互斥原则22问题:问题:如何保证进程之间是互斥的进入临界区的呢?如何保证进程之间是互斥的进入临界区的呢?答:操作系统供应了进程间互斥的机制,程序中运答:操作系统供应了进程间互斥的
26、机制,程序中运用这些机制来保证进程执行过程中的互斥进入。其用这些机制来保证进程执行过程中的互斥进入。其中最常见的机制就是信号灯及在信号灯上的操作。中最常见的机制就是信号灯及在信号灯上的操作。什么是信号灯?什么是信号灯?什么是信号灯?什么是信号灯?信号灯是一个二元组信号灯是一个二元组(s,q),其中:,其中:s 是一个具有是一个具有非负初值非负初值的整型变量,的整型变量,q 是一个初始状态为空值的是一个初始状态为空值的队列指针队列指针。l 整型变量整型变量 s 表征当前可用临界资源的数量;表征当前可用临界资源的数量;l 队列队列 q 用于存放等待访问该临界资源的进程。用于存放等待访问该临界资源的
27、进程。通过对信号灯的通过对信号灯的P、V操作操作,进程可以实现相互间,进程可以实现相互间的互斥。的互斥。什么是什么是什么是什么是P P、V V操作?操作?操作?操作?23P操作的主要内容:操作的主要内容:信号灯量信号灯量 s 值减值减1;推断推断s值值:若若 s 0,则进程接着执行,则进程接着执行;否则,挂起该进程(即堵塞该否则,挂起该进程(即堵塞该进程),将其插入到信号灯进程),将其插入到信号灯的等待队列中,然后转入进的等待队列中,然后转入进程调度。程调度。挂起进程包括:保留挂起进程包括:保留CPU现现场;进程置场;进程置“等待等待”状态。状态。V操作的主要内容:操作的主要内容:信号灯量信号
28、灯量 s 值加值加1;推断推断s值值:若若 s 0,则进程接着执行;,则进程接着执行;否则,从等待队列否则,从等待队列 q 中唤醒一中唤醒一个等待该信号灯的进程,然个等待该信号灯的进程,然后本进程接着执行。后本进程接着执行。唤醒进程包括:从等待队列唤醒进程包括:从等待队列中取出一个进程,并将其状中取出一个进程,并将其状态置为态置为“就绪就绪”状态。状态。P、V操作的含义及实现操作的含义及实现P操作表示对资源的操作表示对资源的申请申请V操作表示对资源的操作表示对资源的释放释放P、V操作均为操作系统供应的原语操作!操作均为操作系统供应的原语操作!24实现两个进程互斥的例子实现两个进程互斥的例子问题
29、:问题:x代表某航班机座号,代表某航班机座号,p1和和p2代表两个售票进程,售票代表两个售票进程,售票工作是对变量工作是对变量x加加1。试用信号灯的。试用信号灯的P、V操作实现这两个进程操作实现这两个进程的互斥。的互斥。这里的变量这里的变量 x 为临界资源。设:为临界资源。设:mutex为互斥信号灯,初值为为互斥信号灯,初值为1,表示初始状态下没有进程访问变量,表示初始状态下没有进程访问变量 x;p1()p(mutex);x:=x+1;v(mutex);p2()p(mutex);x:=x+1;v(mutex);临界区临界区25关于实现多个进程互斥的几个思索题:关于实现多个进程互斥的几个思索题:
30、1.上述例子中,信号灯上述例子中,信号灯mutex可能取值有哪些?其可能取值有哪些?其含义?含义?2.若对某一临界资源,存在多个可能对其进行访问若对某一临界资源,存在多个可能对其进行访问的进程,如何实现这些进程的互斥限制?信号灯的的进程,如何实现这些进程的互斥限制?信号灯的可能取值有哪些?可能取值有哪些?3.若有多个功能相同的临界资源以及多个可能对其若有多个功能相同的临界资源以及多个可能对其进行访问的进程,如何实现这些进程的互斥限制?进行访问的进程,如何实现这些进程的互斥限制?信号灯的可能取值有哪些?信号灯的可能取值有哪些?26 为完成某个任务,并发进程在一些关键点可能须为完成某个任务,并发进
31、程在一些关键点可能须要相互等待与互通消息要相互等待与互通消息,这种关系称为同步。这种关系称为同步。(2)进程的同步)进程的同步进程间同步是进程间同步是一种一种合作合作合作合作关系关系门诊医生:门诊医生:询问病情;询问病情;开化验单;开化验单;等化验结果;等化验结果;接着诊病;接着诊病;化验员:化验员:等等化验单;化验单;化验;化验;填写化验结果;填写化验结果;例如:病人就诊例如:病人就诊例如:病人就诊例如:病人就诊27同步进程的例子同步进程的例子 计算进程计算进程 compute 和打印进程和打印进程 print 共用一个缓冲区共用一个缓冲区buf,为了,为了完成正确的计算与打印,试用信号灯实
32、现这两个进程的同步。完成正确的计算与打印,试用信号灯实现这两个进程的同步。缓冲区缓冲区bufprintcomputeK compute 进程把计算结果送入进程把计算结果送入 buf 之后,之后,print 进程才能从进程才能从 buf 中取出结果打印,即中取出结果打印,即当当 buf 内有数据时,内有数据时,print进程才能动作,进程才能动作,否则必需等待。否则必需等待。K print 进程把进程把 buf 中的数据取出打印之中的数据取出打印之后,后,compute 进程才能把下一个计算结果进程才能把下一个计算结果送入送入 buf 中,即当中,即当 buf 为空时,为空时,compute 进
33、程才能动作,否则必需等待。进程才能动作,否则必需等待。设置:设置:两个信号灯两个信号灯Sa和和Sb:Sa:表示缓冲区中是否有可供打印的计算结果,其初值为:表示缓冲区中是否有可供打印的计算结果,其初值为0;Sb:表示缓冲区有无空位置存放新的信息,其初值为:表示缓冲区有无空位置存放新的信息,其初值为1。28main()int Sa=0;/*Sa表表示示buf中中有有多多数数据据,初初始始为为0表表示示没没有有数据数据*/int Sb=1;/*Sb表表示示buf中中有有无无空空位位置置,初初始始为为1表表示示有有空位置空位置*/cobegincompute();print();coendcomput
34、e()while(计算未完成计算未完成)得到一个计算结果;得到一个计算结果;P(Sb);将数据送到缓冲区中;将数据送到缓冲区中;V(Sa);print()while(打印工作未完成打印工作未完成)P(Sa);从缓冲区中取一数据;从缓冲区中取一数据;V(Sb);从打印机上输出;从打印机上输出;29 进程通信就是进程间进行信息沟通。进程通信就是进程间进行信息沟通。信号灯机制也是一种进程通信方式。信号灯机制也是一种进程通信方式。5.进程通信进程通信(1 1)基于共享数据结构或共享内存的通信方式)基于共享数据结构或共享内存的通信方式 在这种通信方式中,进行通信的若干进程共用某些在这种通信方式中,进行通
35、信的若干进程共用某些数据结构,通过这些数据结构进行信息交换;或者由数据结构,通过这些数据结构进行信息交换;或者由操作系统在内存中划出一块共享存贮区,各进程通过操作系统在内存中划出一块共享存贮区,各进程通过对共享存贮区的读写来实现通信。对共享存贮区的读写来实现通信。信号灯机制属于此类通信方式。信号灯机制属于此类通信方式。30(2 2)基于消息传递的通信方式)基于消息传递的通信方式 在这种通信方式中,进程间的通信以消息在这种通信方式中,进程间的通信以消息(message)(message)为单位,通过调用一组高级通信原语为单位,通过调用一组高级通信原语来进行。消息传递通信有可分为干脆通信和间接来进
36、行。消息传递通信有可分为干脆通信和间接通信两种。通信两种。干脆通信:发送进程将发送区的消息用发送原语干脆通信:发送进程将发送区的消息用发送原语SendSend干脆发送给接收进程,即把消息挂接在接收进干脆发送给接收进程,即把消息挂接在接收进程的消息缓冲队列上;接收进程则用接收原语程的消息缓冲队列上;接收进程则用接收原语ReceiveReceive从自己的消息缓冲队列上摘取消息。从自己的消息缓冲队列上摘取消息。31发送进程发送进程接收进程接收进程信箱信箱信箱头信箱头间接通信:在通信的两个进程间设置一个公用信箱,间接通信:在通信的两个进程间设置一个公用信箱,通信时发送进程将消息用发送原语通信时发送进
37、程将消息用发送原语SendSend送至信箱,接送至信箱,接收进程则用接收原语收进程则用接收原语ReceiveReceive从信箱中读取消息。明从信箱中读取消息。明显,这里的信箱也是一种临界资源,所以通信时,两显,这里的信箱也是一种临界资源,所以通信时,两个通信进程访问信箱也须要互斥和同步。个通信进程访问信箱也须要互斥和同步。32(3 3)基于共享文件的通信方式基于共享文件的通信方式 这种通信方式就是所谓的管道(这种通信方式就是所谓的管道(PIPEPIPE)通信。在这种通信方式中,通信进程运用一通信。在这种通信方式中,通信进程运用一个已经打开的共享文件来实现通信,该共享个已经打开的共享文件来实现
38、通信,该共享文件被形象地称为文件被形象地称为“管道管道”,所以这种通信,所以这种通信方式也称为管道通信。在管道通信中,发送方式也称为管道通信。在管道通信中,发送进程把数据写到管道中,而接收进程则从管进程把数据写到管道中,而接收进程则从管道中读出数据。道中读出数据。发送进程发送进程接收进程接收进程共享文件共享文件33 基于共享数据结构或共享内存的通信速度最快。基于共享数据结构或共享内存的通信速度最快。一般的多任务操作系统都接受这种方式。一般的多任务操作系统都接受这种方式。管道通信方式由管道通信方式由UNIX首创,是建立在共享文件首创,是建立在共享文件的基础之上的,但效率要低一些。的基础之上的,但
39、效率要低一些。关于进程通信的有关说明关于进程通信的有关说明34(1)线程概念的引入)线程概念的引入20世纪世纪80年头中期,为进一步提高系统资源利用率,年头中期,为进一步提高系统资源利用率,在进程的基础上又提出了线程的概念。现代操作在进程的基础上又提出了线程的概念。现代操作系统中,大多数都引入了线程,如系统中,大多数都引入了线程,如Windows。(2)线程的定义)线程的定义线程(线程(Thread)可以定义为)可以定义为“进程内的一个执行单位进程内的一个执行单位”或或“进程内的一个可调度实体进程内的一个可调度实体”,它也可以描,它也可以描述为进程的一条执行路径述为进程的一条执行路径(执行流执
40、行流)。一个进程可以有多条执行路径,即线程。一个进程可以有多条执行路径,即线程。单个程序中同时并发运行多个线程完成不同的任务单个程序中同时并发运行多个线程完成不同的任务称为多线程。称为多线程。6.线程(线程(Thread):自学内容):自学内容35关于进程和线程关于进程和线程 进程进程进程指向一个可执行进程指向一个可执行程序程序,定义了初始代码定义了初始代码和数据和数据进程拥有一个私有主进程拥有一个私有主存空间存空间;进程既是任务调度的进程既是任务调度的单位,也是系统资源的单位,也是系统资源的安排单位,它执行时由安排单位,它执行时由操作系统安排系统资源;操作系统安排系统资源;若系统支持多线程处
41、若系统支持多线程处理,每个进程至少有一理,每个进程至少有一个执行线程。个执行线程。线程线程它是进程的一条执它是进程的一条执行路径;行路径;它拥有独立的堆栈它拥有独立的堆栈和处理机执行环境;和处理机执行环境;线程是任务调度的线程是任务调度的单位,但不是系统资单位,但不是系统资源的安排单位;线程源的安排单位;线程完全共享父进程占有完全共享父进程占有的资源;的资源;它是单个进程所创它是单个进程所创建的多个同时存在的建的多个同时存在的线程之一。线程之一。36寄存器寄存器静态数据静态数据程序代码程序代码 栈栈寄存器寄存器进程进程2动动 态态 堆堆内存内存多进程结构(用户视图)多进程结构(用户视图)静态数
42、据静态数据程序代码程序代码 栈栈进程进程1动动 态态 堆堆内存内存寄存器寄存器37静态数据静态数据程序代码程序代码 栈栈栈栈寄存器寄存器寄存器寄存器线程线程1 1:线程线程2 2:进程进程动态堆动态堆内存内存多线程结构(用户视图)多线程结构(用户视图)38关于多进程与多线程关于多进程与多线程多进程多进程多线程多线程优点优点内存隔离,单个进程内存隔离,单个进程的异常不会导致整个的异常不会导致整个应用崩溃。应用崩溃。提高系统的并行性,开销小。提高系统的并行性,开销小。缺点缺点进程间调用、通信和进程间调用、通信和切换的开销均比多线切换的开销均比多线程大。程大。没有内存隔离,单个线程的崩没有内存隔离,
43、单个线程的崩溃会导致整个应用退出。溃会导致整个应用退出。适用适用场合场合目标子功能间交互少。目标子功能间交互少。若资源和性能许可,若资源和性能许可,可设计多个子应用程可设计多个子应用程序来组合实现开发目序来组合实现开发目标。标。若存在大量的若存在大量的IO访问、网络传访问、网络传输等耗时操作,或者需要和用输等耗时操作,或者需要和用户交互时,使用多线程有利于户交互时,使用多线程有利于提高系统资源利用率和用户界提高系统资源利用率和用户界面快速响应而提高友好性。面快速响应而提高友好性。39为什么要在进程中建立线程?为什么要在进程中建立线程?l进进程程既既是是系系统统调调度度的的基基本本单单位位,又又
44、是是拥拥有有资资源源的的基基本本单单位位,在在进进程程创创建建、撤撤销销和和状状态态切切换换过过程程中中,系系统统要要付付出出较较大大的的时时间间和和空空间间开开销销,限限制制了了系系统统中的进程数目,影响了并发度的进一步提高。中的进程数目,影响了并发度的进一步提高。l引引入入线线程程后后,进进程程只只是是拥拥有有资资源源的的基基本本单单位位,而而线线程程才才是是处处理理机机调调度度的的基基本本单单位位。这这样样,提提高高并并发发度度和和削削减减系系统统开开销销的的目目标标都都能能达达到到。引引入入多多线线程程不不是是为为了了提提高高运运行行效效率率,而而主主要要是是为为了了在在完完成成多任务
45、的同时提高资源运用效率。多任务的同时提高资源运用效率。40为什么要在进程中建立线程(续)?为什么要在进程中建立线程(续)?l接接受受了了多多线线程程技技术术的的应应用用程程序序可可以以更更好好地地利利用用系系统资源。其主要优势在于:统资源。其主要优势在于:l充充分分利利用用了了CPU的的空空闲闲时时间间片片,可可以以用用完完可可能能少少的的时时间间来来对对用用户户的的要要求求做做出出响响应应,使使得得进进程程的的整整体体运运行行效效率率得得到到较较大大提提高高,同同时时增增加加了了应应用用程程序序的敏捷性。的敏捷性。l更更为为重重要要的的是是,由由于于同同一一进进程程的的全全部部线线程程是是共
46、共享享同同一一内内存存,所所以以不不须须要要特特殊殊的的数数据据传传送送机机制制,不不须须要要建建立立共共享享存存储储区区或或共共享享文文件件,从从而而使使得得不不同同任任务务之之间间的的协协调调操操作作与与运运行行、数数据据的的交交互互、资资源源的安排等问题更加易于解决。的安排等问题更加易于解决。41(3)线程的优点)线程的优点占用资源少:线程自身基本上不拥有系统资源,只占用资源少:线程自身基本上不拥有系统资源,只拥有少量在运行中必不行少的资源(如程序计数拥有少量在运行中必不行少的资源(如程序计数器、寄存器和栈等)器、寄存器和栈等),因而线程也因其系统开销,因而线程也因其系统开销小而被称为轻
47、型进程或轻量级进程。小而被称为轻型进程或轻量级进程。切换速度快:线程可与同属一个父进程的其它线程切换速度快:线程可与同属一个父进程的其它线程共享父进程所拥有的全部资源;由于共享地址和共享父进程所拥有的全部资源;由于共享地址和数据空间,线程具有切换速度快、通信简洁的优数据空间,线程具有切换速度快、通信简洁的优点。点。可并发执行:一个线程可以创建或撤销另一个线程;可并发执行:一个线程可以创建或撤销另一个线程;同一进程中的多个线程都在该进程的地址空间活同一进程中的多个线程都在该进程的地址空间活动,相互之间也可以并发执行。动,相互之间也可以并发执行。42(4)线程的缺点)线程的缺点多线程的运行须要系统
48、进行协调和统一管理,多线程的运行须要系统进行协调和统一管理,CPU须要额外跟踪线程。须要额外跟踪线程。线程太多会导致限制的困难度增加,会引发不线程太多会导致限制的困难度增加,会引发不必要的错误。必要的错误。线程之间对共享资源的访问会相互影响,系统线程之间对共享资源的访问会相互影响,系统须要解决共享资源的竞争问题。须要解决共享资源的竞争问题。存在移植性限制。存在移植性限制。32位操作系统和位操作系统和64位操作系位操作系统中的线程、不同版本的操作系统中的线程统中的线程、不同版本的操作系统中的线程有所差异,执行依次也有差异。另外,并非有所差异,执行依次也有差异。另外,并非全部全部OS支持多线程。支
49、持多线程。437.Dead Lock(死锁死锁)tAn example:tSystem has 2 tape drives.tP1 and P2 each hold one tape drive and each needs another one.tA set of blocked processes each holding a resource and waiting to acquire a resource held by another process in the set.t死锁:在两个或多个并发进程中,假如每个进程死锁:在两个或多个并发进程中,假如每个进程持有某种资源而又都等待
50、着别的进程释放它或它持有某种资源而又都等待着别的进程释放它或它们占有的资源,就会陷入僵局,都不能向前推动。们占有的资源,就会陷入僵局,都不能向前推动。t死锁是两个或多个进程无止境地等待着恒久不会死锁是两个或多个进程无止境地等待着恒久不会成立的条件的一种系统状态。成立的条件的一种系统状态。44l Cause(成因成因)l 竞争资源竞争资源l 不适当的进程推动速度不适当的进程推动速度P1恳求恳求R1,安排安排R1,释放释放R1;P2恳求恳求R2,安排安排R2,释放释放R2;P1恳求恳求R2,安排安排R2,释放释放R2;P2恳求恳求R1,安排安排R1,释放释放R1;P1恳求恳求R1,安排安排R1;P