本帖最后由 killmatt01 于 2019-8-15 09:35 编辑
这个问题是在“鸿蒙”出世何以令世人侧目 央视解读这一国货强在哪儿?一贴中与饭友@a1414007 讨论时谈到的,本人没有足够的知识量来解答这个问题,因此想在这请教各位饭友。 本人在康奈尔理工学院官网上下找到如下内容:
(图片显示在本贴底部。。。顺便请教一下如何让图片显示在此处) 谷歌翻译如下: 传统上,操作系统的“内核”是系统上运行的所有其他软件所需的部分。因此,内核对应于可信计算基础(TCB)的OS部分,计算系统的那些部分的正确行为是任何其他部分的正确操作的先决条件。 微内核的基本思想是最小化内核,并在TCB之外尽可能多地实现内核。内核应该只导出简单的低级操作,这有望实现更高效的应用程序实现。这个想法可以追溯到[汉森70],在[Liedtke 96]中可以找到一个很好的概述。传统上,内核是“单片的”,因为它们在TCB中以相对非结构化的方式实现其所有功能。从软件工程的角度来看,微内核的优势是显而易见的: TCB变得更小,减少了由于其错误实现而导致错误的可能性。
操作系统更加模块化,因此更加灵活和可扩展。
以前在TCB中的服务现在可能具有多个不同的实现,甚至可能同时运行。 微内核最初的热情很高,在80年代后期,在学术和商业环境中都有很多工作要做。当人们开始遇到微内核实现的灵活性和效率的固有困难时,这股最初的热情就消退了: 对于一些频繁的操作,例如网络化,上下文切换的开销对于内核实现来说太大了。因此,微内核不像最初想象的那样有效。
支持多个基本系统服务的实现存在很大的困难,特别是当多个并发运行时。因此,微内核并不像假设的那样灵活。 通过对原始微内核理想的各种妥协克服了这些困难。几个效率关键功能被带回内核,并且通过可下载的二进制代码或可信的“内核加载模块”支持在内核中添加新功能。 但是,将大多数驱动程序和服务器集成到TCB中很大程度上消除了微内核方法的好处,最终导致了更复杂的单片式操作系统内核。 最近,在微内核理念之后出现了几种第二代实现,它们声称能够解决第一代的灵活性和效率问题。这些实现如何实现这一目标有很大的不同,以下三个具有代表性: L4 [Liedtke 96]有一个非常小的微内核,并在第一代的精神下使用用户级服务器。它通过非常快速的进程间通信和灵活的内存管理方案实现了目标。
Exokernel,[Engler 95]是一个微型微内核,它消除了所有传统的OS内核抽象,将内核的任务简化为安全的多任务资源。
SPIN [Bershad 95]采用了将代码下载到内核中的方法,但是以一种安全的方式并没有真正扩大TCB。 目前尚不清楚这些新一代解决方案是否真正适用于实际操作系统。缺少的是使用上述系统策略构建的真实操作系统的存在,就像Chorus和Mach是使用第一代微内核策略构建的真实操作系统一样。即便如此,上述系统的存在为微内核方法的未来提供了很大的希望。 在维基百科找到如下内容: Early operating system kernels were rather small, partly because computer memory was limited. As the capability of computers grew, the number of devices the kernel had to control also grew. Throughout the early history of Unix, kernels were generally small, even though they contained various device drivers and file system implementations. When address spaces increased from 16 to 32 bits, kernel design was no longer constrained by the hardware architecture, and kernels began to grow larger. The Berkeley Software Distribution (BSD) of Unix began the era of larger kernels. In addition to operating a basic system consisting of the CPU, disks and printers, BSD added a complete TCP/IP networking system and a number of "virtual" devices that allowed the existing programs to work 'invisibly' over the network. This growth continued for many years, resulting in kernels with millions of lines of source code. As a result of this growth, kernels were prone to bugs and became increasingly difficult to maintain. The microkernel was intended to address this growth of kernels and the difficulties that resulted. In theory, the microkernel design allows for easier management of code due to its division into user space services. This also allows for increased security and stability resulting from the reduced amount of code running in kernel mode. For example, if a networking service crashed due to buffer overflow, only the networking service's memory would be corrupted, leaving the rest of the system still functional. 谷歌翻译如下: 早期的操作系统内核相当小,部分原因是计算机内存有限。随着计算机功能的增长,内核必须控制的设备数量也在增长。在Unix的早期历史中,内核通常很小,即使它们包含各种设备驱动程序和文件系统实现。当地址空间从16位增加到32位时,内核设计不再受硬件架构的限制,内核开始变大。 Unix的Berkeley Software Distribution(BSD)开始了更大内核的时代。除了操作由CPU,磁盘和打印机组成的基本系统外,BSD还增加了一个完整的TCP / IP网络系统和许多“虚拟”设备,使现有程序能够通过网络“无形地”工作。这种增长持续了很多年,导致内核拥有数百万行源代码。由于这种增长,内核容易出错并且变得越来越难以维护。 微内核旨在解决内核的这种增长以及由此带来的困难。理论上,微内核设计允许更容易地管理代码,因为它分为用户空间服务。这还可以提高内核模式下运行的代码量,从而提高安全性和稳定性。例如,如果网络服务因缓冲区溢出而崩溃,则只有网络服务的内存会被破坏,系统的其余部分仍然可以正常运行。 希望饭友解惑
万分感谢!!! References:
2. Microkernel. (2001, September 25). Retrieved from https://en.wikipedia.org/wiki/Microkernel
|