手写一个操作系统篇(一)——内核结构与设计

本专栏源于极客时间《操作系统实战45讲》个人的学习笔记

一、计算机中资源大致可以分为两类资源,一种是硬件资源,一种是软件资源,而内核是硬件资源和软件资源的管理者。

硬件资源:

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

软件资源:

各类文件、软件程序

内核

内核的组成:
1.管理 CPU,由于 CPU 是执行程序的,而内核把运行时的程序抽象成进程,所以又称为进程管理。
2.管理内存,由于程序和数据都要占用内存,内存是非常宝贵的资源,所以内核要非常小心地分配、释放内存。
3.管理硬盘,而硬盘主要存放用户数据,而内核把用户数据抽象成文件,即管理文件,文件需要合理地组织,方便用户查找和读写,所以形成了文件系统。
4.管理显卡,负责显示信息,而现在操作系统都是支持 GUI(图形用户接口)的,管理显卡自然而然地就成了内核中的图形系统。
5.管理网卡,网卡主要完成网络通信,网络通信需要各种通信协议,最后在内核中就形成了网络协议栈,又称网络组件。
6.管理各种 I/O 设备,我们经常把键盘、鼠标、打印机、显示器等统称为 I/O(输入输出)设备,在内核中抽象成 I/O 管理器。

驱动程序

各种计算机硬件的性能不同,硬件型号不同,硬件种类不同,硬件厂商不同,内核要想管理和控制这些硬件就要编写对应的代码,通常这样的代码我们称之为驱动程序。

二、经典内核结构

1.宏内核结构

宏内核就是把以上诸如管理进程的代码、管理内存的代码、管理各种 I/O 设备的代码、文件系统的代码、图形系统代码以及其它功能模块的代码,把这些所有的代码经过编译,最后链接在一起,形成一个大的可执行程序。
优点: 性能很好,因为在内核中,这些组件可以互相调用,性能极高。
缺点: 没有模块化,没有扩展性、没有移植性,高度耦合在一起,一旦其中一个组件有漏洞,内核中所有的组件可能都会出问题。
在这里插入图片描述

2.微内核结构

微内核架构正好与宏内核架构相反,它提倡内核功能尽可能少:仅仅只有进程调度、处理中断、内存空间映射、进程间通信等功能
==优点:==系统结构相当清晰利于协作开发。其次,系统有良好的移植性,微内核代码量非常少,微内核有相当好的伸缩性、扩展性,因为那些系统功能只是一个进程,可以随时拿掉一个服务进程以减少系统功能,或者增加几个服务进程以增强系统功能。
==缺点:==消息带来了非常大的开销,当然各个服务进程的切换开销也不小。这样系统性能就大打折扣。
在这里插入图片描述

3、宏内核结构和微内核结构中系统调用过程的区别(以内存分配为例)

宏内核结构下的系统调用过程(内存分配为例)
在这里插入图片描述
微内核结构下的系统调用过程(内存分配为例)
在这里插入图片描述

三、分离硬件的相关性

分层的主要目的和好处在于屏蔽底层细节,使上层开发更加简单。

四、操作系统如何实现多任务

1.进程调度

它的目的是要从众多进程中选择一个将要运行的进程,当然有各种选择的算法,例如,轮转算法、优先级算法等。

2.进程切换

它的目的是停止当前进程,运行新的进程,主要动作是保存当前进程的机器上下文,装载新进程的机器上下文。

不管是在 ARM 硬件平台上还是在 x86 硬件平台上,选择一个进程的算法和代码是不容易发生改变的,需要改变的代码是进程切换的相关代码,因为不同的硬件平台的机器上下文是不同的。所以,这时最好是将进程切换的代码放在一个独立的层中实现,比如硬件平台相关层,当操作系统要运行在不同的硬件平台上时,就只是需要修改硬件平台相关层中的相关代码,这样操作系统的移植性就大大增强了。

五、现代操作系统内核的分层

在这里插入图片描述

内核接口层主要功能

内核接口层主要是定义了一套 UNIX 接口的子集

内核功能层主要功能

内核功能层主要完成 I/O 管理组件、内存管理组件、文件系统组件、进程管理组件、图形系统组件、网络组件、安全组件的通用功能型代码

内核硬件层主要功能

内核硬件层则完成其内核组件对应的具体硬件平台相关的代码。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值