网络操作系统 第三章_第1页
网络操作系统 第三章_第2页
网络操作系统 第三章_第3页
网络操作系统 第三章_第4页
网络操作系统 第三章_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

第三章网络os的通信3.1基于共享变量的通信方式适用于:网络中各节点主机内进程的通信。一.进程间的同步与互斥1.概念:.同步:合作进程间互通信息或互相等待的一种时序关系。.互斥:进程间不能同时使用某临界资源的排他性。.信号量:表示资源的整型变量,OS用它对进程和资源进行控制和管理。.见p79图3-22.P、V操作:定义在信号量S上的两个操作。

设进程PP,队列Q(等待S类资源的进程队列)

信号量:S>0:可用资源数

S<0:无资源,|S|表示等待该资源的进程数。.PP请求资源时执行:P(S):(1)S:=S-1;{资源数减一}(2)若S>=0则PP继续运行(3)若S<0则PP阻塞,入队Q.PP释放资源时执行:V(S):(1)S:=S+1;{资源数加一}(2)若S>0则PP继续运行(3)若S<=0则唤醒Q中的第一个等待者,PP继续运行第三章网络os的通信3.利用信号量S实现进程间同步

.进程间的同步模型:初始S=0

进程P1进程P2L1:P(S)L2:V(S)……

(P1受P2制约,故为非对称同步)例:生产者、消费者问题4.利用信号量S实现进程间互斥初值:S=1(临界资源数)模型:进程P1进程P2P(S)P(S)

临界区1临界区2

V(S)V(S)例:进程P1、P2共享一变量count(临界软件资源),初始count=0,信号灯s=1。CobeginProcessp1:processp2:r1:register;r2:register;BeginP(s);beginP(s);r1:=r1+1;r2:=count;count:=r1;r2+r2+1;V(S);count:=r2;endV(S);Coend;end

例:P82

第三章网络os的通信.P、V操作的不足:程序复杂,不易理解,进程间通讯效率低。二.消息缓冲通讯1.低级通讯原语:P,V操作2.高级通讯原语:.消息缓冲区:进程间通讯的一个基本单位(包括:发送进程标识符Sender,消息长度Size,消息正文Text,指向下一缓冲区的指针Next。即发送区、接收区内容).消息缓冲队列:(见右图)(消息缓冲队列属临界资源).2.进程通讯原语.发送原语Send(receiver,addr):将要发送的消息从发送区复制到消息缓冲区,并把它挂在接收进程的消息缓冲队尾。若该接收进程因等待消息而处于阻塞状态,则将其唤醒。接收原语Receive(addr):将发送者发来的消息从消息缓冲区复制到接收区,然后从队列中删去该消息缓冲区,若无消息可接收,则接收进程进入阻塞状态。

接收进程PCB…mqmutexsm缓冲区1第三章网络os的通信3.进程间用消息缓冲方式通信的过程:

进程A:(1)建立发送区a,置发送内容。(2)调Send(B,a)发送:①根据原语参数找到B的PCB,调内存分配程序获消息缓冲区X;②执行P(mutex),若mutex=0,则由进程B的PCB中队首指针mq,在队列中找到最后一个消息区,将X加入队尾后将发送区内容复制到X,置其next为0,最后执行V(mutex)和V(sm)。

进程B:(1)设置接收区b(2)调receive(b):①执行P(sm),若sm<0,则队列空无消息,阻塞进程;若sm>=0,执行P(mutex),若允许用队列,则由B的PCB中的mq找到队列中的第一个消息缓冲区,将其从队列中移出,并修改mq使之指向下一个消息,再执行V(mutex);②将消息从缓冲区复制到接收区,最后释放缓冲区。

第三章网络os的通信三.信箱通讯1.信箱通信过程系统中任一进程(或用户)想接收其它进程(或用户)发来信件,需:(1)为自己创建一信箱,以接收其它进程发来的信件(也可将自己的信件发送给具有信箱的进程)。(2)利用发送(send)和接收(receive)通信原语实现进程间互相通信。

进程间通信过程:设:进程A向进程B发送消息

进程A:将消息组成一信件,调send原语向B发送,并将信件投入B的信箱。

进程B:调receive原语从信箱中取信件;进行必要处理(或服务),将结果组成一信件发送回去。进程A:索取回信。第三章网络os的通信进程利用信箱方式的通信图示:见:p85图3-42.信箱数据结构:信箱:是一种数据结构,用于存放信件,由信箱头(信箱的描述部分)和信箱体(若干放信件的格子)组成。信箱的数据结构:见右图

信箱名:boxname信箱大小:boxsize已存信件数:mesnum空格子数:fromnum满信件1满信件2空格子……..格式:receive(boxname,msg)功能:从boxname信箱取一封信存入msg指示的区域。收发关系:1:1,1:mm:14.原语的实现:见P863.发送、接收原语:格式:send(boxname,msg)

功能:将msg指向的消息放入名为boxname的信箱。3.2基于消息传递的通信方式

一.通信机制

.核心:通信原语(

发送原语,接收原语)

.基本思想:用C/S模式构造一组相互合作的通信进程。

二.客户与服务器间的通信过程

客户/服务器模式通常基于一个简单的无连接的请求应答协议。见P90图3--13--83--9三.一个客户/服务器例子:P88.服务器进程:执行一个无限循环:(1)等待,直到收到客户进程发来的消息m1。(2)分析收到的消息,根据请求服务的类型进行不同的处理.若为错误请求则返回“未定义的操作请求”。(3)将操作结果(及返回码)组成返回信息m2,返回客户进程.进入准备接受下一消息的状态。.客户进程:(复制文件:每次从源文件读一块1KB,然后将该块写入目标文件,重复,直到复制完成)进程A进程B发收同步

3.2基于消息传递的通信方式

步骤:

(1)构造从源文件读一块的消息m1,将m1发送给服务器进程。(2)等待应答,直到服务器发来的结果消息m2将其唤醒。(3)构造在目标文件写一块的消息m1,将m1发送给服务器进程。(4)等待应答,直到服务器发来的结果消息m2将其唤醒。(5)修改读/写位置,若复制完则结束,否则返回(1)。四.发送原语和接收原语发送原语:Send(dest,&mptr)

功能:将mptr指向的消息发给标识符为dest的进程。接收原语:Receive(addr,&mptr)

功能:调用该原语的进程等待,直到有消息到达,将收到的消息存入mptr指向的缓冲区。?Addr:接收进程的网络地址接收的消息由谁发来的:由消息本身的“发送者标识符”知。服务器请求客户1客户n客户2等待某消息Receive(file-server,&m1)Receive(client,&m1)接收服务器应答第三章网络os的通信3.2基于消息传递的通信方式

五.通信协议

通信协议:通信双方共同遵守的规则、约定。

温馨提示

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

评论

0/150

提交评论