“synchronized I/O”是否总是意味着“阻塞 I/O”?

3
我对“同步/异步I/O”和“阻塞/非阻塞I/O”感到困惑。我认为,“同步I/O”总是指像读取/写入这样的阻塞操作,因此它们是“同步I/O”。请帮忙纠正!
1个回答

4
"异步"或"非阻塞" I/O确实是有效的同义词。但是,如果我们使用Linux术语,“阻塞”和“同步”I/O是不同的。
"阻塞"只是告诉您系统调用在内核记录数据之前不会返回... 在意外断电或硬件故障的情况下,无法保证此记录是持久的。例如,它可以仅是一个预写缓存 - 因此,您的阻塞调用可能会在其他正在运行的进程可以查看写入的点处返回,但如果发生电源故障,则该写入将会丢失。
O_SYNC 的意义上,“同步”表示系统调用要等到数据 实际保存到硬件时才会返回。
因此:所有同步I/O都是阻塞的,但并非所有阻塞I/O都是同步的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接