操作系统-第2章(3)

上传人:M****1 文档编号:1121546 上传时间:2017-05-28 格式:PPT 页数:43 大小:1.06MB
返回 下载 相关 举报
操作系统-第2章(3)_第1页
第1页 / 共43页
操作系统-第2章(3)_第2页
第2页 / 共43页
操作系统-第2章(3)_第3页
第3页 / 共43页
操作系统-第2章(3)_第4页
第4页 / 共43页
操作系统-第2章(3)_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《操作系统-第2章(3)》由会员分享,可在线阅读,更多相关《操作系统-第2章(3)(43页珍藏版)》请在金锄头文库上搜索。

1、2.5 进 程 通 信,进程通信:进程间的信息交换。 进程之间,需要交换一定数量的信息,以便协调一致共同完成指定的任务。 进程之间交换的信息量可多可少,多则成百上千个数据,少则仅仅是一个状态或一个信号。 进程通信方式: 低级通信方式:传送一个或几个字节的控制信息。 如:锁机制和信号量机制。 缺点: 效率低;通信对用户不透明; 高级通信方式:以较高的效率,交换大批量的数据。 如:消息缓冲机制和信箱机制。 Send / Receive原语(高级通讯原语),一、进程通信的类型(高级通信机制)1共享存储器系统1)基于共享数据结构方式:,公用数据结构,生产者,消费者,有界缓冲区,缺点:效率低;对程序员不

2、透明;传送少量数据;,OS:提供共享存储器。,程序员:设置缓冲区;负责进程同步;,2)基于共享存储区方式:,共享存储区,进程:读、写,进程,申请,分区,指定,分区关键字,连接,本进程,读写,2. 消息通信方式 进程间的数据交换以消息(message)或报文为单位,程序员利用一组通信命令(原语)来实现通信,可分为直接、间接通信方式。 优点:大量数据传送;隐藏通讯的实现细节; 3.管道通信方式(Pipe) 也称共享文件方式,基于文件系统,利用一个打开的共享文件连接两个相互通信的进程,文件作为缓冲传输介质。,字符流方式写入读出;先进先出顺序。,为了协调双方通信,管道通信必须提供三方面的协调能力: 、

3、互斥 2 、同步、3、对方是否存在。,二、消息传递通信的实现方法 系统为进程提供了两个高级通讯原语Send和Receive。要进行消息传递时执行Send ,当接收者要接收消息时执行Receive。 消息缓冲:在内存中开设缓冲区,发送进程将消息送入缓冲区,接收进程接收传递来的缓冲区。 信箱通信;,1直接通信方式 发送进程利用OS所提供的发送命令,直接把消息发送给目标进程。 要求:发送进程和接收进程都以显式方式提供对方的标识符。 通信命令:(原语) Send(Receiver,message): 发送一个消息给接收进程; Receive(Sender,message): 接收Sender发来的消息

4、; 例:原语Send(P2,m1) 表示将消息m1发送给接收进程P2; 原语Receive(P1,m1) 表示接收由P1发来的消息m1。 形式: 对称形式:一对一 非对称形式:多对一 (顾客/服务员) 如:提供打印服务的进程; Receive (id,message); 有缓冲(有界,无界),无缓冲;,直接通信方式模型,2.消息缓冲队列通信机制(直接通信),消息缓冲通信:是一种直接通信方式,一种可直接以较高的效率传递较多数据的信息交换方式,被广泛应用于本地进程之间的通信。 每当发送进程欲发送消息时,便形成一个消息缓冲区,其结构如下:,type message buffer=record sen

5、der;发送者进程标识符 size; 消息长度 text; 消息正文next; 指向下一个消息缓冲区的指针 end,消息缓冲区是内存中的一个区域,其中可以存放一条消息。 发送进程可以把消息填写到消息缓冲区中,并把该消息缓冲区插入到接收进程的消息链上,以待接收进程进行加工处理。,为此,PCB中还应该增加如下的数据项:1) mq :消息队列头指针,初值为空。 由于接收进程可能会收到几个进程发来的消息,故应将所有的消息缓冲区链成一个队列,其队头通过在接收进程PCB中设置队首指针mq来指出。,2) mutex :消息队列互斥信号量,初值为1。 消息队列属于临界资源,故在PCB中设置了互斥信号量mute

6、x,每当对消息链操作之前和结束操作之后,应在mutex上分别执行wait操作和signal操作。,3) sm :消息队列同步计数信号量(消息队列资源信号量)。初值为0。 当发送进程发来一个消息,在此信号量上执行signal(sm);而当接收进程从消息队列上欲取走一个消息时,先对信号量执行wait(sm),如果有消息,则从消息链中取走mq所指出的第一个消息。,发送进程在发送消息之前,应先在自己的内存空间设置一个发送区,把欲发送的消息正文以及接收进程标识符id和消息长度填入其中,然后用发送原语构造消息并把消息发送出去; 接收进程在接收消息之前,在本进程的内存空间中设置一个接收区,然后用接收原语接收

7、消息。,(1) 发送原语:send(receiver,a) a为发送区开始地址。 功能:把消息从发送区复制到消息缓冲区,并将它挂到接收进程消息队列的末尾。如果该接收者正因等待消息而处于阻塞状态,则唤醒该进程。,procedure send(receiver,a)begingetbuf(a.size,i);根据a.size(正文大小)申请缓冲区;i.sender:= a.sender; 将发送区a中的信息复制到消息缓冲区i中;i.size:=a.size;i.text:=a.text;i.next:=0;getid(PCB set,receiver.j);获得接收进程内部标识符;wait(j.m

8、utex); 封锁消息队列;insert(j.mq,i); 将消息缓冲区(i)插入消息队列(j);signal(j.mutex); 解锁消息队列;解锁消息队列signal(j.sm); j消息队列资源信号量加1;end,互斥访问,(2)接收原语:receive(b)b为接收区开始地址功能:查看(j)消息链中计数信号量(sm)来获知有待处理的消息否?若无,则接收进程插入消息链的阻塞队列;若有消息,则把消息链上的第一个消息摘下,将消息的内容复制到进程j的接收区b,然后,释放消息缓冲区。,procedure receive(b)beginj:= internal name; j为接收进程内部的标识符

9、;wait(j.sm);判断有无待处理的消息;如j.sm=0,则阻塞;否则继续执行;wait(j.mutex);remove(j.mq,i);将消息队列中第一个消息移出;j消息缓冲队列的队首signal(j.mutex);b.sender:=i.sender;将消息缓冲区i中的信息复制到接收区b;b.size:=i.size;b.text:=i.text;end,互斥访问,思考:mutex,sm是公有、私有信号量?,小结:,接收进程j消息缓冲队列,j的PCB中mq,j的PCB中sm表示数量,发送进程,Size:5Text:helloSender:A,发送区,拷贝,Size:5Text:hell

10、oSender:A,消息缓冲区i(内存),接收进程,Size:5Text:helloSender:A,接收区,摘下并拷贝,链接,3间接通信方式(信箱通信) 发送进程发消息时不指定接收进程的名字,需要借助于一个中间媒体,即信箱来进行,因此称之为间接通信方式。,1)信箱的数据结构 间接通信所利用的信箱是一种数据结构,它由信箱头和信箱体两部分组成。其中:信箱头是对信箱的描述,信箱头包括如下信息: 信箱标识符; 信箱大小; 已存放的信件数; 等信箱队列的首指针;( 若发送信件时信箱已满,则发送进程被置为“等信箱”状态,直到信箱有空时才被释放; 等信件队列的首指针;(若取信件时信箱中无信,则接收进程被置

11、为“等信件”状态,直到有信件时才被释放) ; 信箱体由若干格子组成,每一个格子可以存放一个信件。 信箱格子的大小和数量在信箱创建时确定。,2)信箱创建、撤消、消息发送、接收原语,信箱的创建和撤消。 信箱可以由操作系统创建,也可以由用户创建,创建者是信箱的拥有者。因此,可以根据创建者的不同将信箱分为私用信箱、公用信箱和共享信箱等类型。(2) 消息的发送和接收。 Send(mailbox,message): 将一个消息发送到指定信箱; Receive(mailbox,message): 从指定信箱中接收一个消息;,3)信箱分类,4)信箱通信发送和接收对应关系,发送,接收,专用:一对一;不干扰,发送

12、,接收,一对多;广播方式,发送,接收,多对一;C/S(客户/服务),发送,接收,多对多;公用信箱,进程通信小结: 1、共享存储器系统 基于共享数据数据结构方式:程序员负责; 基于共享存储区方式:OS负责;2、消息通信方式Message单位 直接通信方式:指名发送、接收者标识符。 Send、Receiver 原语; 有缓冲:消息缓冲队列通信机制;(重点) 间接通信方式:中介媒体 信箱通信: 信箱:信箱头、信箱体;创建、撤消、发送、接收、分类。 3、管道通信共享文件方式Unix系统 字符流输入、输出。,2.6线程,一、线程的基本概念,进程的概念和结构是传统操作系统工作的基础。但是,随着计算机体系结

13、构从早期的单处理机结构发展到目前的多处理机结构,在多任务的环境中,为了减少处理机的空转时间以及处理机调度切换时的时间和空间开销,提高系统的并行能力,因此产生了更小的控制单位:线程。,1线程的引入原因 进程独立性的两个基本属性: 资源分配的单位:给每个进程分配一虚拟地址空间,保存进程映像,控制一些资源(文件,I/O设备),有状态、优先级、调度。 调度单位:进程是一个执行轨迹。 以上两个属性构成进程并发执行的基础。 进程两个属性分开的原由: 1) 从CPU执行所必须的硬件现场来考察,只包含程序计数器、程序状态字、 执行堆栈、通用寄存器组等。PCB中的绝大多数表目与CPU执行程序代码是没有关系的。 2) 进程切换系统开销较大(数据和程序的地址空间)。 3)对进程系统必须完成的操作:创建进程;撤消进程; 进程切换; 缺点:时间空间开销大,限制并发度的提高。 在操作系统中,进程的引入提高了计算机资源的利用效率。但在进一步提高进程的并发性时,人们发现进程切换开销占的比重越来越大,同时进程间通信的效率也受到限制。 线程的引入正是为了简化进程间的通信,以小的开销来提高进程内的并发程度。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号