Unix内核知识讲解

系统 其他OS
大多数Unix内核都设计为单模块。单内核是两大阵营中一种较为简单的设计,在1980年之前,所有的内核都设计成单内核。

今天,我们来对Unix内核的知识进行讲解。学习了很多关于Unix内核的知识。我们知道所有的Unix内核都同宗同源,并且提供相同的API,现代的Unix内核存在许多设计上的相似之处。

Unix内核几乎毫无例外的都是一个不可分割的静态可执行块(文件)。也就是说,它们必须以完整、单独的可执行块的形式在一个单独的地址空间中运行。Unix内核几乎都需要硬件系统提供页机制以管理内存。这种页机制可以加强内存空间的保护,并保证每个进程都可以运行于不同的虚地址空间上。

操作系统内核可以分为两大设计阵营:单内核和微内核(第三阵营外内核,主要用在科研系统中,但也逐渐在现实世界中壮大起来)。

单内核是两大阵营中一种较为简单的设计,在1980年之前,所有的内核都设计成单内核。所谓单内核就是把它从整体上作为一个单独的大过程来实现,并同时运行在一个单独的地址空间。

因此,这样的内核通常以单个静态二进制文件的形式存放于磁盘。所有内核服务都在这样的一个大内核空间中运行。内核之间的通信是微不足道的,因为大家都运行在内核态,并身处同一地址空间:内核可以直接调用函数,这与用户空间没有什么区别。

这种模式的支持者认为单模块具有简单和高性能的特点。大多数Unix内核都设计为单模块。

另一方面,微内核并不作为一个单独的大过程来实现。相反,微内核的功能被划分为独立的过程,每个过程叫做一个服务器。理想情况下,只有强烈请求特权服务的服务器才运行在特权模式下,其他服务器都运行在用户空间。

不过,所有的服务器都保持独立并运行在各自的地址空间。因此,就不可能像单模块内核那样直接调用函数,而是通过消息传递处理微内核通信:系统采用了进程间通信(IPC)机制,因此,各种服务器之间通过IPC机制互通消息,互换“服务”。服务器的各自独立有效地避免了一个服务器的失效祸及另一个。Unix内核也是如此。

同样,模块化的系统允许一个服务器为了另一个服务器而换出。因为IPC机制的开销比函数调用多,又因为会涉及内核空间到用户空间的上下文切换,因此,消息传递需要一定的周期,而单内核中简单的函数调用没有这些开销。

基于此,付之于实际的微内核系统让大部分或全部服务器位于内核,这样,就可以直接调用函数,消除频繁的上下文切换。Windows NT内核和Mach(Mac OS X的组成部分)是微内核的典型实例。

不管是Windows NT还是Mac OS X,都在其新近版本中不让任何微内核服务器运行在用户空间,这违背了微内核设计的初衷。关于Unix内核,我们就介绍了这么多。

【编辑推荐】

  1. Unix系统开放式发展
  2. Unix系统版本讲解
  3. 断电之后的Unix系统
  4. 从Unix BSD系统结构条理说起
  5. 解析Unix系统软件
责任编辑:小霞
相关推荐

2010-04-21 13:47:45

Unix内核

2010-04-30 16:19:17

Unix内核

2010-04-30 16:08:20

Unix内核

2010-04-30 13:27:26

Unix cronta

2010-05-05 13:45:21

Unix Telnet

2010-05-04 12:25:28

Unix链接

2010-04-30 13:38:51

Unix at命令

2010-05-04 09:22:10

Unix文件

2010-05-04 16:33:39

Unix系统

2010-05-05 10:44:37

Unix 反引号

2010-05-05 15:02:39

Unix系统

2010-04-21 13:41:41

Unix内核

2010-05-05 13:22:29

Unix Shell

2010-04-21 14:29:52

Unix 线程

2010-04-21 12:39:48

Unix 消息队列

2010-04-13 17:52:16

Unix交换区

2010-04-30 18:20:23

Unix系统

2010-05-04 09:45:28

Unix系统

2010-04-30 01:28:59

Unix系统

2010-05-06 14:24:56

Unix系统交换区
点赞
收藏

51CTO技术栈公众号