为什么在 Linux 中进行 I/O 是不间断的? [英] Why doing I/O in Linux is uninterruptible?

查看:27
本文介绍了为什么在 Linux 中进行 I/O 是不间断的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

What's the rationale behind it? What would the bad consequences be if a process doing I/O is allowed to handle signal?

推荐答案

现在我已经阅读了 Maurice Bach 的Unix 操作系统的设计"一书,让我自己回答这个问题.

Now that I've read the book "The Design of the Unix Operating Systems" by Maurice Bach, let me answer this question by myself.

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

In short, making I/O uninterruptible is for the purpose of making the I/O task finish ASAP, without being interfered by signals.

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

Some related knowledge that I gained from the book:

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

这篇关于为什么在 Linux 中进行 I/O 是不间断的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆