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

查看:889
本文介绍了为什么在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. 进程在以下情况下处理信号:a。它在内核模式下运行,即将返回用户模式。湾当睡眠中断时,它即将进入和离开睡眠状态。

  3. 当睡眠过程被信号唤醒时会发生什么?它将处理信号,默认操作正在退出进程。当进程等待I / O完成时,您当然不希望它过早退出。

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

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