进程通信.ppt

上传人:本田雅阁 文档编号:3174719 上传时间:2019-07-20 格式:PPT 页数:34 大小:170.52KB
返回 下载 相关 举报
进程通信.ppt_第1页
第1页 / 共34页
进程通信.ppt_第2页
第2页 / 共34页
进程通信.ppt_第3页
第3页 / 共34页
进程通信.ppt_第4页
第4页 / 共34页
进程通信.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《进程通信.ppt》由会员分享,可在线阅读,更多相关《进程通信.ppt(34页珍藏版)》请在三一文库上搜索。

1、3.5 进程通信,3.5.1 信号通信机制 3.5.2 共享文件通信机有制 3.5.3 共享存储区通信机制 3.5.4 消息传递通信机制 3.5.5 有关消息传递实现的若干问题,进程通信概念(1),并发进程之间的交互必须满足两个基本要求:同步和通信。 进程竞争资源时要实施互斥,互斥是一种特殊的同步,实质上需要解决好进程同步问题, 进程同步是一种进程通信,通过修改信号量,进程之间可建立起联系,相互协调运行和协同工作。,进程通信概念(2),进程协同工作时,需要互相交换信息,有些情况下进程间交换的少量信息,有些情况下进程间交换大批数据。 进程之间互相交换信息的工作称为进程通信IPC(InterPro

2、cess Communication)。,进程间通信的方式(1),信号(signal)通信机制; 共享存储区(shared memory)通信机制; 共享文件(shared file)通信机制; 消息传递(message passing)通信机制。,进程间通信的方式(2),低级通信机制,适用于集中式操作系统 高级通信机制,既适用于集中式操作系统,又适用于分布式操作系统,3.5.1 信号通信机制,信号机制又称软中断,一种简单的通信机制,通过发送一个指定信号来通知进程某个异常事件发生。 信号不但能从内核发给一个进程,也能由一个进程发给另一个进程。,UNIX系统信号分成以下几类(1),与进程终止相关

3、的信号SIGCLD、SIGHUP、SIGKILL、SIGCHLD等,如进程结束、进程杀死子进程,; 与进程例外事件相关的信号SIGBUS、SIGSEGV、SIGPWR、SIGFPE等,如进程执行特权指令、写只读区、地址越界、总线超时,硬件故障; 与进程执行系统调用相关的信号SIGPIPE、SIGSYS、SIGILL等,如进程执行非法系统调用、管道存取错;,UNIX系统信号分成以下几类(2),与进程终端交互相关的信号SIGINT、SIGQUT等,如进程挂断终端、用户按delete键或break健。 用户进程发信号SIGTERM、SIGALRM、SIGUSR1、SIGUS2等,如进程向另一进程发一

4、个信号、要求报警; 跟踪进程执行的信号SIGTRAP等。,UNIX软中断机制,具有以下功能:软中断信号的发送,软中断信号的响应和软中断信号的处理。 信号发送工作由系统调用kill完成 信号响应使用系统调用signal完成 信号的处理过程,3.5.2 共享文件通信机制(1),管道(pipeline)是连接读写进程的一个特殊文件,允许进程按先进先出方式传送数据,也能使进程同步执行操作。 发送进程以字符流形式把大量数据送入管道,接收进程从管道中接收数据,所以叫管道通信。 管道的实质是一个共享文件,基本上可借助于文件系统的机制实现,包括(管道)文件的创建、打开、关闭和读写。,共享文件通信机制(2),读

5、写进程相互协调,必须做到: 进程对通信机构的使用应该互斥,一个进程正在使用某个管道写入或读出数据时,另一个进程就必须等待。 发送者和接收者双方必须能够知道对方是否存在,如果对方已经不存在,就没有必要再发送信息。,共享文件通信机制(3),管道长度有限,发送信息和接收信息之间要实现正确的同步关系。 write阻塞。 read阻塞。,共享文件通信机制(5),共享文件通信机制(6),3.5.3 共享存储区通信机制,与共享存储有关的系统调用, shmget(key,size,permflags) shmat(shm-id,daddr,shmflags) shmdt(memptr) shmctl(shm-

6、id,command,&shm-stat),3.5.4消息传递(1),什么是消息传递(message passing)? 消息和消息传递机制 基本的消息传递原语send ,receive,消息传递(2), 采用消息传递机制后,一个正在执行的进程可在任何时刻向另一个正在执行的进程发送消息;一个正在执行的进程也可在任何时刻向正在执行的另一个进程请求消息。,消息传递(3), 一个进程在某一时刻的执行依赖于另一进程的消息或等待其他进程对发出消息的回答,那么,消息传递机制紧密地与进程的阻塞和释放相联系。消息传递就进一步扩充了并发进程间对数据的共享,提供了进程同步的能力。,直接通信,发送或接收消息的进程必

7、须指出信件发给谁或从谁那里接收消息 原语send(P,消息):把一个消息发送给进程P 原语receive(Q,消息):从进程Q接收一个消息,间接通信(1),进程间发送或接收消息通过信箱进行,消息可被理解成信件 原语send(A,信件):把一封信件(消息)传送到信箱A 原语receive(A,信件):从信箱A接收一封信件(消息),间接通信(2) 间接通信的实现(1),信箱是存放信件的存储区域,每个信箱可分成信箱特征和信箱体两部分。 信箱特征指出信箱容量、信件格式、指针等;信箱体用来存放信件,间接通信(3) 间接通信的实现(2),发送信件: 如果指定信箱未满,则将信件送入信箱中由指针所指示的位置,

8、并释放等待该信箱中信件的等待者;否则发送信件者被置成等待信箱状态 接收信件: 如果指定信箱中有信,则取出一封信件,并释放等待信箱的等待者,否则接收信件者被置成等待信箱中信件的状态,间接通信(4),type box=record size:integer; /*信箱大小*/ count:integer; /*现有信件数*/ letter:array1n of message; /*信箱*/ S1,S2:semaphore; /*等信箱和等信件信号量*/ end,间接通信(6),procedure send(varB:box,M:message) var I:integer; begin if B

9、.count=B.size then W(B.s1); i:=B.count+1; B.letteri:=M; B.coumt:=I; R(B.S2) end;send,间接通信(6),procedure receive(varB:box,x:message) var i:integer; begin if B.count=0 then W(B.s2); B.count:=B.count-1; x:=B.letter1; if B.count not=0 then for i=1 to b.count do B.letteri:=B.letteri+1; R(B.S1); end;receiv

10、e,3.5.5 有关消息传递实现的若干问题,信箱容量问题 多进程与信箱相连的信件接收问题 信箱的所有权问题 信件的格式问题 通信进程并行性问题,消息缓冲通信涉及的数据结构,sender:发送消息的进程名或标识符 size:发送的消息长度 text:发送的消息正文 next-ptr:指向下一个消息缓冲区的指针 在进程的PCB中涉及通信的数据结构: mptr:消息队列队首指针 mutex:消息队列互斥信号量, 初值为1 sm:表示接收进程消息队列上消息的个数,初值为0,是控制收发进程同步的信号量,消息缓冲通信过程,UNIX的消息传递机制(1),消息缓冲池和消息缓冲区(msgbuf),前者包含消息缓

11、冲池大小和首地址;后者除存放消息正文外,还有消息类型字段。 消息头结构和消息头表 ,消息头表是由消息头结构组成的数组。消息头结构包含消息类型、消息正文长度、消息缓冲区指针和消息队列中下一个消息头结构的链指针。,UNIX的消息传递机制(2),消息队列头结构和消息队列头表,由于可有多个消息队列,于是对应每个消息队列都有一个消息队列头结构, 消息队列头表是由消息队列头结构组成的数组。 消息队列头结构包括:指向队列中第一个消息的头指针、指向队列中最后一个消息的尾指针、队列中消息个数、队列中消息数据的总字节数、队列允许的消息数据最大字节数、最近一次发送/接收消息进程标识和时间。,UNIX的消息传递机制(3),信件的格式问题和其他有关问题,单机系统中信件的格式可以分直接信件(又叫定长格式)和间接信件(又叫变长格式)。 网络环境下的信件格式较为复杂,通常分成消息头和消息体,前者包括了发送者、接收者、消息长度、消息类型、发送时间等各种控制信息;后者包含了消息内容。,通信进程的同步问题,常用的组合有: 阻塞型send和阻塞型receive 非阻塞型send和阻塞型receive 非阻塞型send和非阻塞型receive,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1