- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统02 process management
* 3. 进程同步方式 发送进程阻塞、 接收进程阻塞。 (2) 发送进程不阻塞、 接收进程阻塞。 (3) 发送进程和接收进程均不阻塞。 * 2.6.4 消息缓冲队列通信机制 1. 消息缓冲队列通信机制中的数据结构 (1) 消息缓冲区。在消息缓冲队列通信方式中,主要利用的数据结构是消息缓冲区。它可描述如下: type message buffer=record sender; 发送者进程标识符 size; 消息长度 text; 消息正文 next; 指向下一个消息缓冲区的指针 end * (2) PCB中有关通信的数据项 在PCB中应增加的数据项可描述如下: type processcontrol block=record … mq; 消息队列队首指针 mutex; 消息队列互斥信号量 sm; 消息队列资源信号量 … end 1. 消息缓冲队列通信机制中的数据结构 * procedure send(receiver, a) begin getbuf(a.size,i); 根据a.size申请缓冲区; i.sender∶ =a.sender; 将发送区a中的信息复制到消息缓冲区之中 i.size∶ =a.size; i.text∶ =a.text; i.next∶ =0; getid(PCB set, receiver.j); 获得接收进程内部标识符; wait(j.mutex); insert(j.mq, i); 将消息缓冲区插入消息队列; signal(j.mutex); signal(j.sm); end 2. 发送原语 * 2. 发送原语 * 3. 接收原语 procedure receive(b) begin j∶ =internal name; j为接收进程内部的标识符; wait(j.sm); wait(j.mutex); remove(j.mq, i); 将消息队列中第一个消息移出; signal(j.mutex); b.sender∶ =i.sender; 将消息缓冲区i中的信息复制到接收区b b.size∶ =i.size; b.text∶ =i.text; end * 补充四:Windows2000线程间通信 * Windows2000线程间通信 Windows 2000提供的线程间通讯类内核对象允许同一进程或跨进程的线程之间互相发送信息,包括文件、文件映射、邮件位和命名管道等,其中最常用的是文件和文件映射 * 文件对象 文件对象是人们所熟悉的永久存储的传统元素。 内核允许开发人员在系统设备或网络上创建代表永久存储数据块的文件对象。这些文件对象是对永久存储数据的低级访问者;用C++ 运行库或其他方法打开的所有文件最终都要变成对CreateFile() API的调用。 * 文件对象API API名称 功能描述 CreateFile() 创建文件内核对象,用于代表文件系统中新的或已经存在的大量数据 ReadFile() 从文件系统中的由文件对象句柄引用的文件发送数据。读操作开始于当前文件的指针位置,每读取一个字节,该位置增加 WriteFile() 从文件系统中的由文件对象句柄引用的文件发送数据。写操作开始于当前文件的指针位置,每写入一个字节,该位置增加 SetFilePointer() 将文件中的当前文件指针位置移动一个相对或绝对距离 SetEndOfFile() 将文件的终止记号移动到当前文件指针的位置 LockFile() 防止其他进程访问传递的文件内的一个区域 GetFileType() 决定传递的句柄是否引用磁盘文件、控制台或命名的管道 GetFileSizeEx() 提取64位的文件容量 G
文档评论(0)