进程通信进程间通信考研计算机考研.ppt_第1页
进程通信进程间通信考研计算机考研.ppt_第2页
进程通信进程间通信考研计算机考研.ppt_第3页
进程通信进程间通信考研计算机考研.ppt_第4页
进程通信进程间通信考研计算机考研.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

School of Management Tianjin University,进程通信,2.6 进程通信 1 信号通信机制 2 共享文件通信机制 3 共享存储区通信机制 4 消息传递通信机制 5 有关消息传递实现的若干问题,School of Management Tianjin University,进程通信,进程同步是一种进程通信,通过修改信号量,进程之间可建立起联系,相互协调运行和协同工作 进程协同工作时,需要互相交换信息,有些情况下进程间交换的少量信息,有些情况下进程间交换大批数据。 进程之间互相交换信息的工作称为进程通信IPC(InterProcess Communication),School of Management Tianjin University,进程通信,进程间通信的方式 信号(signal)通信机制; 共享存储区(shared memory)通信机制; 共享文件(shared file)通信机制; 消息传递(message passing)通信机制,School of Management Tianjin University,进程通信,信号(signal)通信机制 低级通信:进程之间控制信息的交换称为低级通信。 一般只传送一个和几个字节的信息,达到控制进程执行速度的作用。(进程的同步和互斥)信号量机制作为同步工具是卓有成效的,但作为通讯工具则不够理想,(效率低。通讯对用户不透明。) 高级通信:用户可以直接利用操作系统所提供的一组通信命令,高效地传送大量数据的一种通信方式。,School of Management Tianjin University,进程通信,共享存储区(shared memory)通信机制 相互通讯的进程通过共享数据结构和存储区进行通讯,因而可进一步分为: 基于共享数据结构的通讯方式;(低效,只适于传递少量数据) 基于共享存储区的通讯方式。为了传送大量数据,在存储区中划出一块共享存储区,诸进程可通过对共享存储区进行读或写数据实现通讯。,School of Management Tianjin University,进程通信,向系统申请共享存储区中的一个分区 指定该分区的关键字 申请者将申请到的共享分区挂到本进程上 读写该公用存储分区,School of Management Tianjin University,进程通信,共享文件(shared file)通信机制 管道(pipeline)是连接读写进程的一个特殊文件,允许进程按先进先出方式传送数据,也能使进程同步执行操作。 发送进程以字符流形式把大量数据送入管道,接收进程从管道中接收数据,所以叫管道通信,School of Management Tianjin University,进程通信,管道的实质是一个共享文件,基本上可借助于文件系统的机制实现,包括(管道)文件的创建、打开、关闭和读写 进程对通信机构的使用应该互斥,一个进程正在使用某个管道写入或读出数据时,另一个进程就必须等待 发送者和接收者双方必须能够知道对方是否存在,如果对方已经不存在,就没有必要再发送信息,School of Management Tianjin University,进程通信,管道长度有限,发送信息和接收信息之间要实现正确的同步关系,当写进程把一定数量的数据写入pipe,就去睡眠等待,直到读进程取走数据后,把它唤醒。,School of Management Tianjin University,进程通信,消息传递通信的实现方法 采用消息传递机制后,一个正在执行的 进程可在任何时刻向另一个正在执行的进程 发送消息;一个正在执行的进程也可在任何 时刻向正在执行的另一个进程请求消息 一个进程在某一时刻的执行依赖于另一 进程的消息或等待其他进程对发出消息的回 答,那么,消息传递机制紧密地与进程的阻 塞和释放相联系,School of Management Tianjin University,进程通信,直接通信 发送或接收消息的进程必须指出信件发给谁或从谁那里接收消息直接通信 原语send(P,消息):把一个消息发送给进程P 原语receive(Q,消息):从进程Q接收一个消息,School of Management Tianjin University,进程通信,间接通信 进程间发送或接收消息通过信箱进 行,消息可被理解成信件 原语send(A,信件):把一封信件(消息)传送到信箱A 原语receive(A,信件):从信箱A接收一封信件(消息),School of Management Tianjin University,进程通信,间接通信的实现信箱 信箱是存放信件的存储区域,每个信箱可分成信箱特征和信箱体两部分。 信箱特征指出信箱容量、信件格式、指针等;信箱体用来存放信件 信箱可由OS创建,也可由用户进程创建,创建者是信箱的拥有者,据此可把信箱分为:私用信箱,公用信箱,共享信箱。,School of Management Tianjin University,进程通信,发送信件: 如果指定信箱未满,则将信件送入信箱中由指针所指示的位置,并释放等待该信箱中信件的等待者;否则发送信件者被置成等待信箱状态 接收信件: 如果指定信箱中有信,则取出一封信件,并释放等待信箱的等待者,否则接收信件者被置成等待信箱中信件的状态,School of Management Tianjin University,进程通信,type box=record size:integer; /*信箱大小*/ count:integer; /*现有信件数*/ letter:array1n of message; /*信箱*/ S1,S2:semaphore; /*等信箱和等信件信号量*/ end,School of Management Tianjin University,进程通信,在利用信箱通信时,在发送进程和接收进程之间,存在着四种关系: 一对一关系:即可以为发送进程和接收进程建立一条专用的通信链路; 多对一关系:允许提供服务的进程与多个用户进程进行交互,也称客户/服务器交互; 一对多关系:允许一个发送进程与多个接收进程交互,使发送进程用广播的形式,发送消息; 多对多关系:允许建立一个公用信箱,让多个进程都能向信箱投递消息,也可取走属于自己的消息。,School of Management Tianjin University,进程通信,消息传递系统实现中的若干问题 信箱容量问题 多进程与信箱相连的信件接收问题 信箱的所有权问题 信件的格式问题 通信进程并行性问题,School of Management Tianjin University,进程通信,消息缓冲队列通信机制 sender:发送消息的进程名或标识符 size:发送的消息长度 text:发送的消息正文 next-ptr:指向下一个消息缓冲区的指针 在进程的PCB中涉及通信的数据结构: mptr:消息队列队首指针 mutex:消息队列互斥信号量, 初值为1 sm:表示接收进程消息队列上消息的个数,初值为0,是控制收发进程同步的信号量,School of Management Tianjin University,进程通信,发送原语send: 申请一个消息缓冲区,把发送区内容复制到这个缓冲区中;找到接收进程的PCB,执行互斥操作P(mutex) ;把缓冲区挂到接收进程消息队列的尾部,执行V(sm) 、即消息数加1;执行V(mutex),School of Management Tianjin University,进程通信,接收原语 receive: 执行P(sm) 查看有否信件;执行互斥操作P(mutex) ,从消息队列中摘下第一个消息,执行V(mutex) ;把消息缓冲区内容复制到接收区,释放消息缓冲区,School of Management Tianjin University,进程通信,接收进程名:Q 信件长:5c 正文: ABCDE,Send(发送区首址),发送区,消息队列首指针,mutex,sm,发送进程名:P 信件长:5 正文:ABCDE,后继信件 缓冲指针,0,进程Q的PCB,发送进程名:P 信件长:5 正文: ABCDE,receive(接收区首址),接收区,进程P,进程Q,School of Management Tianjin University,线程,2.7 线 程 简 介 引入 进程是一个资源的拥有者,在创建,撤消和切换中系统为之付出较大开销: 进程切换开销大、进程通信代价大、进程之间的并发性粒度较粗,并发度不高,不适合并行计算和分布并行计的要求、不适合客户/服务器计算的要求 如何使多个程序并发执行同时又尽量减少系统开销?,School of Management Tianjin University,线程,线程的基本概念 操作系统中引入进程的目的是为了使多个程序并发执行,以改善资源使用率和提高系统效率, 操作系统中再引入线程,则是为了减少程序并发执行时所付出的时空开销,使得并发粒度更细、并发性更好 把进程的两项功能“独立分配资源”与“被调度分派执行”分离开来,School of Management Tianjin University,线程,进程作为系统资源分配和保护的独立单位,不需要频繁地切换; 线程作为系统调度和分派的基本单位,能轻装运行,会被频繁地调度和切换,在这种指导思想下,产生了线程的概念 线程是操作系统进程中能够独立执行的实体(控制流),是处理器调度和分派的基本单位。线程是进程的组成部分,每个进程内允许包含多个并发执行的实体(控制流),这就是多线程,School of Management Tianjin University,线程,线程的状态 状态参数:线程标志符和一组状态参数:寄存器状态,堆栈,线程运行状态,优先级,线程专有存储器,信号屏蔽 线程运行状态 执行状态,就绪状态,阻塞状态 挂起状态对线程是没有意义的,如果进程挂起后被对换出主存,则它的所有线程因共享了进程的地址空间,也必须全部对换出去,School of Management Tianjin University,线程,线程的创建和终止 初始化线程调用线程创建函数去创建若干个线程 被终止未释放资源的线程可以被需要的线程调用,使它重新恢复运行 线程间的同步和通信(参见书PP63) 线程的实现内核支持线程和用户级线程,School of Management Tianjin University,线程,内核支持线程 纯内核级线程设施中,线程管理的所有工作由操作系统内核做。内核专门提供KLT API,应用程序区不需要有线程管理代码。Windows NT 和 OS/2都是采用这种方法的例子,School of Management Tianjin University,线程,线程执行中可通过内核创建线程原语来创建其他线程,这个应用的所有线程均在一个进程中获得支持。 内核要为整个进程

温馨提示

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

评论

0/150

提交评论