MdrOS 项目概述
开发操作系统是一个漫长的过程, 需要你有一定的计算机底层原理知识以及C和汇编语言的基础。
本章教程将教学您如何从零开始开发一个适用于x86
平台的32位操作系统
概念
操作系统是一种系统软件,它是控制管理计算机系统的硬软件,分配调度资源的管理者
其内部功能有:
- 内存管理
- 设备驱动
- 中断处理
- 任务调度
计算机启动过程
- 电源键按下
- POST加电硬件自检
- 加载BIOS
- 加载引导程序
- 计算机控制权移交给操作系统内核
这样, 一个操作系统就算启动了。接下来内核会初始化各种功能以及加载一些必要的设备驱动,具体的启动方式还是要依据该操作系统的架构决定。
环境准备
您需要:
- i686-elf-tools 交叉编译工具链
- nasm 汇编编译器
以及(选择性):
项目结构
在教程中标注的一些函数中,注释会解释该函数原本被定义在哪个源文件内,为了方便理解而写入代码示例中。
我们建议你安排好你的项目结构,以便这些函数的重复利用。
相关文献网站
在开发操作系统的细节部分 (如某些硬盘系统的接口协议) 您可以查阅相关资料。
养成经常查阅资料的好习惯是个不错的选择
教程目录
告诫
- GUI并不是操作系统必要的功能, 一个操作系统可以没有GUI, 但是其必要实现的功能必须齐全且稳定
- 《30天自制操作系统》这本书仅供GUI部分参考,其他功能实现并不是很好,不建议您全部借鉴
- 64位长的操作系统会比32位保护模式的操作系统实现更难, 比如32位只需要二级页表即可,64位需要4级甚至更多才能管理所有内存
- ARM等其他架构的CPU与x86平台的CPU实现截然不同, 其中x86的很多机制在ARM是没有的, 同理ARM某些机制x86也没有
- 本教程只是教学您如何实现一个最简单的宏内核操作系统,如果您想完善您的操作系统, 可以去查阅更多的资料
- 操作系统编写好都是要在实体机上测试的, 无法在实体机上跑的操作系统就不是一个真正的操作系统