打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
简述宏内核与微内核

嵌入式系统:简述宏内核与微内核

  自然的做法:凡是为进程服务的模块就应放在操作系统的内核中。例如:文件管理模块是为进程服务的,所以应放在内核中;设各驱动模块是为进程服务的,所以要放在内核中;进程管理模块当然也要放在内核中。随着进程对服务需求的增加,操作系统的内核就越来越大,随之也出现了一系列问题。

  首先,由于内核是常驻内存的,因此大内核占用的存储空间就大,这样在硬件系统比较小,存储器资源比较紧张的系统中就不太适用;其次,是维护起来也比较困难,假如内核中的某一个服务模块进行了修改,那么在修改之后就必须对整个系统进行一次编译,显得极不方便;再次,就是使得处理器在内核运行的时间变长,从而不适合在速度要求较高的场合下应用。

  总之,操作系统的内核大到一定程度之后,会出现一系列因为大而产生的诸多问题。为了解决这些问题,人们想了一系列的办法试图在满足应用程序所需服务的前提下把内核做小。其中一个有效的办法是,把内核各个服务程序模块中的部分内容移到内核的外面作为一个进程来看待,在内核中只保留内核服务与用户进程的接口,或者说只保留一个“壳”。在用户进程需要该服务时,由这个“壳”通过发送消息的方法与服务进程进行联系,当与这个服务相关的服务进程接收到这个信息时就马上启动这个服务。这样,内核中保留的只是一些服务模块的“壳”.或耆说是消息的转送站,于是内核就可以大大变小了。这种内核就叫做“微内核”,具有微内核的操作系统叫做微内核操作系统。

  因此,在操作系统内核的设计上有两种结构:宏内核结构和微内核结构。

  宏内核的内部可被分为若干模块(或者是层次或其他)。但是在运行时,它是一个独立的二进制大映像。模块间的通信不是通过消息传递,而是通过直接调用其他模块中的函数来实现的。

  在微内核中,用以完成系统调用功能的程序模块通常只进行简短的处理,而把其余工作通过消息传递交给内核之外的进程来处理。在典型情况下,每个系统调用程序模块都有一个与之对应的进程,微内核部分经常只不过是一个消息转发站,这种方式有助于实现模块间的隔离。这种内核设计的最根本思想就是要保持操作系统的内核尽可能小,因为内核是直接与计算机硬件相关的,内核越小,就越便于在不同的硬件系统间进行移植。微内核结构的另外一个优点是,可以使不需要的模块不加载到内存中,因此,微内核就可以更有效地利用内存。

单内核结构是非常有吸引力的一种设计,由于在同一个地址空间上实现所有低级操作的系统控制代码的复杂性的效率会比在不同地址空间上实现更高些。 

  20世纪90年代初,单内核结构被认为是过时的。把Linux设计成为单内核结构而不是微内核引起了无数的争议。 

  现在,单核结构正趋向于容易被正确设计,所以它的发展会比微内核结构更迅速些。两个阵营中都有成功的案例。微核经常被用于机器人和医疗器械的嵌入式设计中,因为它的系统的关键部分都处在相互分开的,被保护的存储空间中。这对于单核设计来说是不可能的,就算它采用了运行时加载模块的方式。 

  尽管Mach是众所周知的多用途的微内核,人们还是开发了除此之外的几个微内核。L3是一个演示性的内核,只是为了证明微内核设计并不总是低运行速度。它的后续版本L4甚至可以将Linux内核在单独的地址空间作为它的一个进程来运行。 

  QNX是一个从20世纪80年代就开始设计的微内核系统。它比Mach更接近微内核的理念。它被用于一些特殊的领域,在这些情况下由于软件错误导致系统失效是不允许的。例如航天飞机上的机械手,还有研磨望远镜镜片的机器,一点点失误就会导致上千美元的损失。 

  很多人相信,由于Mach不能够解决一些提出微内核理论时针对的问题,所以微内核技术毫无用处。Mach的爱好者表明这是非常狭隘的观点,遗憾的是似乎所有人都开始接受这种观点。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
操作系统内核原理
内核
内核
每日科技名词|微内核操作系统
微内核和宏内核
什么是内核
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服