第2章进程管理part7_第1页
第2章进程管理part7_第2页
第2章进程管理part7_第3页
第2章进程管理part7_第4页
第2章进程管理part7_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part71 第二章第二章 进程管理进程管理 2.1 2.1 进程的基本概念进程的基本概念 2.2 2.2 进程控制进程控制 2.3 2.3 进程同步进程同步 2.4 2.4 经典进程的同步问题经典进程的同步问题 2.5 2.5 管程机制管程机制 2.6 2.6 进程通信进程通信 2.7 2.7 线程线程 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part

2、72 返回 2. 3.4 管 程 机 制 2 .利用管程解决生产者-消费者问题 管程的提出 采用PV同步机制来编写并发程序,对于共享变量及信 号量变量的操作将被分散于各个进程中。 P/V缺点: ()易读性差。 ()不利于修改和维护。 ()正确性难以保证。因为操作系统或并发程序通常很大, 要保证这样一个复杂的系统没有逻辑错误是很难的 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part73 1. 管程的基本概念 1)管程的定义 管程由三部分组成: 局部于管程的共享变量说明; 对该数据结构进行操作的一

3、组过程; 对局部于管程的数据设置初始值的语句。此外,还须为 管程赋予一个名字。 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part74 图 2-11 管程的示意图 共享数据 一组操作过程 初始化代码 进入队列 条件(不忙)队列 管程:集中式同步机制。它 的基本思想是: 将共享变量以及对共享变 量能够进行的所有操作集中 在一个模块中,一个操作系 统或并发程序由若干个这样 的模块所构成。 由于一个模块通常较短, 模块之间关系清晰,提高了 可读性,便于修改和维护, 正确性易于保证 第二章 进 程 管

4、理 Heb Nomal University Department of Computer Science 第2章进程管理part75 管程的语法描述如下: type monitor_name = MONITOR; ; define ; use ; procedure (); begin end; function ():值类型; begin end; begin ; end 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part76 共享数据 一组操作过程 初始化代码 进入队列 条件(不忙)队列

5、说明: l局部于管程内部的数据结构,仅能 被局部于管程内部的过程所访问,任 何管程外的过程都不能访问它; l反之,局部于管程内部的过程也仅 能访问管程内的数据结构。 由此可见,管程相当于围墙,它把共享变量和对它进行操 作的若干过程围了起来,所有进程要访问临界资源时,都 必须经过管程(相当于通过围墙的门)才能进入,而管程每次 只准许一个进程进入管程,从而实现了进程互斥。 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part77 管程是一种程序设计语言结构成分,它和信号量有同等 的表达能力,从语言的角

6、度看,管程主要有以下特性: (1) 模块化。管程是一个基本程序单位,可以单独编译。 (2) 抽象数据类型。管程中不仅有数据,而且有对数据 的操作。 (3) 信息掩蔽。管程中的数据结构只能被管程中的过程 访问,这些过程也是在管程内部定义的,供管程外的进程 调用,而管程中的数据结构以及过程(函数)的具体实现外部 不可见。 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part78 管程的要素: 管程中的共享变量在管程外部是不可见的,外 部只能通过调用管程中所说明的外部过程(函数) 来间接地访问管程中的共

7、享变量。 为了保证管程共享变量的数据完整性,规定管 程互斥进入。 管程通常是用来管理资源的,因而在管程中应 当设有进程等待队以及相应的等待及唤醒操作 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part79 问题:多个进程出现在管程中 当一个进入管程的进程执行等待操作时,它应当释放管 程的互斥权;当一个进入管程的进程执行唤醒操作时(如 唤醒),管程中便存在两个同时处于活动状态的进程。 处理方法有三种: 等待继续,直到退出或等待 等待继续,直到等待或退出 规定唤醒为管程中最后一个可执行的操作 Hoa

8、re Hansan 为了解决这类问题,引入了条件变量condition。通常,一个进 程被阻塞或挂起的条件(原因)可有多个,因此在管程中设置了 多个条件变量,对这些条件变量的访问,只能在管程中进行。 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part710 2) 条件变量 管程中对每个条件变量,都须予以说明,其形式为:Var x, y:condition。 该变量应置于wait和signal之前,即可表示为X.wait和 X.signal。例如,由于共享数据被占用而使调用进程等待,该条件变量 的

9、形式为:nonbusy:condition。此时, wait原语应改为nonbusy.wait,相 应地,signal应改为nonbusy.signal。 应当指出,X.signal操作的作用,是重新启动一个被阻塞 的进程,但如果没有被阻塞的进程,则X.signal操作不产生任 何后果。这与信号量机制中的signal操作不同。因为,后者总 是要执行s =s+1操作,因而总会改变信号量的状态。 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part711 管程和进程的异同点: (1)设置进程和管程的目

10、的不同 (2)系统管理数据结构 进程:PCB 管程:等待队列 (3)管程被进程调用 (4)管程是操作系统的固有成分,无创建 和撤消 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part712 2 .利用管程解决生产者-消费者问题 在利用管程方法来解决生产者-消费者问题时, 首先 便是为它们建立一个管程,并命名为Proclucer-Consumer, 或简称为PC。其中包括两个过程: (1) put(item)过程。 (2) get(item)过程。 第二章 进 程 管 理 Heb Nomal Un

11、iversity Department of Computer Science 第2章进程管理part713 (1) put(item)过程。 生产者利用该过程将自己生产的产 品投放到缓冲池中, 并用整型变量count来表示在缓冲池中 已有的产品数目,当countn时,表示缓冲池已满,生产者 须等待。 (2) get(item)过程。消费者利用该过程从缓冲池中取出 一个产品,当count0时,表示缓冲池中已无可取用的产品, 消费者应等待。 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part714

12、 type producer-consumer=monitor Var in,out,count:integer; buffer:array0,n-1 of item; notfull, notempty:condition; procedure entry put(item) begin if countn then notfull.wait; buffer(in) =nextp; in =(in+1) mod n; count =count+1; if notempty.queue then notempty.signal; end 第二章 进 程 管 理 Heb Nomal Univer

13、sity Department of Computer Science 第2章进程管理part715 procedure entry get(item) begin if count0 then notempty.wait; nextc =buffer(out); out =(out+1) mod n; count =count-1; if notfull.quene then notfull.signal; end begin in = out =0; count =0 end 第二章 进 程 管 理 Heb Nomal University Department of Computer S

14、cience 第2章进程管理part716 在利用管程解决生产者-消费者问题时, 其中的生 产者和消费者可描述为: producer:begin repeat produce an item in nextp; PC.put(item); until false; end consumer:begin repeat PC.get(item); consume the item in nextc; until false; end 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part7 2.6 进进

15、 程程 通通 信信 2.6.1 进程通信的类型进程通信的类型 1. 共享存储器系统共享存储器系统(Shared-Memory System) 基于共享数据结构共享数据结构的通信方式。 (2) 基于共享存储区共享存储区的通信方式。 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part7 2. 消息传递系统消息传递系统(Message passing system) 不论是单机系统、多机系统,还是计算机网络,消息 传递机制都是用得最广泛的一种进程间通信的机制。在消 息传递系统中,进程间的数据交换,是以

16、格式化的消息 (message)为单位的;在计算机网络中,又把message称为报 文。程序员直接利用系统提供的一组通信命令(原语)进行通 信。操作系统隐藏了通信的实现细节,大大减化了通信程 序编制的复杂性,而获得广泛的应用。 消息传递系统的通信方式属于高级通信方式。又因其 实现方式的不同而进一步分成直接通信方式直接通信方式和间接通信方间接通信方 式式两种。 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part7 3. 管道管道(Pipe)通信通信 所谓“管道”,是指用于连接一个读进程和一个写用于

17、连接一个读进程和一个写 进程以实现他们之间通信的一个共享文件,又名进程以实现他们之间通信的一个共享文件,又名pipe文文 件件。 向管道(共享文件)提供输入的发送进程(即写进程), 以字符流形式将大量的数据送入管道;而接受管道输出 的接收进程(即读进程),则从管道中接收(读)数据。由于由于 发送进程和接收进程是利用管道进行通信的,故又称为发送进程和接收进程是利用管道进行通信的,故又称为 管道通信。管道通信。这种方式首创于UNIX系统,由于它能有效地 传送大量数据,因而又被引入到许多其它操作系统中。 第二章 进 程 管 理 Heb Nomal University Department of C

18、omputer Science 第2章进程管理part7 为了协调双方的通信,管道机制必须提供以下三方面 的协调能力: 互斥互斥,即当一个进程正在对pipe执行读/写操作时,其 它(另一)进程必须等待。 同步同步,指当写(输入)进程把一定数量(如4 KB)的数据写 入pipe,便去睡眠等待, 直到读(输出)进程取走数据后, 再把他唤醒。当读进程读一空pipe时,也应睡眠等待,直 至写进程将数据写入管道后,才将之唤醒。 确定对方是否存在确定对方是否存在,只有确定了对方已存在时,才能 进行通信。 第二章 进 程 管 理 Heb Nomal University Department of Comp

19、uter Science 第2章进程管理part7 2.6.2 消息传递通信的实现方法消息传递通信的实现方法 1. 直接通信方式直接通信方式 这是指发送进程利用OS所提供的发送命令,直接把消 息发送给目标进程。此时,要求发送进程和接收进程都以 显式方式提供对方的标识符。通常,系统提供下述两条通 信命令(原语): Send(Receiver, message); 发送一个消息给接收进程; Receive(Sender, message); 接收Sender发来的消息; 例如,原语Send(P2, m1)表示将消息m1发送给接收进程P2; 而 原语Receive(P1,m1)则表示接收由P1发来的

20、消息m1。 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part7 在某些情况下,接收进程可与多个发送进程通信, 因此,它不可能事先指定发送进程。例如,用于提供打 印服务的进程,它可以接收来自任何一个进程的“打印 请求”消息。对于这样的应用,在接收进程接收消息的 原语中的源进程参数,是完成通信后的返回值,接收原 语可表示为: Receive (id, message); 第二章 进 程 管 理 Heb Nomal University Department of Computer Science

21、第2章进程管理part7 我们还可以利用直接通信原语,来解决生产者-消费者问题。 当生产者生产出一个产品(消息)后,便用Send原语将消息发送给 消费者进程;而消费者进程则利用Receive原语来得到一个消息。 如果消息尚未生产出来,消费者必须等待,直至生产者进程将 消息发送过来。生产者-消费者的通信过程可分别描述如下: repeat produce an item in nextp; send(consumer, nextp); until false; repeat receive(producer, nextc); consume the item in nextc; until fal

22、se; 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part7 2. 间接通信方式间接通信方式 (1) 信箱的创建和撤消。进程可利用信箱创建原语来建立一信箱的创建和撤消。进程可利用信箱创建原语来建立一 个新信箱。创建者进程应给出信箱名字、信箱属性个新信箱。创建者进程应给出信箱名字、信箱属性(公用、私用公用、私用 或共享或共享);对于共享信箱,;对于共享信箱, 还应给出共享者的名字。当进程不还应给出共享者的名字。当进程不 再需要读信箱时,可用信箱撤消原语将之撤消。再需要读信箱时,可用信箱撤消原语将之

23、撤消。 (2) 消息的发送和接收。当进程之间要利用信箱进行通信时,消息的发送和接收。当进程之间要利用信箱进行通信时, 必须使用共享信箱,并利用系统提供的下述通信原语进行通信。必须使用共享信箱,并利用系统提供的下述通信原语进行通信。 Send(mailbox, message); 将一个消息发送到指定信箱;将一个消息发送到指定信箱; Receive(mailbox, message); 从指定信箱中接收一个消息;从指定信箱中接收一个消息; 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part7 信箱

24、可由操作系统创建,也可由用户进程创建,创建信箱可由操作系统创建,也可由用户进程创建,创建 者是信箱的拥有者。据此,可把信箱分为以下三类。者是信箱的拥有者。据此,可把信箱分为以下三类。 1) 私用信箱私用信箱 用户进程可为自己建立一个新信箱,并作为该进程的用户进程可为自己建立一个新信箱,并作为该进程的 一部分。信箱的拥有者有权从信箱中读取消息,其他用户一部分。信箱的拥有者有权从信箱中读取消息,其他用户 则只能将自己构成的消息发送到该信箱中。这种私用信箱则只能将自己构成的消息发送到该信箱中。这种私用信箱 可采用单向通信链路的信箱来实现。可采用单向通信链路的信箱来实现。 当拥有该信箱的进程当拥有该信

25、箱的进程 结束时,信箱也随之消失。结束时,信箱也随之消失。 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part7 2) 公用信箱公用信箱 它由操作系统创建,并提供给系统中的所有核准进程它由操作系统创建,并提供给系统中的所有核准进程 使用。核准进程既可把消息发送到该信箱中,也可从信箱使用。核准进程既可把消息发送到该信箱中,也可从信箱 中读取发送给自己的消息。显然,公用信箱应采用双向通中读取发送给自己的消息。显然,公用信箱应采用双向通 信链路的信箱来实现。通常,公用信箱在系统运行期间始信链路的信箱来

26、实现。通常,公用信箱在系统运行期间始 终存在。终存在。 3) 共享信箱共享信箱 它由某进程创建,在创建时或创建后,指明它是可共享它由某进程创建,在创建时或创建后,指明它是可共享 的,同时须指出共享进程的,同时须指出共享进程(用户用户)的名字。信箱的拥有者和共的名字。信箱的拥有者和共 享者,都有权从信箱中取走发送给自己的消息。享者,都有权从信箱中取走发送给自己的消息。 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part7 在利用信箱通信时,在发送进程和接收进程之间,存在以在利用信箱通信时,在发送进

27、程和接收进程之间,存在以 下四种关系:下四种关系: (1) 一对一关系。这时可为发送进程和接收进程建立一条两一对一关系。这时可为发送进程和接收进程建立一条两 者专用的通信链路,使两者之间的交互不受其他进程的干扰。者专用的通信链路,使两者之间的交互不受其他进程的干扰。 (2) 多对一关系。允许提供服务的进程与多个用户进程之间多对一关系。允许提供服务的进程与多个用户进程之间 进行交互,也称为客户进行交互,也称为客户/服务器交互服务器交互(client/server interaction)。 (3) 一对多关系。允许一个发送进程与多个接收进程进行一对多关系。允许一个发送进程与多个接收进程进行 交互

28、,使发送进程可用广播方式,向接收者交互,使发送进程可用广播方式,向接收者(多个多个)发送消息。发送消息。 (4) 多对多关系。允许建立一个公用信箱,让多个进程都多对多关系。允许建立一个公用信箱,让多个进程都 能向信箱中投递消息;也可从信箱中取走属于自己的消息。能向信箱中投递消息;也可从信箱中取走属于自己的消息。 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part7 2.6.3 消息传递系统实现中的若干问题消息传递系统实现中的若干问题 1. 通信链路通信链路(communication link)

29、 为使在发送进程和接收进程之间能进行通信,必须在两者 之间建立一条通信链路。有两种方式建立通信链路。 第一种方式是:由发送进程在通信之前,用显式的“建立 连接”命令(原语)请求系统为之建立一条通信链路;在链路使 用完后,也用显式方式拆除链路。 这种方式主要用于计算机这种方式主要用于计算机 网络中。网络中。 第二种方式是发送进程无须明确提出建立链路的请求,只 须利用系统提供的发送命令(原语),系统会自动地为之建立一 条链路。这种方式主要用于单机系统中。这种方式主要用于单机系统中。 第二章 进 程 管 理 Heb Nomal University Department of Computer Sc

30、ience 第2章进程管理part7 根据通信链路的连接方法通信链路的连接方法,又可把通信链路分为两 类: 点点连接通信链路,这时的一条链路只连接 两个结点(进程); 多点连接链路,指用一条链路连接 多个(n2)结点(进程)。 而根据通信方式根据通信方式的不同,则又可把链路分成两种: 单向通信链路,只允许发送进程向接收进程发送消息; 双向链路,既允许由进程A向进程B发送消息,也允 许进程B同时向进程A发送消息。 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part7 2. 消息的格式消息的格式 在

31、某些OS中,消息是采用比较短的定长消息较短的定长消息格式,这 减少了对消息的处理和存储开销。这种方式可用于办公自 动化系统中,为用户提供快速的便笺式通信;但这对要发 送较长消息的用户是不方便的。在有的OS中,采用另一种 变长的消息格式变长的消息格式,即进程所发送消息的长度是可变的。系 统在处理和存储变长消息时,须付出更多的开销,但方便 了用户。 这两种消息格式各有其优缺点,故在很多系统(包 括计算机网络)中,是同时都用的。 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part7 3. 进程同步方式

32、进程同步方式 发送进程阻塞、 接收进程阻塞。 (2) 发送进程不阻塞、 接收进程阻塞。 (3) 发送进程和接收进程均不阻塞。 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part7 2.6.4 消息缓冲队列通信机制消息缓冲队列通信机制 1. 消息缓冲队列通信机制中的数据结构消息缓冲队列通信机制中的数据结构 (1) 消息缓冲区。在消息缓冲队列通信方式中,主要利 用的数据结构是消息缓冲区。它可描述如下: type message buffer=record sender; 发送者进程标识符发送者进程标识符 size; 消息长度消息长度 text; 消息正文消息正文 next; 指向下一个消息缓冲区的指针指向下一个消息缓冲区的指针 end 第二章 进 程 管 理 Heb Nomal University Department of Computer Science 第2章进程管理part7 (2) PCB中有关通信的数据项。在利用消息缓冲队列通 信机制时,在设置消息缓冲队列的同时,还应增加用于对 消息队列进行操作和实现同步的信号量,并将它们置入进 程的PCB中。在PCB中应增加的数据项可描述如下: type processcontrol bl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论