简答题

使用异步通信原语时,发送者在消息发送完成以前为什么不能使用缓冲区?该如何解决?

正确答案

因为倘若发送进程在消息发送完成之前,即在消息发送期间使用或修改原来的缓冲区,将会造成错误。
有两种办法解决(应采用异步原语):
①采用带拷贝的非阻塞原语,即让内核把消息拷贝到内核缓冲区,允许调用进程继续运行。
②带中断的非阻塞发送,即当消息发送完成后,中断发送进程,通知发送进程此时缓冲区可用。

答案解析

相似试题
  • 在消息缓冲通信方式中,发送原语和接收原语的主要功能是什么?

    简答题查看答案

  • 消息发送原语中一般要包含要发送消息的内存指针和()

    单选题查看答案

  • 消息缓冲通信时,当发送者要发信息时,执行send系统调用命令,产生()进入操作系统核心。

    填空题查看答案

  • 实现在一个操作下将一个消息发送给多个接收者的通信机制称之为()的机制。

    填空题查看答案

  • 什么是同步通信原语和异步通信原语?

    简答题查看答案

  • 对于同步通信原语而言,进行调用send原语将消息发出后便处于()状态。

    填空题查看答案

  • 请描述什么是同步原语、异步原语。

    简答题查看答案

  • 什么是低级通信原语和高级通信原语?

    简答题查看答案

  • 信箱通信机制中有哪些基本通信原语?

    简答题查看答案