Skip to content

MdrOS 项目概述

开发操作系统是一个漫长的过程, 需要你有一定的计算机底层原理知识以及C和汇编语言的基础。
本章教程将教学您如何从零开始开发一个适用于x86平台的32位操作系统

概念

操作系统是一种系统软件,它是控制管理计算机系统的硬软件,分配调度资源的管理者
其内部功能有:

  • 内存管理
  • 设备驱动
  • 中断处理
  • 任务调度

计算机启动过程

  1. 电源键按下
  2. POST加电硬件自检
  3. 加载BIOS
  4. 加载引导程序
  5. 计算机控制权移交给操作系统内核

这样, 一个操作系统就算启动了。接下来内核会初始化各种功能以及加载一些必要的设备驱动,具体的启动方式还是要依据该操作系统的架构决定。

环境准备

您需要:

以及(选择性):

项目结构

在教程中标注的一些函数中,注释会解释该函数原本被定义在哪个源文件内,为了方便理解而写入代码示例中。

我们建议你安排好你的项目结构,以便这些函数的重复利用。

相关文献网站

在开发操作系统的细节部分 (如某些硬盘系统的接口协议) 您可以查阅相关资料。

养成经常查阅资料的好习惯是个不错的选择

  • OSDEV 该Wiki讲解了所有有关操作系统开发的知识细节
  • CSDN 可以查找到更多前辈们的开发经验
  • Intel文档 关于Intel硬件平台的详细硬件开发细节, 您可以在这里查阅

教程目录

  1. 引言
  2. 项目构建
  3. 引导程序
  4. 视频驱动
  5. 中断系统
  6. 内存管理
  7. ACPI

告诫

  • GUI并不是操作系统必要的功能, 一个操作系统可以没有GUI, 但是其必要实现的功能必须齐全且稳定
  • 《30天自制操作系统》这本书仅供GUI部分参考,其他功能实现并不是很好,不建议您全部借鉴
  • 64位长的操作系统会比32位保护模式的操作系统实现更难, 比如32位只需要二级页表即可,64位需要4级甚至更多才能管理所有内存
  • ARM等其他架构的CPU与x86平台的CPU实现截然不同, 其中x86的很多机制在ARM是没有的, 同理ARM某些机制x86也没有
  • 本教程只是教学您如何实现一个最简单的宏内核操作系统,如果您想完善您的操作系统, 可以去查阅更多的资料
  • 操作系统编写好都是要在实体机上测试的, 无法在实体机上跑的操作系统就不是一个真正的操作系统