下载此文档

第四章 进程间通信-管道和信号.ppt


文档分类:通信/电子 | 页数:约70页 举报非法文档有奖
1/70
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/70 下载此文档
文档列表 文档介绍
1 1 12 2 2 进程间通信- PIPE 进程间通信― FIFO 3 3 3 信号中断处理 1 ?进程通信有如下一些目的: A、数据传输:一个进程需要将它的数据发送给另一个进程, 发送的数据量在一个字节到几 M字节之间; B、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到; C、通知事件:一个进程需要向另一个或一组进程发送消息, 通知它(们)发生了某种事件(如进程终止时要通知父进程); D、资源共享:多个进程之间共享同样的资源。为了做到这一点,需要内核提供锁和同步机制; E、进程控制:有些进程希望完全控制另一个进程的执行(如 Debug 进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。 2017-1-18 2进程间通信的方式 linux 下的进程通信手段基本上是从 Unix 平台上的进程通信手段继承而来的。而对 Unix 发展做出重大贡献的两大主力 AT&T 的贝尔实验室及 BSD (加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对 Unix 早期的进程间通信手段进行了系统的改进和扩充,形成了“ system V IPC ”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口( socket )的进程间通信机制。 Linux 则把两者继承了下来, 其中,最初 Unix IPC 包括:管道、 FIFO 、信号; System V IPC 包括: System V 消息队列、 System V 信号量、 System V 共享内存区; Posix IPC 包括: Posix 消息队列、 Posix 信号量、 Posix 共享内存区。 2017-1-18 3 Linux 进程通信方式? linux 下进程间通信的几种主要手段简介: 1、管道( Pipe )及有名管道( named pipe ):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制, 因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信; 2、信号( Signal ):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身; linux 除了支持 Unix 早期信号语义函数 signal 外,还支持语义符合 标准的信号函数 sigaction 。 2017-1-18 4 Linux 进程通信方式 3、报文( Message )队列(消息队列):消息队列是消息的链接表。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。 4、共享内存:使得多个进程可以访问同一块内存空间,是最快的可用 IPC 形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。 5、信号量( semaphore ):主要作为进程间以及同一进程不同线程之间的同步手段。 2017-1-18 5 第四章进程间通信-管道和信号 1 1 12 2 2 进程间通信- PIPE 进程间通信― FIFO 3 3 3 信号中断处理 6管道管道的实质是一个内核缓冲区,进程以先进先出的方式从缓冲区中存取数据:管道一端的进程顺序地将数据写入缓冲区, 另一端的进程则顺序地读出数据。该缓冲区可以看作是一个循环队列,读和写的位置都是自动增加的,不能随意改变,一个数据只能被读一次,读出以后在缓冲区中就不复存在了。当缓冲区读空或写满时,有一定的规则控制相应的读进程或写进程是否进入等待队列;当空的缓冲区有新数据写入或满的缓冲区有数据读出时,就唤醒等待队列中的进程继续读写。 2017-1-18 7管道管道实际上以类似文件的方式与进程交互,但它并不与磁盘打交道,所以效率要比文件操作高很多。它有两个局限性: (1)支持半双工; (2)只有具有亲缘关系的进程之间才能使用这种无名管道; 使用管道的注意事项: ,在所有数据被读取之后, read 函数返回值为 0,以指示到了文件结束处; ,则产生 SIGPIPE 信号。如果忽略该信号或者捕捉该信号并处理程序返回,则 write 返回-1, errno 设置为 EPIPE 2017-1-18 8 管道示例?例如$ ls | more ?功能是将 ls命令的输出作为 more 命令的输入,并显示 more 的最终输出。这里 ls与 more 要由两个进程来完成。这两个进程的通信就通过父进程 shell 创建管道。 ls向管道输入数据, more 从管道读出数据

第四章 进程间通信-管道和信号 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数70
  • 收藏数0 收藏
  • 顶次数0
  • 上传人endfrs
  • 文件大小0 KB
  • 时间2016-04-27