从零到一手写操作系统(三、总体框架设计)
如果追忆会荡起涟漪,那么今天的秋红落叶和晴空万里都归你
https://aeneag.xyz
微信公众号:技术乱舞
艾恩凝
手写操作系统目录
3.1)硬件资源
1、总线,负责连接其他设备,是其他设备工作的基础,就相当于把各种设备联系起来,能互相通信
2、CPU,就是中央处理器,处理各种数据和执行程序
3、内存,运行代码和数据时,就在内存中进行
4、硬盘,保存数据
5、网卡,计算机互相通信
6、显卡,负责显示
7、I/O设备,如输入设备键盘鼠标,输出设备打印机显示器等
3.2)软件资源
1、管理CPU,执行程序的地方,内核运行时把程序抽象成进程,也叫进程管理
2、管理内存,执行的程序和数据都在内存中活动,内核对于内存的管理要格外小心,分配释放资源
3、管理硬盘,硬盘主要是用户存放数据的地方,内核把数据抽象成文件,也叫文件管理,文件合理的进行组织保存,方便用户读写,这就是文件系统
4、管理显卡,负责显示信息,支持GUI,内核中的图形管理系统
5、管理网卡,网络通信,需要支持各种协议,这部分又叫做网络组件
6、管理I/O设备,在内核中这些设备被抽象成I/O管理器
7、驱动程序,为了应对计算机硬件存在的差异性,适配各个厂家的设备,就需要各种不同的驱动程序
3.3)内核结构
3.3.1)宏内核
宏内核是最早的一种结构,结构思想是进程管理,内存管理,设备管理,文件系统管理,图形系统管理以及其他等模块全部放在一起,编译完成链接在一起,形成一个可执行程序。
并且这个程序想用户提供API函数接口,程序在cpu特权模式下执行,这就是宏内核模式
宏内核工作原理:
1、应用程序调用内核中内存分配的API函数
2、处理器切换到特权模式,开始运行内核代码
3、内核中的内核管理按照算法分配一块内存
4、将分配的内存首地址返回给分配内存的API函数
5、返回的地址交给应用程序,处理器就在用户模式下,此时应用程序就可以使用这块内存了
优点:性能好
缺点:没有模块化,没有拓展性,没有移植性,高耦合,一个地方出现问题会造成整个程序崩溃
3.3.2)微内核
微内核功能少,有进程调度,处理中断,内存空间映射,进程通信等
微内核把进程管理内存管理设备管理文件管理等做成一个个服务进程,与用户应用进程一样
微内核定义了进程间通信的机制-消息。用户应用程序请求服务,向内核发送消息,内核再把这条消息传给相关服务进程,然后该服务进程完成相关的任务。服务进程就是一直循环处理其他进程的消息,完成相应服务。
微内核工作原理:
1、应用程序发送内存分配的消息给内存,但是这个发送消息的函数是内核提供的(微内核提供的API很少),首先这个应用程序把消息传给内核
2、处理器切换到特权模式,运行内核代码
3、微内核停止当前进程,根据发送来的消息中的数据,确定发给谁,这条消息就是给内存管理进程
4、内存管理进程收到内核来的消息,分配给内存
5、内存管理进程,分配完成后,发送消息给微内核,并返回分配内存的首地址,然后继续等待下一条消息
6、微内核把内存管理进程传来的包含首地址的消息在返回给应用程序
7、处理器转成用户模式,应用程序就可以使用这块内存了
缺点:看到上面的过程,内核处理一条消息,走的路比宏内核多了好多,这样就会造成很大的开销,性能也不如宏内核好
优点:系统良好的移植性,代码量少,有相当好的伸缩性、拓展性
3.3.3)分离硬件
分离硬件与上层主要目的就是使上层的开发更简单。分离硬件,就是吧操作硬件和处理硬件功能差异的代码分离出来,形成一个独立的软件抽象层,对外提供接口。
这样做会使移植性大大增强
3.4)内核总体设计
首先来说分为三层
1、内核接口层
定义一套unix接口子集,接口很少。接口主要检查参数是否合法,有错误就返回,没有就调用下层完成核心功能
2、内核功能层
2.1、进程管理,进程创建销毁调度
2.2、内存管理,页内存,任意大小内存
2.3、中断管理,当前运行的程序突然发生中断,就会跳到指定的中断函数去执行相关服务
2.4、设备管理,创建设备销毁设备访问设备
3、内核硬件层
3.1、初始化,就是加载到内存最先运行的代码,如初始化CPU,内寸、中断等数据结构
3.2、CPU控制,用户模式特权模式切换,开关中断,读写寄存器等
3.3、中断处理,保存中断上下文,调用中断回调函数,操作中断控制器等
3.4、物理内存管理,分配释放内存,内存映射,MMU,cache等
3.5、其他功能,有些硬件平台有特殊功能,单独处理
另外linux是单内核,汲取了宏内核与微内核的优点,同时也是我们要设计的系统内核的思想。
3.5)linux架构
手写操作系统目录
则移山填海之难,
终有成功之日!
——孙文