# 1. 介绍

我们都曾使用过操作系统(例如:WindowsXP, Linux, 等), 有的人甚至编写过一些程序运行在操作系统之上,但是我们有没有想过OS到底是什么呢?当我使用电脑的时候,我看到的东西有多少是硬件实现的又有多少是软件实现的呢?电脑到底是怎么工作的?

我在 Lancaster 大学的一位活跃的老师 Doug Shepherd 教授(已故),曾在我为一些烦人的编程问题而苦恼时告诫我,在他们那个年代,他在开始任何研究之前都得从头写一套他自己的操作系统。 所以在当下,我们好像会觉得服务层下这个奇妙的机器每天给我们提供的有用的功能是理所应当的。

这里,我们聚焦于广泛使用的x86结构体系CPU, 我们将把计算机上所有的软件都去掉,并追随 Doug 教授以前的的足迹一路学习这些内容:

  • 计算机是怎么启动的
  • 怎么在没操作系统的裸机上编写底层程序。
  • 怎么配置CPU以便于我们开始使用它的扩展功能。
  • 怎么引导用高级语言编写的代码,这样的话我们就能真正的开始向我们自己的操作系统前进。
  • 怎么编写一些基础的操作系统服务,比如:设备驱动、文件系统、多任务处理

注意,与实际的操作系统功能相比,本指南不意在广泛覆盖这些功能,而是意在多个来源的信息聚集与一个独立且紧密联系的文档中,这将方便你体验底层编码、学习怎么编写操作系统及知道编写操作系统必须解决的问题。本指南采用特殊的方式来介绍这些问题,特定的语言和工具(例如:汇编,C,Make 等)不是重要的,而是被视为达到目的的手段,我们将学习我们需要的这些知识来帮助我们实现最终的主要目标。

本项目设计的目的不是替代像Minix这样的优秀项目,而是作为学习这些优秀项目以及开发操作系统的垫脚石。

最近更新: 2021/1/5 上午5:27:27