问题
问答题
管道通信的基本思想是什么UNIX操作系统在管道通信中是如何避免死锁的
答案
参考答案:
解析:管道通信以文件系统为基础在进程之间实现通信。管道,就是连接两个进程的一个打开的共享文件,该文件专门用于进程之间的通信。发送数据的进程从管道的一端把数据写入管道,接收数据的进程从另一端读出数据,就像一条传送数据的“管道”。管道通信实际上是利用外存来实现进程间的通信,所以具有数据传送量大的特点,但通信速度较慢。在管道的通信过程中,发送进程和接收进程要进行必要的同步与互斥,所以进程可能由于等待而产生死锁。 UNIX操作系统中采取以下措施来避免死锁: · 当进程需要读/写等待时,要检查管道的另一端是否已经关闭,如果发现对方已经关闭,则直接返回,不需要等待。 · 当进程需要关闭管道时,要检查管道的另一端是否正处于等待状态;如果是,则要先唤醒对方,然后再关闭管道。 这样进程就不会无休止地等待而发生死锁; 而且,管道通信又可分为无名管道和有名管道。无名管道用于父、子进程之间的通信,而有名管道的适用范围更广。进程无休止地等待不可能发生的事件是产生死锁的必要条件,破坏此条件就可以预防死锁。