请评论以下句子:
在没有rt补丁的标准Linux内核上,中断不能中断正在进行的系统调用。从硬盘中提取数据时,我们的机器无法停止工作的原因是,我们用于该操作的系统调用处于阻塞状态。阻塞表示一旦将请求发送到硬盘,它就会将进程状态更改为“阻塞”,并自愿放弃处理器时间。无法中断非实时内核上正在进行的系统调用。
这是我对主题的理解,但是我不确定它是否正确。
系统调用可以通过使用信号来中断,例如SIGINT
(由CTRL+生成C)SIGHUP
等。您只能通过通过PID与系统调用进行交互来中断它们,但是在使用Unix信号和kill
命令时。
@Alan问了以下后续问题:
中断系统调用的可能性是否与主线Linux内核中rt_patch的接受直接相关?
我的回复:
我会这样认为。在研究此问题时,我找不到能说/不能做的吸烟枪,这使我相信可以。
使我想到这一点的另一个数据点是,Unix内置的底层信号机制对于能够与进程进行交互是必不可少的。我不知道没有这些补丁的系统在没有信号使用能力的情况下如何运作。
顺便说一下,信号在过程级别上运行。我知道没有任何方法/ API可直接将中断注入系统调用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句