从零开始写操作系统03: 内核架构

本专栏是在学习LMOS的《操作系统实战45讲》时的学习笔记,以检验学习效果。
本节因为是理论知识,所以内容主要是摘抄的《操作系统实战45讲》。

内核功能

内核是计算机资源的管理者,其目的是为了让应用程序更好地使用资源。
计算机资源分为硬件资源和软件资源。
硬件资源有:

  1. 总线,负责连接各种其它设备,是其它设备工作的基础。
  2. CPU,即中央处理器,负责执行程序和处理数据运算。
  3. 内存,负责储存运行时的代码和数据。
  4. 硬盘,负责长久储存用户文件数据。
  5. 网卡,负责计算机与计算机之间的通信。
  6. 显卡,负责显示工作。
  7. 各种 I/O 设备,如显示器,打印机,键盘,鼠标等。

软件资源有:文件、程序(进程)等。

宏内核结构

简单来说,宏内核结构就是把上面管理所有计算机资源的代码都编译成一个大的程序,支持所有功能,并向用户提供一些接口。这个大程序在特权模式下运行。如下图所示:
在这里插入图片描述
上图的宏内核结构有明显的缺点,因为它没有模块化,没有扩展性、没有移植性,高度耦合在一起,一旦其中一个组件有漏洞,内核中所有的组件可能都会出问题。开发一个新的功能也得重新编译、链接、安装内核。其实现在这种原始的宏内核结构已经没有人用了。

这种宏内核唯一的优点是性能很好,因为在内核中,这些组件可以互相调用,性能极高。

微内核结构

微内核架构正好与宏内核架构相反,它提倡内核功能尽可能少:仅仅只有进程调度、处理中断、内存空间映射、进程间通信等功能。

这样的内核是不能完成什么实际功能的,开发者们把实际的进程管理、内存管理、设备管理、文件管理等服务功能,做成一个个服务进程。和用户应用进程一样,只是它们很特殊,宏内核提供的功能,在微内核架构里由这些服务进程专门负责完成。

微内核定义了一种良好的进程间通信的机制——消息。应用程序要请求相关服务,就向微内核发送一条与此服务对应的消息,微内核再把这条消息转发给相关的服务进程,接着服务进程会完成相关的服务。服务进程的编程模型就是循环处理来自其它进程的消息,完成相关的服务功能。其结构如下所示:
在这里插入图片描述
微内核有很多优点,首先,系统结构相当清晰利于协作开发。其次,系统有良好的移植性,微内核代码量非常少,就算重写整个内核也不是难事。最后,微内核有相当好的伸缩性、扩展性,因为那些系统功能只是一个进程,可以随时拿掉一个服务进程以减少系统功能,或者增加几个服务进程以增强系统功能。

微内核的代表作有 MACH、MINIX、L4 系统,这些系统都是微内核,但是它们不是商业级的系统,商业级的系统不采用微内核主要还是因为性能差。

我们的设计

首先大致将我们的操作系统内核分为三个大层,分别是:

  1. 内核接口层。
  2. 内核功能层。
  3. 内核硬件层。

内核接口层,定义了一系列接口,主要有两点内容,如下:

  1. 定义了一套 UNIX 接口的子集,我们出于学习和研究的目的,使用 UNIX 接口的子集,优点之一是接口少,只有几个,并且这几个接口又能大致定义出操作系统的功能。
  2. 这套接口的代码,就是检查其参数是否合法,如果参数有问题就返回相关的错误,接着调用下层完成功能的核心代码。

内核功能层,主要完成各种实际功能,这些功能按照其类别可以分成各种模块,当然这些功能模块最终会用具体的算法、数据结构、代码去实现它,内核功能层的模块如下:

  1. 进程管理,主要是实现进程的创建、销毁、调度进程,当然这要设计几套数据结构用于表示进程和组织进程,还要实现一个简单的进程调度算法。
  2. 内存管理,在内核功能层中只有内存池管理,分两种内存池:页面内存池和任意大小的内存池,你现在可能不明白什么是内存池,这里先有个印象就行,后面课程研究它的时候再详细介绍。
  3. 中断管理,这个在内核功能层中非常简单:就是把一个中断回调函数安插到相关的数据结构中,一旦发生相关的中断就会调用这个函数。
  4. 设备管理,这个是最难的,需要用一系列的数据结构表示驱动程序模块、驱动程序本身、驱动程序创建的设备,最后把它们组织在一起,还要实现创建设备、销毁设备、访问设备的代码,这些代码最终会调用设备驱动程序,达到操作设备的目的。

内核硬件层,主要包括一个具体硬件平台相关的代码,如下:

  1. 初始化,初始化代码是内核被加载到内存中最先需要运行的代码,例如初始化少量的设备、CPU、内存、中断的控制、内核用于管理的数据结构等。
  2. CPU 控制,提供 CPU 模式设定、开、关中断、读写 CPU 特定寄存器等功能的代码。
  3. 中断处理,保存中断时机器的上下文,调用中断回调函数,操作中断控制器等。
  4. 物理内存管理,提供分配、释放大块内存,内存空间映射,操作 MMU、Cache 等。
  5. 平台其它相关的功能,有些硬件平台上有些特殊的功能,需要额外处理一下。

结构如下所示,当然这里没有画出用户空间的应用进程,API 接口以下的为内核空间,这才是设计、开发内核的重点。
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值