linux操作系统分析13942

linux操作系统分析13942

ID:24390151

大小:187.00 KB

页数:38页

时间:2018-11-14

linux操作系统分析13942_第1页
linux操作系统分析13942_第2页
linux操作系统分析13942_第3页
linux操作系统分析13942_第4页
linux操作系统分析13942_第5页
资源描述:

《linux操作系统分析13942》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux操作系统分析主讲:陈香兰助教:贾永泉、毛熠璐xlanchen@ustc.edu.cn3606864-83(西区电三421)Autumn2007进程间同步和通信xlanchen@2007.10.25进程间通信IPC,Inter-ProcessCommunicationUnix系统提供的基本的IPC包括:1、管道和FIFO(有名管道)2、消息3、信号量4、共享内存区5、套接字xlanchen@2007.10.253LinuxOperatingSystemsanalysis1、管道(pipe)管道是所有Unix都提供的一种IPC机制管道是半双工的,数据只能向一个方向流动;一个进程将数据写

2、入管道, 另一个进程从管道中读取数据数据的读出和写入: 写入的内容每次都添加在管道缓冲区的末尾, 每次都是从缓冲区的头部读出数据。需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);xlanchen@2007.10.254LinuxOperatingSystemsanalysis在shell中使用管道的例子命令:“ls

3、more”使用pipeline“

4、”将两个命令”ls”和“more”连接起来,使得ls的输出成为more的输入也可以使用如下的两个命令命令1:“ls>tmp”命令2:”more

5、more的输入重定向到tmp文件xlanchen@2007.10.255LinuxOperatingSystemsanalysis创建一个管道管道可看成是被打开的文件,但并没有真实的 文件与之对应pipe()系统调用用来创建一个新的管道#includeintpipe(intfiledes[2]);管道两端分别用描述符filedes[0]和filedes[1]描述管道两端的功能是固定的:filedes[0]只能用于读,称为管道读端;filedes[1]只能用于写,称为管道写端。若试图从写端读,或者向读端写都将导致错误发生。一般文件的I/O函数都可用于管道,如close、re

6、ad、write等。xlanchen@2007.10.256LinuxOperatingSystemsanalysis使用管道的典型程序testpipe.c管道只能在具有亲缘关系的进程之间进行通信通过fork传递管道的描述符任意的两个进程不可能共享同一个管道无法打开已经存在的管道xlanchen@2007.10.257LinuxOperatingSystemsanalysisFIFO管道的一个重大限制是它没有名字,因此 只能用于具有亲缘关系的进程间通信,在 有名管道(namedpipe或FIFO)提出后, 该限制得到了克服。FIFO,有名管道特殊的文件类型:1,严格遵循先入先出的读写规则2,

7、类似管道,在文件系统中不存在数据块,而是与一块内核缓冲区相关联3,有名字,FIFO的名字包含在系统的目录树结构中,可以按名访问xlanchen@2007.10.258LinuxOperatingSystemsanalysisFIFO的操作:以及:open,close,read,write等普通文件操作xlanchen@2007.10.259LinuxOperatingSystemsanalysisFIFO举例创建一个FIFO:createfifo.c向FIFO写:writefifo.c从FIFO读:readfifo.cxlanchen@2007.10.2510LinuxOperatingSy

8、stemsanalysiscreatefifo.cxlanchen@2007.10.2511LinuxOperatingSystemsanalysiswritefifo.cxlanchen@2007.10.2512LinuxOperatingSystemsanalysisreadfifo.cxlanchen@2007.10.2513LinuxOperatingSystemsanalysis2、消息队列消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以按照一定的规则向消息队列添加新消息; 对消息队列有读权限的进程则可以从消息队列中读

9、走消息。xlanchen@2007.10.2514LinuxOperatingSystemsanalysis消息队列的创建intmsgget(key_tkey,intmsgflg)根据给定的键值,返回对应的消息队列若能找到,则返回已有的;否则,创建一个新的xlanchen@2007.10.2515LinuxOperatingSystemsanalysis发送消息intmsgsnd(intmsqid,//目标消

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。