聚内核与微内核

来源:互联网 发布:phpmyadmin for mac 编辑:程序博客网 时间:2024/05/17 21:51

0x01 聚内核

聚内核被实现为运行在单一的地址空间里的单一的进程。因此,这种内核通常以一个静态的二进制文件保存在磁盘中。所以内核的服务都存在并执行于一个大的内核地址空间里。在内核的内部进行通信显得直接了当,因为所有运行在内核态的代码都在相同的地址空间里:内核可以直接调用函数,就像用户空间的应用程序一样。这个模型的支持者们以聚内核的简洁和性能为理由。多大数Unix系统都采用聚内核的设计方法。

0x02 微内核

微内核则不是实现为单个的大的进程。而是把内核的功能分解成不同的进程,通常把这些进程称为服务。理想情况,只有在必要的时候服务才运行在特权模式下。其他服务都运行在用户空间里。所有这些服务,都被分解到不同的地址空间里,因此,像聚内核那样的直接的函数调用不再可能(指在多个服务间进行通信时)。替代地,微内核的通信通过消息传递:一套进程间通信(IPC)的机制被内嵌到系统中,各种服务通过在IPC之上发送消息来相互调用彼此的服务。把各种服务的分离可以防止一个服务的失败引起其他服务的失败。同样的,这种模块化的系统允许一个服务替换掉另一个服务。

QNX是一个微内核实时操作系统,其核心仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行。所有其它OS服务,都实现为协作的用户进程,因此QNX核心非常小巧(QNX4.x大约为12Kb)而且运行速度极快。
0 0
原创粉丝点击