背后的理由是什么?如果允许进行I / O的进程处理信号,会产生什么不良后果?
答案 0 :(得分:3)
现在我已经读过Maurice Bach的“Unix操作系统的设计”一书,让我自己回答这个问题。
简而言之,使I / O不间断是为了尽快完成I / O任务,而不受信号的干扰。
我从这本书中获得的一些相关知识:
答案 1 :(得分:2)
根据Linux Developers Documentation,它是为了防止数据丢失并避免硬件进入不一致状态。
想象一下,如果read()
(例如来自磁盘)是可中断的,并且信号处理程序(除其他职责之外)改变了读缓冲区,可能会发生什么。由于信号是异步的,因此读取结果将不可再现。如果写作中断,就会发生类似的混乱。