operating-system - 为什么 Windows NT 远离微内核?

标签 operating-system windows-nt microkernel

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

7年前关闭。




Improve this question




有人告诉我,Windows NT 最初是为实现微内核架构而设计的,但后来转向了混合内核。

是什么导致了这种变化?我在尝试查找有关此的任何信息时遇到问题。

最佳答案

Windows NT 成为混合内核的主要原因是速度。基于微内核的系统只将最少的系统组件放在内核中,并将其余组件作为用户模式进程(称为服务器)运行。进程间通信 (IPC) 的一种形式,通常是消息传递,用于服务器和内核之间的通信。

基于微内核的系统比其他系统更稳定;如果服务器崩溃,它可以在不影响整个系统的情况下重新启动,如果每个系统组件都是内核的一部分,这是不可能做到的。然而,由于 IPC 和上下文切换带来的开销,微内核比传统内核慢。由于微内核的性能成本,微软决定保留微内核的结构,但在内核空间运行系统组件。从 Windows Vista 开始,一些驱动程序也在用户模式下运行。

关于operating-system - 为什么 Windows NT 远离微内核?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19365184/

相关文章:

device-driver - SEL4 用户空间驱动程序示例

c - 关于 GDT 和流程

c - 在动态链接时,动态加载器是查看所有目标文件的定义,还是仅查看可执行文件指定的目标文件?

multithreading - 为什么 Windows NT 线程具有独立的用户模式/内核模式堆栈?

winapi - CreateProcessAsUser 与 ShellExecute

operating-system - 什么是IO口、串口,它们之间有什么区别?

linux - 如何让程序可以由具有所有者权限的特定用户在linux上运行

windows - 为什么栈的 "logical bottom"和 "physical bottom"的偏移量是随机的?

kernel - 程序如何通信 - 微内核 单片内核 exo 内核