操作系统内核
内核(Kernel)在计算机科学中是操作系统最基本的部分,主要负责管理系统资源。
内核(Kernel)是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并由内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的。所以内核通常提供一种硬件抽象的方法,来完成这些操作。通过进程间通信机制及系统调用,应用进程可间接控制所需的硬件资源(特别是处理器及IO设备)。
严格地说,内核并不是计算机系统中必要的组成部分。程序可以直接地被调入计算机中执行;这样的设计,说明了设计者不希望提供任何硬件抽象和操作系统的支持;它常见于早期计算机系统的设计中。最终,一些辅助性程序,例如程序加载器和调试器,被设计到机器内核当中,或者写入在只读存储器里。这些变化发生时,操作系统内核的概念就渐渐明晰起来了。
- 单内核: 它为潜在的硬件,提供了大量完善的硬件抽象操作。
- 微内核 :只提供了很小一部分的硬件抽象,大部分功能由一种特殊的用户态程序:服务来完成。
- 混合内核 :它很像微内核结构,只不过它的的组件更多的在内核态中运行,以获得更快的执行速度。
- 外内核 :这种内核不提供任何硬件抽象操作,但是允许为内核增加额外的运行库,通过这些运行库应用程序可以直接地或者接近直接地对硬件进行操作。
详细说明如下:
一、单内核
单内核结构在硬件之上,定义了一个高阶的抽象界面,应用一组原语(或者叫系统调用)来实现操作系统的功能,例如进程管理,文件系统,和存储管理等等,这些功能由多个运行在内核态的模块来完成。
很多现代的单内核结构内核,如Linux和FreeBSD内核,能够在运行时将模块调入执行,这就可以使扩充内核的功能变得更简单,也可以使内核的内核部分变得更简洁。
单内核结构的例子:
- 传统的UNIX内核,例如伯克利大学发行的版本
- Linux内核
- MS-DOS, Windows 9x (Windows 95, 98, Me)
Linux内核是最受欢迎的自由电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。Linux最早是由芬兰黑客林纳斯·托瓦兹为尝试在英特尔x86架构上提供自由免费的类Unix操作系统而开发的。
技术上说Linux是一个内核。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux。
二、微内核
微内核结构由一个非常简单的硬件抽象层和一组比较关键的原语或系统调用组成;这些原语,仅仅包括了建立一个系统必需的几个部分;如 线程管理,地址空间和进程间通信等。微核的目标是将系统服务的实现和系统的基本操作规则分离开来。
单内核结构是非常有吸引力的一种设计,由于在同一个地址空间上实现所有复杂的低级操作系统控制代码的效率会比在不同地址空间上实现更高些。现在,单核结构正倾向于设计不容易出错,所以它的发展会比微内核结构更迅速些。两个阵营中都有成功的案例。微核经常被用于机器人和医疗器械的嵌入式设计中,因为它的系统的关键部分都处在相互分开的,被保护的存储空间中。这对于单核设计来说是不可能的,就算它采用了运行时加载模块的方式。
混合内核实质上是微内核,只不过它让一些微核结构运行在用户空间的代码运行在内核空间,这样让内核的运行效率更高些。这是一种妥协做法,设计者参考了微内核结构的系统运行速度不佳的理论。然而后来的实验证明,纯微内核的系统实际上也可以是高效率的。大多数现代操作系统遵循这种设计范畴,微软视窗就是一个典型的例子。另外还有XNU,运行在苹果 Mac OS X 上的内核,也是一个混合内核。
混合内核的例子:
- Windows NT 、 Windows 2000 、 Windows XP 、 Windows Server 2003 以及 Windows Vista 和 Windows 7 等基于NT技术的微软视窗操作系统
- BeOS 内核
- DragonFly BSD
- ReactOS 内核
- XNU
一些人认为可以在运行时加载模块的单核系统和混合内核系统没有区别。这是不正确的。混合意味着它从单核和微核系统中都吸取了一定的设计模式,例如一些非关键的代码在用户空间运行,另一些在内核空间运行,单纯是为了效率的原因。
四、外内核
外内核系统,也被称为纵向结构操作系统,是一种比较极端的设计方法。
它的设计理念是让用户程序的设计者来决定硬件接口的设计。外内核本身非常的小,它通常只负责系统保护和系统资源复用相关的服务。
现在,外核设计还停留在研究阶段,没有任何一个商业系统采用了这种设计。几种概念上的操作系统正在被开发,如剑桥大学的Nemesis,格拉斯哥大学的Citrix系统和瑞士计算机科学院的一套系统。麻省理工学院也在进行着这类研究。
了解更多
Linux内核官方网站:http://www.kernel.org/
维基百科:http://zh.wikipedia.org/zh-cn/Linux内核
维基百科:http://zh.wikipedia.org/zh-cn/内核
维基百科:http://zh.wikipedia.org/zh-cn/Linux
维基百科:http://zh.wikipedia.org/zh-cn/操作系统
本文链接地址(Giga OS) - http://sancc.net/os/operating-system/kernel
如转载,请注明:“转载自 Giga OS - http://gigaos.com/”,并注明链接地址!










