Language agnostic 单片和微内核的区别是什么?
有谁能举例说明单片和微内核的区别吗?还有内核的其他分类?单片内核是完全在单个地址空间中运行的单个大型进程。它是一个静态二进制文件。所有内核服务都存在并在内核地址空间中执行。内核可以直接调用函数。基于单片内核的OSs示例:Unix、Linux 在微内核中,内核被分解为单独的进程,称为服务器。有些服务器运行在内核空间,有些运行在用户空间。所有服务器保持独立,并在不同的地址空间中运行。服务器通过IPC(进程间通信)发送消息,相互调用“服务”。这种分离的优点是,如果一台服务器出现故障,其他服务器仍然可以高效工作。基于微内核的操作系统示例:Mac OS X和Windows NTLanguage agnostic 单片和微内核的区别是什么?,language-agnostic,terminology,kernel,Language Agnostic,Terminology,Kernel,有谁能举例说明单片和微内核的区别吗?还有内核的其他分类?单片内核是完全在单个地址空间中运行的单个大型进程。它是一个静态二进制文件。所有内核服务都存在并在内核地址空间中执行。内核可以直接调用函数。基于单片内核的OSs示例:Unix、Linux 在微内核中,内核被分解为单独的进程,称为服务器。有些服务器运行在内核空间,有些运行在用户空间。所有服务器保持独立,并在不同的地址空间中运行。服务器通过IPC(进程间通信)发送消息,相互调用“服务”。这种分离的优点是,如果一台服务器出现故障,其他服务器仍然可以
单片内核 内核的所有部分,如调度器、文件系统、内存管理、网络堆栈、设备驱动程序等,都在单片内核的内核内的一个单元中维护 优势 •更快的处理速度 缺点 •碰撞不安全 •移植不灵活 •内核大小爆炸 示例 •MS-DOS、Unix、Linux 微内核 只有非常重要的部分,如IPC(进程间通信)、基本调度器、基本内存处理、基本I/O原语等,被放入内核。通过消息传递进行通信。其他的则作为用户空间中的服务器进程进行维护 优势 •防撞、便携、尺寸更小 缺点 •由于额外的消息传递,处理速度较慢 示例
•Windows NT1.单片内核(纯单片):
all
- 来自单个组件的所有内核服务 (-)不可能添加/删除,灵活性较低/为零 (+)组件间通信更好
很少
- 来自核心内核的少量服务(内存管理、CPU管理、IPC等),来自不同层/组件的其他服务(文件管理、I/O管理等)
- 拆分方法[有些服务处于特权(内核)模式,有些处于正常(用户)模式] (+)灵活地进行更改/升级 (-)通信开销
most
- 微内核与单片内核的结合
- 模块集合--模块可以是-->静态+动态
- 驱动程序以模块的形式出现
e、 g.:-Linux现代操作系统在内核设计中有两个极端 点是单片内核和微内核 (经典的)Linux 例如,内核是单片内核(每个商业操作系统也是如此) 迄今为止(尽管他们可能会提出其他要求) 因为它的代码是 单个C文件产生一个实现上述所有功能的进程 服务。
为了举例说明Linux内核的封装,我们指出 Linux内核甚至不能访问任何标准C库。 实际上,Linux内核不能使用基本的C库函数,例如 printf。相反,它实现了自己的打印功能(称为prints)。
Linux内核的这种隔离和自包含提供了Linux内核 其主要优点是:内核驻留在一个地址空间1中 有可能 所有功能以尽可能快的方式进行通信,无需借助 任何类型的消息传递。 特别是,单片内核实现了所有的设备驱动程序 但是,这是单片内核的主要缺点: 引入任何新的不受支持的医管局