linux - 为什么在 Linux 中做 I/O 是不间断的?

标签 linux process io linux-kernel sleep

背后的原理是什么?如果允许执行 I/O 的进程处理信号,会有什么不良后果?

最佳答案

既然我已经阅读了莫里斯·巴赫 (Maurice Bach) 的《The Design of the Unix Operating Systems》一书,那么让我自己来回答这个问题。

简而言之,让I/O不间断就是为了让I/O任务尽快完成,不受信号干扰。

我从书中得到的一些相关知识:

  1. “不间断”一词应指“不间断 sleep ”。当进程处于不可中断 sleep 状态时,它不能被信号唤醒,也不会处理信号。
  2. 进程在以下情况下处理信号:它正在内核模式下运行,即将返回用户模式。 b. sleep 可中断时即将进入和离开 sleep 状态。
  3. 当 sleep 进程被信号唤醒时会发生什么?它会处理信号,默认操作是退出进程。当进程等待 I/O 完成时,您当然不希望它过早退出。

关于linux - 为什么在 Linux 中做 I/O 是不间断的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46040913/

相关文章:

C#批处理文件执行永不退出

c - 从管道读取错误

java - 通过 UDP 发送 byte[] 导致 byte[] 值发生变化

java - java中filewriter的flush和close函数的区别

Python:大文件上的正则表达式。简单的方法?

linux - 在 Azure 中部署的 RHEL 7.2 中无法使用 Gnome 查看 GUI

linux - 对符号 'gdk_pixbuf_major_version' 的 undefined reference

linux - 如何确定设备内存的页框号?

linux - 可能有多少个套接字连接?

java - IllegalStateException : Not supported on AsyncContext. startAsync(请求,资源)