题63

题目

[!error]+
Q:【2014 统考真题】下列关于管道 (Pipe) 通信的叙述中, 正确的是 ( )。
A. 一个管道可实现双向数据传输
B. 管道的容量仅受磁盘容量大小限制
C. 进程对管道进行读操作和写操作都可能被阻塞
D. 一个管道只能有一个读进程或一个写进程对其操作

分析

[!NOTE]+
A:我记得,管道是单相的,要想双向通信,需要两个管道。管道实现良好的调度,是依靠,一个进程读,多个进程写,来防止,读到不是自己的东西。我感觉这就没有正确的了,非要选的话,我觉得是D,好的,选错了

[!done]+
C
普通管道只允许向通信, 数据只能往一个方向流动, 要实现双向数据传输, 就需要定义两个方向相反的管道, A 错误。
管道一种存储在内存中的、固定大小缓冲区, 管道的大小通常为内存的一页, 其大小并不是受磁盘容量大小的限制, B 错误。
由于管道的读/写操作都可能遇到缓冲区满或空的情况, 当管道满时, 写操作会被阻塞, 直到有数据读出; 而当管道空时, 读操作会被阻塞,直到有数据写入,因此 正确。
一个管道可以有多个读进程或多个写进程对其进行操作, 但是这会增加数据竞争和混乱的风险, 为了避免这种情况, 应使用互斥锁或信号量等同步机制来保证每次只有一个进程对管道进行读或写操作, D 错误。