- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程和进程控线程进程互斥和同步死锁问题进程间通信处理
进程和进程控制 线程 进程互斥和同步 死锁问题 进程间通信 处理器调度 进程间通信(IPC)要解决的问题是进程间的信息交流 进程间通信的类型 共享存储区(shared memory) 管道(pipe) 消息(message) 套接字(socket) 进程间通信的类型 低级通信:只能传递状态和控制信息,包括进程互斥和同步所采用的信号量和管程机制。 优点:速度快。 缺点: 传送信息量小:效率低,每次通信传递的信息量固定,若传递较多信息则需要进行多次通信。 编程复杂:用户直接实现通信的细节,编程复杂,容易出错。 高级通信:能够传送任意数量的数据,包括:共享存储区、管道、消息、套接字。 直接通信和间接通信 直接通信:信息直接传递给接收方,如管道。 在发送时,指定接收方的地址或标识,也可以指定多个接收方或广播式地址; 在接收时,允许接收来自任意发送方的消息,并在读出消息的同时获取发送方的地址。 间接通信:借助于收发双方进程之外的共享数据结构作为通信中转,如消息队列。通常收方和发方的数目可以是任意的。 共享存储区(shared memory) Windows 采用文件映射机制实现共享存储区 采用文件映射机制。用户进程可以将整个文件映射为进程虚拟地址空间的一部分来加以访问。 与共享存储区的使用相关的系统调用: CreateFileMapping为指定文件创建一个文件映射对象,返回对象指针; OpenFileMapping打开一个命名的文件映射对象,返回对象指针; 使用CreateFileMapping和OpenFileMapping时可以指定对象名称。 MapViewOfFile把文件映射到本进程的地址空间,返回映射地址空间的首地址; 这时可利用首地址进行读写; FlushViewOfFile可把映射地址空间的内容写到物理文件中; UnmapViewOfFile解除文件映射与本进程地址空间间映射关系; CloseHandle关闭文件映射对象; 管道(pipe) 管道 管道 命名管道:一个服务器端与一个客户进程间的通信通道;可用于不同机器上进程通信; 类型分为:字节流,消息流(报文); 访问分为:单向读,单向写,双向; 通常采用client-server模式连接本机或网络中的两个进程 管道名字:作为客户方(连接到一个命名管道实例的一方)时,可以是\\serverName\pipe\pipename;作为服务器方(创建命名管道的一方)时,只能取serverName为\\.\pipe\PipeName,不能在其它机器上创建管道; 管道 与命名管道相关的主要系统调用: CreateNamedPipe在服务器端创建并返回一个命名管道句柄; ConnectNamedPipe在服务器端等待客户进程的请求; CallNamedPipe从管道客户进程建立与服务器的管道连接; ReadFile、WriteFile(用于阻塞方式)、ReadFileEx、WriteFileEx(用于非阻塞方式)用于命名管道的读写; 消息通常是不定长数据块。消息的发送不需要接收方准备好,随时可发送。 Windows 中的邮件槽(mailslot)是一种不定长、不可靠的单向消息机制,通常采用client-server模式 单向:从client发往server server负责创建邮件槽,它可从邮件槽中读消息;client可利用邮件槽的名字向它发送消息; 邮件槽名字:作为client(发送方)打开邮件槽时,可以是\\range\mailslot\[path]name,这里range可以是 .(local computer), computerName, domainName, *(primary domain); 作为server(接收方)只能在本机建立邮件槽,名字可为\\.\mailslot\[path]name; 有关的API: CreateMailslot服务器方创建邮件槽,返回其句柄; GetMailslotInfo服务器查询邮件槽的信息,如:消息长度、消息数目、读操作等待时限等; SetMailslotInfo服务器设置读操作等待时限; ReadFile服务器读邮件槽; CreateFile客户方打开邮件槽; WriteFile客户方发送消息; 在邮件槽的所有服务器句柄关闭后,邮件槽被关闭。这时,未读出的报文被丢弃,所有客户句柄都被关闭。 套接字(socket) 套接字是一种网络通信机制,它通过网络在不同计算机上的进程间进行双向通信。套接字所采用的数据格式可为可靠的字节流或不可靠的报文,通信模式可为client-server模式或peer-to-peer模式。 为了实现不同操作系统上的进程通信,需约定网络通信时不同层次的通信过程和信息格式,TCP/IP协
原创力文档


文档评论(0)