第三课:内核结构与设计

前言:这一章节令我对内核的基本组成有了一个大概的印象,以后就跟着老师一点一点的去了解它了。

六类必要组件

1) 管理CPU(进程管理)

CPU是执行程序的,内核将运行时的程序抽象成各种进程,所以CPU管理又称为进程管理。

2) 管理内存

程序和数据都会占用一定的,内核按照一定的规则分配和释放内存。

3) 管理硬盘(管理文件)

硬盘主要存放用户数据,内核把用户数据抽象成文件。文件需要合理的组织,便于用户查找和读写,内核中文件系统负责管理文件。

4) 管理显卡

负责显示信息,用于操作系统提供GUI接口,内核中图形系统负责管理显卡。

5) 管理网卡

网卡主要完成网络通信,网络通信需要各种通信协议,最后在内核中形成了网络协议栈,又称网络组件。

6) 管理各种IO设备

通过驱动程序管理不同的硬件。

宏内核的工作原理和优缺点

宏内核将内核各种组件及其他功能代码编译链接成一个可执行程序,功能尽可能的多。宏内核具备极致的性能

微内核的工作原理和优缺点

提倡功能尽可能的小,仅具备进程调度、处理中断、内存空间映射、进程间通信等功能。这样的内核是不能完成什么功能的,开发者将文件管理,内存管理,进程管理等功能做成一个个服务进程,就像用户进程那样。

微内核定义了一种进程间通信的机制——消息。应用程序如果要请求相关服务,像微内核发送一条请求消息,微内核再将消息转发给服务进程。进程切换带来了带来了一定的开销,令系统性能降低了不少。

微内核具备极致的可移植性,可扩展性。

设计软件抽象层的目的是什么

屏蔽底层细节,使上层开发更简单。底层向上层提供接口供上层调用。比如驱动层,如果更换硬件后驱动层的代码可能会存在改动,但只要提供的接口不变,上层代码就不需要修改。系统可移植性增强。

内核结构大致是什么样的

5.1 内核接口层

检查参数是否合法,如果不合法返回对应的错误码。合法就调用下层完成功能的接口。

5.2 内核功能层

完成各种实际功能。

1) 进程管理

主要实现进程的创建、销毁和调度,需要设计几套数据结构用于表示和组织进程。还需要一个进程调度算法。

2) 内存管理

内核功能层中只有内存池管理,分为页面内存池和任意大小的内存池。

3) 中断管理

将一个中断回调函数插入到相关的数据结构中,一旦发生中断,调用此回调函数。

4) 设备管理

需要一系列的数据结构表示驱动程序模块、驱动程序本身、驱动程序创建的设备,最后把他们组织在一起。还要实现创建、销毁和访问设备的代码,这些代码最终会调用驱动程序,达到操作设备的目的。

5.3 内核硬件层

  1. 初始化,初始化代码是内核被加载到内存中最先需要运行的代码,例如初始化少量的设备、CPU、内存、中断的控制、内核用于管理的数据结构等。
  2. CPU 控制,提供 CPU 模式设定、开、关中断、读写 CPU 特定寄存器等功能的代码。
  3. 中断处理,保存中断时机器的上下文,调用中断回调函数,操作中断控制器等。
  4. 物理内存管理,提供分配、释放大块内存,内存空间映射,操作 MMUCache 等。
  5. 平台其它相关的功能,有些硬件平台上有些特殊的功能,需要额外处理一下。
posted @ 2021-11-18 21:16  一只吃水饺的胡桃夹子  阅读(85)  评论(0编辑  收藏  举报