收藏 分享(赏)

利用管程同步进程.ppt

上传人:天天快乐 文档编号:1288917 上传时间:2018-06-22 格式:PPT 页数:79 大小:559KB
下载 相关 举报
利用管程同步进程.ppt_第1页
第1页 / 共79页
利用管程同步进程.ppt_第2页
第2页 / 共79页
利用管程同步进程.ppt_第3页
第3页 / 共79页
利用管程同步进程.ppt_第4页
第4页 / 共79页
利用管程同步进程.ppt_第5页
第5页 / 共79页
点击查看更多>>
资源描述

1、第二章 进程管理,2.1 进程的基本概念 2.2 进程控制 2.3 进程同步 2.4 经典进程的同步问题 2.5 管程机制 2.6 进程通信 2.7 线程,2.1 进程的基本概念,2.1.1 程序的顺序执行及其特征,1. 程序的顺序执行 仅当前一操作(程序段)执行完后,才能执行后继操作。例如,在进行计算时,总须先输入用户的程序和数据,然后进行计算,最后才能打印计算结果。 S1: a=x+y; S2: b=a-5; S3: c=b+1;,图 2-1 程序的顺序执行,2. 程序顺序执行时的特征,顺序性:(2) 封闭性:(独占全机,不受干扰) (3) 可再现性:,2.1.2 前趋图,前趋图是一个有向

2、无循环图,用于描述进程之间执行的前后关系。结点可用于描述一个程序段或进程,乃至一条语句;有向边则用于表示两个结点之间存在的偏序或前趋关系 “”。PiPj,称Pi是Pj的直接前趋,而称Pj是Pi的直接后继。初始结点:没有前趋的结点终止结点:把没有后继的结点,每个结点还具有一个重量(Weight),用于表示该结点所含有的程序量或结点的执行时间。,IiCiPi和S1S2S3,图 2-2 前趋图,对于图 2-2(a)所示的前趋图, 存在下述前趋关系:,P1P2, P1P3, P1P4, P2P5, P3P5, P4P6, P4P7, P5P8, P6P8, P7P9, P8P9应当注意,前趋图中必须不

3、存在循环,但在图2-2(b)中却有着下述的前趋关系:S2S3, S3S2 (不是前趋图),2.1.3 程序的并发执行及其特征,1. 程序的并发执行,图 2-3 并发执行时的前趋图,在该例中存在下述前趋关系:IiCi,IiIi+1, CiPi, CiCi+1,PiPi+1Ii+1和Ci及Pi-1是重迭的,是并发执行的,对于具有下述四条语句的程序段: S1: a=x+2 S2: b=y+4 S3: c=a+b S4: d=c+b,图 2-4 四条语句的前趋关系,2. 程序并发执行时的特征,间断性(因共享资源、相互合作)2) 失去封闭性 (共享资源状态被多个程序改变)3) 不可再现性,例如,有两个循

4、环程序A和B,它们共享一个变量N。程序A每执行一次时,都要做N=N+1操作;程序B每执行一次时, 都要执行Print(N)操作,然后再将N置成“0”。程序A和B以不同的速度运行。 (1) N=N+1在Print(N)和N=0之前,此时得到的N值分别为n+1, n+1, 0。 (2) N=N+1在Print(N)和N=0之后,此时得到的N值分别为n, 0, 1。 (3) N=N+1在Print(N)和N=0之间,此时得到的N值分别为n, n+1, 0。,2.1.4 进程的特征与状态,1. 进程的特征和定义,结构特征进程实体由程序段、数据段、PCB组成2) 动态性 由创而产生,由调度而执行,由撤消

5、而消亡而程序是有序指令的集合,存放于介质,静态3) 并发性(进程并发运行)4) 独立性独立运行,独立分配资源,独立接受调度5) 异步性 以不可预知的速度向前推进,较典型的进程定义有: (1) 进程是程序的一次执行。 (2) 进程是一个程序及其数据在处理机上执行时所发生的活动。 (3) 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。进程定义为:“进程是程序实体的运行过程,是系统进行资源分配和调度的一个独立单位”。,2. 进程的三种基本状态,就绪(Ready)状态 2) 执行状态3) 阻塞状态,图 2-5 进程的三种基本状态及其转换,3. 挂起状态(暂不接受调度的

6、状态)引入挂起状态的原因 终端用户的请求。(调试程序需要) (2) 父进程请求。 (修改或协调子进程间活动)(3)操作系统的需要。(检查资源使用情况)(4)对换的需要。(内存紧张,换出到外存)(5)负荷调节的需要。(保证实时任务优先),2) 进程状态的转换,活动就绪静止就绪。 (2) 活动阻塞静止阻塞。 (3) 静止就绪活动就绪。 (4) 静止阻塞活动阻塞。,图 2-6 具有挂起状态的进程状态图,2.1.5 进程控制块(PCB),1. 进程控制块的作用,进程控制块:记录了操作系统所需的,用于描述进程当前情况的以及控制进程运行的全部信息的数据结构。OS是根据PCB来对并发执行的进程进行控制和管理

7、的。,2. 进程控制块中的信息,1) 进程标识符 进程标识符用于惟一地标识一个进程。 (1) 内部标识符。数字标识符,为了方便系统使用。 (2) 外部标识符。它由创建者提供,字母、数字组成,由用户(进程)在访问该进程时使用。便于记忆如计算进程。,2) 处理机状态 处理机状态信息主要是由处理机的各种寄存器中的内容组成的。(现场) 通用寄存器,它们是用户程序可以访问的,用于暂存信息, 在大多数处理机中,有 832 个通用寄存器 指令计数器,其中存放了要访问的下一条指令的地址; 程序状态字PSW,其中含有状态信息,如条件码、执行方式、 中断屏蔽标志等; 用户栈指针, 指每个用户进程都有一个或若干个与

8、之相关的系统栈,用于存放过程和系统调用参数及调用地址。栈指针指向该栈的栈顶。,3) 进程调度信息 进程状态,指明进程的当前状态,作为进程调度和置换时的依据; 进程优先级,用于描述进程使用处理机的优先级别的一个整数 进程调度所需的其它信息,它们与进程调度算法有关,如,进程已等待CPU的时间总和、进程已执行的时间总和等; 事件,是指进程由执行状态转变为阻塞状态所等待发生的事件,即阻塞原因。,4) 进程控制信息 程序和数据的地址, 是指进程的程序和数据所在的内存或外存地(首)址,以便能从PCB中找到其程序和数据; 进程同步和通信机制,指实现进程同步和通信时必需的机制,如消息队列指针、信号量等 资源清

9、单,是一张列出了除CPU以外的、进程所需的全部资源及已经分配到该进程的资源的清单; 链接指针,它给出了本进程(PCB)所在队列中的下一个进程的PCB的首地址。,3. 进程控制块的组织方式,1) 链接方式,图 2-7 PCB链接队列示意图,2) 索引方式,图 2-8 按索引方式组织PCB,2.2 进 程 控 制,2.2.1 进程的创建,1. 进程图(Process Graph),图 2-9 进程树,子继承父的资源子撤消还父撤消,撤所有子,2. 引起创建进程的事件,用户登录。 (2) 作业调度。 (作业装入内存时)(3) 提供服务。(如申请打印,建打印进程) (4) 应用请求。 应用进程因任务创建

10、新进程(如:输入和表格输出进程I,C,P),3. 进程的创建(Creation of Progress),(1)申请空白PCB。 (2) 为新进程分配资源。(为程序、数据、栈分内存,大小:用户提出(批),父进程提出,或系统分配) (3) 初始化进程控制块。 A:标识符,填标识符及父标识符到PCB中B:处理机状态,栈指针置顶,程序计数器指向入口地址C:处理机控制信息,设就绪状态,设优先级(最低) (4) 将新进程插入就绪队列,如果进程就绪队列能够接纳新进程, 便将新进程插入就绪队列。,2.2.2 进程的终止,1. 引起进程终止(Termination of Process)的事件 1) 正常结束

11、 在任何计算机系统中,都应有一个用于表示进程已经运行完成的指示。例如,在批处理系统中的Holt指令。在分时系统中的Logs off,表示进程运行完毕,2) 异常结束由于出现某些错误和故障而迫使进程终止。 越界错误。越出该进程的区域; 保护错。进程试图去访问一个不允许访问的,或者以不适当的方式进行访问(只读文件); 非法指令。程序试图去执行一条不存在的指令。(把数据当成了指令); 特权指令错。用户进程试图去执行系统指令; 运行超时。进程的执行时间超过了指定的最大值;, 等待超时。进程等待某事件的时间, 超过了规定的最大值; 算术运算错。进程试图去执行一个被禁止的运算,例如,被0除; I/O故障。

12、这是指在I/O过程中发生了错误等。,3) 外界干预 外界干预指进程应外界的请求而终止运行。 操作员或操作系统干预。 (如,发生了死锁,由操作员或操作系统终止该进程) 父进程请求。 父进程有权终止自己的任何子孙进程; 父进程终止。 当父进程终止时,其子孙进程也将终止。,2. 进程的终止过程 (1) 根据被终止进程的标识符,检索出该进程的PCB。 (2) 若被终止进程正处于执行状态,应立即终止该进程的执行。 (3) 若该进程有子孙进程,还应终止其所有子孙进程。 (4) 所拥有的资源,归还给其父进程,或归还系统。 (5) 将被终止进程(它的PCB)从所在队列(或链表)中移出。,2.2.3 进程的阻塞

13、与唤醒,1. 引起进程阻塞事件,请求系统服务无法满足(如:请求打印服务) 2) 启动某种操作(等待IO操作完成) 3) 新数据尚未到达(合作进程) 4) 无新工作可做(如发送进程),2. 进程阻塞过程阻塞事件发生调用block原语先停止执行PCB中状态由“执行”改为“阻塞”将PCB插入阻塞队列保留被阻塞进程现场重新调度另一就绪进程再恢复新进程现场。,3. 进程唤醒过程 所期待的事件出现调用唤醒原语wakeup( ) 被阻塞的进程的PCB从阻塞队列中移出将其PCB中的状态由阻塞改为就绪将该PCB插入到就绪队列中。,2.2.4 进程的挂起与激活,1. 进程的挂起发生挂起事件时(如,用户进程或父进程

14、请求):检查被挂起进程的状态若活动就绪变为静止就绪;活动阻塞变为静止阻塞把PCB复制到某指定的内存区域若进程正在执行变为静止就绪。,2. 进程的激活过程激活进程的事件发生 激活原语active( ) 先将进程从外存调入内存检查该进程的现行状态(若是静止就绪活动就绪;若为静止阻塞活动阻塞)。假如采用的是抢占调度策略,则每当有新进程进入就绪队列时,应检查是否要进行重新调度,即由调度程序将被激活进程与当前进程进行优先级的比较,如果被激活进程的优先级更低,就不必重新调度;否则,立即剥夺当前进程的运行,把处理机分配给刚被激活的进程。,2.3 进 程 同 步,2.3.1 进程同步的基本概念,1. 两种形式

15、的制约关系,间接相互制约关系。(如打印机的共享) (2) 直接相互制约关系。 (如单缓冲),进程同步的任务:是使并发的进程有效共享资源和相互合作,从而使程序有可再现性。,4. 同步机制应遵循的规则,空闲让进。(2) 忙则等待。 (3) 有限等待。(以免死等) (4) 让权等待。(等时释放处理器,以免忙等),2.3.2 信号量机制,1. 整型信号量 最初由Dijkstra把整型信号量定义为一个整型量,除初始化外,仅能通过两个标准的原子操作(Atomic Operation) wait(S)和signal(S)来访问。这两个操作一直被分别称为P、V操作。 wait和signal操作可描述为: wa

16、it(S): while S0 do no-op S=S-1; signal(S): S =S+1;,2.4 经典进程的同步问题,2.4.1 生产者消费者问题生产者-消费者(producer-consumer) :有一群生产者进程在生产产品,并将这些产品提供给消费者进程去消费。消费者进程可从一个缓冲区中取走产品去消费。不允许消费者进程到一个空缓冲区去取产品;也不允许生产者进程向一个已装满产品且尚未被取走的缓冲区中投放产品。,利用记录型信号量解决生产者-消费者问题公用缓冲区中有n个缓冲区互斥信号量mutex资源信号量empty表示缓冲区中空缓冲数量资源信号量full表示满缓冲区的数量Semaph

17、ore mutex=1,empty=n,full=0;Item buffern;Int in=out=0Void producer() while(1) produce an item in nextp; wait(empty); wait(mutex); bufferin=nextp; in =(in+1) mod n; signal(mutex); Singnal(full); ,Void consumer()while(1) wait(full); wait(mutex); nextc=bufferout; out:=(out+1)mod n signal(mutex); signal(

18、empty); consume the item in nextc; main() cobegin producer(); consumer(); ,2.4.2 哲学家进餐问题,(1) 至多只允许有四位哲学家同时进餐,能保证至少有一位哲学家能够进餐,并在用毕时能释放出他用过的两只筷子,从而使更多的哲学家能够进餐。 (2) 仅当哲学家的左、右两只筷子均可用时,才允许他拿起筷子进餐。(3)奇数号哲学家先他左边的筷子,再拿右边的筷子;偶数号哲学家相反。,2.4.3 读者-写者问题,一个文件或记录,可被多个进程共享。有些是“reader”读进程,有些是“writer”写进程。允许多个reader同时读

19、一个共享对象,不允许writer和其他进程同时访问共享对象。,2.5 管 程 机 制,2.5.1 管程的基本概念,1.管程的引入信号量的可能发生的几个错误:P94(1)将wait(s)和signal(s)颠倒(2)将signal(s)误写为wait(s)(3)遗漏wait(s)或遗漏signal(s),2. 管程的定义,管程由三部分组成: 局部于管程的共享变量说明; 对该数据结构进行操作的一组过程; 对局部于管程的数据设置初始值的语句。此外,还须为管程赋予一个名字。,图 2-11 管程的示意图,利用管程同步进程,须设2个原语wait和signal。当请求的资源未能得到满足时,管程调用wait使

20、进程等待,当资源释放时,调用signal唤醒队首进程。等待原因很多,引入条件变量condition,形式如:condition x y;用x.wait和x.signal表示。,如果有进程Q处于阻塞状态,当进程P执行了X.signal操作后,怎样决定由哪个进行执行,哪个等待,可采用下述两种方式之一进行处理: (1) P等待,直至Q离开管程或等待另一条件。 (2) Q等待,直至P离开管程或等待另一条件。 采用哪种处理方式, 当然是各执一词。 但是Hansan却采用了第一种处理方式。 3.利用管程解决生产者消费者问题P95,2.6 进 程 通 信,2.6.1 进程通信的类型,1. 共享存储器系统(S

21、hared-Memory System),基于共享数据结构的通信方式。(低级)生消,共享缓冲区,进程同步由程序完成,适合少量数据间通信 (2) 基于共享存储区的通信方式。(高级),2. 消息传递系统(Message passing system)(高级)应用最广泛的一种进程间通信的机制。以格式化的消息(message)为单位的;在计算机网络中,又把message称为报文。程序员直接利用系统提供的一组通信命令(原语)进行通信。操作系统隐藏了通信的实现细节,大大减化了通信程序编制的复杂性。,3. 管道(Pipe)通信 所谓“管道”,是指用于连接一个读进程和一个写进程以实现他们之间通信的一个共享文件

22、,又名pipe文件。发送进程(即写进程), 以字符流形式将大量的数据送入管道;而接收进程(即读进程),则从管道中接收(读)数据。这种方式首创于UNIX系统,由于它能有效地传送大量数据,因而又被引入到许多其它操作系统中。,管道机制必须提供以下三方面的协调能力: 互斥,即当一个进程正在对pipe执行读/写操作时,其它(另一)进程必须等待。 同步,指当写(输入)进程完成写入pipe后,便去睡眠等待, 直到读(输出)进程取走数据后,再把他唤醒。当读进程读一空pipe时,也应睡眠等待,直至写进程将数据写入管道后,才将之唤醒。 确定对方是否存在,只有确定了对方已存在时,才能进行通信。,2.6.2 消息传递

23、通信的实现方法,1. 直接通信方式要求发送进程和接收进程都以显式方式提供对方的标识符。 Send(Receiver, message); 发送一个消息给接收进程; Receive(Sender, message); 接收Sender发来的消息;例如,原语Send(P2, m1)表示将消息m1发送给接收进程P2; 而原语Receive(P1,m1)则表示接收由P1发来的消息m1。,在某些情况下,接收进程可与多个发送进程通信,因此,它不可能事先指定发送进程。(如打印机)对于这样的应用,在接收进程接收消息的原语中的源进程参数,是完成通信后的返回值,接收原语可表示为: Receive (id, mes

24、sage);,2. 间接通信方式,(1) 信箱的创建和撤消。进程可利用信箱创建原语来建立一个新信箱。信箱名字、信箱属性(公用、私用或共享);共享者的名字(共享信箱),不需要时,撤消。 (2) 消息的发送和接收。当进程之间要利用信箱进行通信时,必须使用共享信箱。 Send(mailbox, message); 将一个消息发送到指定信箱; Receive(mailbox, message); 从指定信箱中接收一个消息;,信箱可由操作系统创建,也可由用户进程创建,创建者是信箱的拥有者。据此,可把信箱分为以下三类。 1) 私用信箱 由用户进程信箱,是该进程的一部分。信箱的拥有者有权从中读取消息,其他用

25、户则只能向信箱发消息。单向通信链路。 拥有该信箱的进程结束时,信箱消失。,2) 公用信箱由操作系统创建,并提供给系统中的所有核准进程使用。核准进程既可发,也可读取发送给自己的消息。双向通信链路。通常,公用信箱在系统运行期间始终存在。 3) 共享信箱 它由某进程创建,在创建时或创建后,指明它是可共享的,同时须指出共享进程(用户)的名字。信箱的拥有者和共享者,都有权从信箱中取走发送给自己的消息。,发送进程和接收进程之间,存在以下四种关系: (1) 一对一关系。为发送进程和接收进程建立一条专用的通信链路,不受其他进程的干扰。 (2) 多对一关系。允许提供服务的进程与多个用户进程之间进行交互,也称为客

26、户/服务器交互。 (3) 一对多关系。允许一个发送进程可用广播方式向接收者(多个)发送消息。 (4) 多对多关系。允许建立一个公用信箱,让多个进程都能向信箱中投递消息;也可从信箱中取走属于自己的消息。,2.6.3 消息传递系统实现中的若干问题,1. 通信链路(communication link)有两种方式建立通信链路。第一种方式是:由发送进程在通信之前,用显式的“建立连接”命令(原语)请求系统为之建立一条通信链路;用完后拆除。(网络)第二种方式是:只须利用系统提供的发送命令(原语),系统会自动地为之建立一条链路。(单机系统),根据通信链路的连接方法分为: 点点连接通信链路,一条链路连接两个结

27、点(进程); 多点连接链路,一条链路连接多个(n2)结点(进程)。而根据通信方式的不同分成: 单向通信链路,只允许发送进程向接收进程发送消息; 双向链路,既允许由进程A向进程B发送消息,也允许进程B同时向进程A发送消息。,2. 消息的格式,短的定长消息格式,减少了对消息的处理和存储开销。为用户提供快速的便笺式通信;变长的消息格式,系统在处理和存储变长消息时,须付出更多的开销,但方便了用户。 各有其优缺点,故在很多系统(包括计算机网络)中,是同时都用的。,3. 进程同步方式,发送进程阻塞、 接收进程阻塞。(无缓冲,平时阻塞,直到有消息发送)(2) 发送进程不阻塞、 接收进程阻塞。 (如多个服务进

28、程平时阻塞,直到有消息发来)(3) 发送进程和接收进程均不阻塞。(它们之间有N个缓冲,都不阻塞),2.7 线 程,2.7.1 线程的基本概念,1.线程的引入进程是一个资源的拥有者,因而进程的创建、撤消、和切换中,系统要付出较大的时空开销。(内存,IO设备及PCB)进程不宜太多,切换不宜太频繁,限制了并发程度。,为了减少进程的创建、撤消和切换时所付出的时空开销,使OS有更好的并发性把资源分配单位和调度单位分开,线程的定义:线程是进程的一个实体,是被系统独立调度和分派的基本单位。,2. 线程的属性,轻型实体。 只拥有少量资源:TCB、寄存器和堆栈(2) 独立调度和分派的基本单位。 (3) 可并发执

29、行。 同一进程的多个线程并发,不同进程的多个线程并发。(4) 共享进程资源。 共享同一进程的资源,(5)每个线程有唯一的标识符和TCB(6)不同线程可以执行相同程序(7)同一进程中的各个线程共享该进程的内存地址空间(8)一个线程有生命周期(9)一个线线程也有三个基本状态,3. 线程的状态 (1) 状态参数。 寄存器状态,它包括程序计数器PC和堆栈指针中的内容; 堆栈, 在堆栈中通常保存有局部变量和返回地址; 线程运行状态, 用于描述线程正处于何种运行状态; 优先级, 描述线程执行的优先程度; 线程专有存储器, 用于保存线程自己的局部变量拷贝; 信号屏蔽, 即对某些信号加以屏蔽。,(2) 线程运

30、行状态。 线程在运行时,也具有下述三种基本状态: 执行状态,表示线程正获得处理机而运行; 就绪状态, 指线程已具备了各种执行条件,一旦获得CPU便可执行的状态; 阻塞状态,指线程在执行中因某事件而受阻,处于暂停执行时的状态。,4. 线程的创建和终止 线程的创建,应用程序启动时,先建一进程,同时为该进程建一“初始化线程”,由它再去创建若干个线程。 创建过程:利用线程创建函数(或系统调用),并提供相应的参数,如线程主程序的入口指针、堆栈的大小,以及用于调度的优先级等。并返回一个线程标识符 终止线程的方式有两种: 一种是在线程完成工作后自愿退出; 另一种是线程在运行中出现错误或由于某种原因而被其它线

31、程强行终止。,5. 多线程OS中的进程,在多线程OS中,进程是作为拥有系统资源的基本单位,并为它的多个线程它们提供资源,但此时的进程就不再作为一个执行的实体。 多线程OS中的进程有以下属性: (1) 作为系统资源分配的单位。 (2) 可包括多个线程。 (3) 进程不是一个可执行的实体。,6.线程与进程的比较(1)调度同一进程中的线程切换不会引起进程切换,不同进程中的线程切换会引起进程切换(2)并发性线程有更好的并发性和提高资源利用率和系统呑吐量(一个文件服务进程受阻塞则不能再服务了,而建多个文件服务线程则可再服务)(3)拥有资源(线程只有少量寄存器的内容)(4)系统开销(线程切换不涉及存储器管

32、理方面的操作),2.7.3 内核支持线程和用户级线程,1. 内核支持线程,内核支持线程,他们的创建、撤消和切换等,都是依靠内核实现的。 在内核空间还为线程设置了一个线程控制块TCB,内核是根据该控制块而感知某线程的存在的,并对其加以控制。,2. 用户级线程 用户级线程仅存在于用户空间中。对于这种线程的创建、 撤消、线程之间的同步与通信等功能,都无须利用系统调用来实现。由于切换无须内核的干预,因而线程的切换速度快。,2.7.4 线程控制,1. 内核支持线程的实现,图 2 - 13 任务数据区空间,2. 用户级线程的实现,1) 运行时系统运行时系统是用于管理和控制线程的函数(过程)的集合,包括用于进程的创建、撤消、同步和通信、调度的函数等。运行时系统中的所有函数都驻留在用户空间,并作为用户级线程与内核之间的接口。,2) 内核控制线程内核控制线程又称为轻型进程LWP(Light Weight Process)。 每一个进程都可拥有多个LWP,它们也可以共享进程所拥有的资源。LWP可通过系统调用来获得内核提供的服务,用户级线程只有连接到一个LWP上才能运行,此时它便具有了内核支持线程的所有属性。,图 2 - 14 利用轻型进程作为中间系统,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报