gpt4 book ai didi

linux - 什么是可重入内核

转载 作者:IT王子 更新时间:2023-10-29 00:14:13 29 4
gpt4 key购买 nike

什么是可重入内核?

最佳答案

更简单的答案:

内核重入

如果内核是不可重入的,则进程只能在处于用户态时被挂起。尽管它可以在内核模式下挂起,但这仍然会阻止所有其他进程在内核模式下执行。这样做的原因是所有内核线程共享相同的内存。如果执行在它们之间任意跳转,则可能会发生损坏。

可重入内核使进程(或者更准确地说,它们对应的内核线程)能够在内核模式下放弃 CPU。它们不会阻止其他进程也进入内核模式。一个典型的用例是 IO 等待。该进程想要读取一个文件。它为此调用了一个内核函数。在内核函数内部,磁盘 Controller 被请求数据。获取数据需要一些时间,并且该功能在此期间被阻止。对于可重入内核,调度程序会将 CPU 分配给另一个进程(内核线程),直到来自磁盘 Controller 的中断指示数据可用并且我们的线程可以恢复。这个进程仍然可以访问 IO(需要内核函数),比如用户输入。系统保持响应并减少因 IO 等待而导致的 CPU 时间浪费。

这几乎是当今桌面操作系统的标准。

内核抢占

内核抢占对系统的整体吞吐量没有帮助。相反,它寻求更好的响应能力。

这里的想法是,通常内核函数只会被硬件原因中断:外部中断或 IO 等待情况,它会自愿将控制权交给调度程序。抢占式内核也会中断和挂起内核函数,就像它会在用户模式下中断进程一样。该系统响应更快,因为过程例如处理鼠标输入,即使在内核内部完成繁重的工作时也会被唤醒。

内核级别的抢占使内核开发人员的工作变得更加困难:内核功能不能仅自愿或由中断处理程序(在某种程度上是受控环境)暂停,而且由于调度程序,也不能由任何其他进程暂停。必须注意,例如避免死锁:一个线程锁定资源 A 但需要资源 B 被另一个锁定资源 B 但随后需要资源 A 的线程中断。

对我对先发制人的解释持保留态度。我很乐意接受任何更正。

关于linux - 什么是可重入内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1163846/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com