Language agnostic 单片和微内核的区别是什么?

Language agnostic 单片和微内核的区别是什么?,language-agnostic,terminology,kernel,Language Agnostic,Terminology,Kernel,有谁能举例说明单片和微内核的区别吗?还有内核的其他分类?单片内核是完全在单个地址空间中运行的单个大型进程。它是一个静态二进制文件。所有内核服务都存在并在内核地址空间中执行。内核可以直接调用函数。基于单片内核的OSs示例:Unix、Linux 在微内核中,内核被分解为单独的进程,称为服务器。有些服务器运行在内核空间,有些运行在用户空间。所有服务器保持独立,并在不同的地址空间中运行。服务器通过IPC(进程间通信)发送消息,相互调用“服务”。这种分离的优点是,如果一台服务器出现故障,其他服务器仍然可以

有谁能举例说明单片和微内核的区别吗?还有内核的其他分类?

单片内核是完全在单个地址空间中运行的单个大型进程。它是一个静态二进制文件。所有内核服务都存在并在内核地址空间中执行。内核可以直接调用函数。基于单片内核的OSs示例:Unix、Linux

在微内核中,内核被分解为单独的进程,称为服务器。有些服务器运行在内核空间,有些运行在用户空间。所有服务器保持独立,并在不同的地址空间中运行。服务器通过IPC(进程间通信)发送消息,相互调用“服务”。这种分离的优点是,如果一台服务器出现故障,其他服务器仍然可以高效工作。基于微内核的操作系统示例:Mac OS X和Windows NT

  • 单片内核设计比出现在20世纪80年代末的微核思想要古老得多

  • Unix和Linux内核是单片的,而QNX、L4和Hurd是微内核。Mach最初是一个微内核(不是MacOSX),但后来转换成了一个混合内核。Minix(在版本3之前)不是一个纯粹的微核,因为设备驱动程序是作为内核的一部分编译的

  • 整体内核通常比微内核快。第一种微内核马赫数比大多数单片内核慢50%,而后来的像L4这样的微内核马赫数只比单片设计慢2%或4%

  • 单片内核的大小很大,而微内核的大小很小——它们通常适合处理器的一级缓存(第一代微内核)

  • 在单片内核中,设备驱动程序位于内核空间,而在微内核中,设备驱动程序位于用户空间

  • 由于单片内核的设备驱动程序驻留在内核空间中,因此单片内核的安全性不如微内核,驱动程序中的故障(异常)可能导致崩溃(在Windows中显示为BSODs)。微内核比单片内核更安全,因此更常用于军事设备

  • 单片内核使用信号和套接字实现进程间通信(IPC),微内核使用消息队列。第一代微内核没有很好地实现IPC,并且在上下文切换上速度很慢——这就是导致其性能低下的原因

  • 向单片系统添加新功能意味着重新编译整个内核或相应的内核模块(对于模块化单片内核),而对于微内核,您可以在不重新编译的情况下添加新功能或补丁


  • 单片内核

    内核的所有部分,如调度器、文件系统、内存管理、网络堆栈、设备驱动程序等,都在单片内核的内核内的一个单元中维护

    优势

    •更快的处理速度

    缺点

    •碰撞不安全 •移植不灵活 •内核大小爆炸

    示例 •MS-DOS、Unix、Linux

    微内核

    只有非常重要的部分,如IPC(进程间通信)、基本调度器、基本内存处理、基本I/O原语等,被放入内核。通过消息传递进行通信。其他的则作为用户空间中的服务器进程进行维护

    优势

    •防撞、便携、尺寸更小

    缺点

    •由于额外的消息传递,处理速度较慢

    示例
    •Windows NT

    1.单片内核(纯单片):
    all

    • 来自单个组件的所有内核服务

      (-)不可能添加/删除,灵活性较低/为零

      (+)组件间通信更好

    e、 g.:-传统Unix

    2.微内核:
    很少

    • 来自核心内核的少量服务(内存管理、CPU管理、IPC等),来自不同层/组件的其他服务(文件管理、I/O管理等)

    • 拆分方法[有些服务处于特权(内核)模式,有些处于正常(用户)模式]

      (+)灵活地进行更改/升级

      (-)通信开销

    e、 g.:-QNX等

    3.模块化内核(模块化单片):
    most

    • 微内核与单片内核的结合

    • 模块集合--模块可以是-->静态+动态

    • 驱动程序以模块的形式出现


    e、 g.:-Linux现代操作系统在内核设计中有两个极端 点是单片内核和微内核

    (经典的)Linux 例如,内核是单片内核(每个商业操作系统也是如此) 迄今为止(尽管他们可能会提出其他要求)

    因为它的代码是 单个C文件产生一个实现上述所有功能的进程 服务。
    为了举例说明Linux内核的封装,我们指出 Linux内核甚至不能访问任何标准C库。 实际上,Linux内核不能使用基本的C库函数,例如 printf。相反,它实现了自己的打印功能(称为prints)。

    Linux内核的这种隔离和自包含提供了Linux内核 其主要优点是:内核驻留在一个地址空间1中 有可能 所有功能以尽可能快的方式进行通信,无需借助 任何类型的消息传递。 特别是,单片内核实现了所有的设备驱动程序 但是,这是单片内核的主要缺点: 引入任何新的不受支持的医管局