译至: Writing a Simple Operating System — from Scratch
简介
我们之前都使用过操作系统(Windows, Linux 等等),或许我们还写过一些在操作系统上运行的程序。那到底什么是操作系统? 我在使用计算机时看到的内容有多少是由硬件完成的?多少是由软件完成的? 以及计算机是如何工作的?
已故的Doug Shepherd教授,我在兰卡斯特大学学习时的一位活泼的老师,曾经在我抱怨一些讨厌的编程问题时提醒我:在早些年,如果他想要做些研究的话,他必须先开发一个操作系统。
所以我们今天才要花费这些时间来了解这个神奇的机器是如何与各个层级的软件进行工作的,哪些软件是我们日常使用所必须的。
在这里,专注于广泛使用的x86架构CPU,我们将剥离我们的所有的计算机软件并遵循Doug的早期足迹,一路学习关于:
- 计算机的启动过程
- 如果在没有操作系统的情况下编写底层程序
- 如何配置CPU以便我们可以开始使用其扩展功能
- 如何调用更高级语言编写的代码,以便我们真正开始朝着我们自己的操作系统取得一些进展
- 如何创建一些基本的操作系统服务,如设备驱动程序,文件系统,多任务处理等。
请注意,就实际操作系统功能而言,本指南并非旨在扩展,而是旨在将来自多个来源的信息片段汇集到一个自包含且连贯的文档中,这将为您提供实践底层编程的经验,如何编写操作系统,以及他们必须解决的问题类型。
本指南采用的方法是独特的,因为特定的语言和工具(例如汇编,C,Make等)不是焦点,而是被视为达到目的的手段:我们将了解我们对这些事情的需求,以帮助我们实现我们的主要目标。