第二章_进程与并发控制 (2).ppt

2. 发送原语 发送进程在利用发送原语发送消息之前,应先在自己的内存空间,设置一发送区a,把待发送的消息正文、发送进程标识符、消息长度等信息填入其中,然后调用发送原语,把消息发送给目标(接收)进程。 发送原语首先根据发送区a中所设置的消息长度a.size来申请一缓冲区i,接着,把发送区a中的信息复制到缓冲区i中。为了能将i挂在接收进程的消息队列mq上,应先获得接收进程的内部标识符j,然后将i挂在j.mq上。 由于该队列属于临界资源, 故在执行insert操作的前后,都要执行wait和signal操作。 void send(receiver, a) getbuf(a.size,i); //根据a.size申请缓冲区; i.sender∶ =a.sender; // 将发送者标识符复制给i // 将发送区a中的信息复制到消息缓冲区之中; i.size∶ =a.size; copy(i.text,a.text); i.next∶ =0; getid(PCBset, receiver.j); 获得接收进程内部标识符; wait(j.mutex); insert(j.mq, i); 将消息缓

文档评论(0)

1亿VIP精品文档

相关文档