在本书中,你将尝试从零自制操作系统。你会体验到制作操作系统的整个过程,从打开计算机、调用操作系统本身到能够运行各种应用。你会了解到计算机的内部结构,以及操作系统的工作原理 ;在此 之前,它们对于你来说可能一直都是黑箱。
《从零自制操作系统》内容包括 :个人可以制作操作系统吗、计算机工作原理和 Hello World 、EDK II 和内存映射、 屏幕显示实践和引导加载器、像素绘图和 make 入门、文本显示和控制台类、鼠标输入和 PCI 、中断和 FIFO、内存管理、叠加过程、窗口、定时器和 ACPI、键盘输入、多任务处理、终端、命令、文件系 统、应用、分页、系统调用、窗口应用、图形和事件、多终端、使用应用加载文件、从应用写入文件、 应用的内存管理、日文显示和重定向、应用间通信、额外应用、前方的路,以及配置开发环境、获取 MikanOS 、EDK II 文件说明、C++ 中的模板、iPXE 、ASCII 码表。
《从零自制操作系统》的目标读者是写过简单程序的人。如果你编写过几百行代码,有相关编程经验,那么应该可以 毫无顾虑地通读本书。但如果你从未编写过程序,那么阅读本书将会很吃力。
√ 只需30天,从零开始编写一个五脏俱全的图形操作系统√ 39.1KB的迷你系统,可实现多任务、汉字显示、文件压缩,还能听歌看图玩游戏√ 出自日本编程天才之手,一本书揭开CPU、内存、磁盘及操作系统底层工作模式神秘面纱
内田公太,日本东京资深软件工程师。他毕业于东京工业大学,取得工程学士和硕士学位。就职于cybozu公司期间,专注于将Walb部署到生产环境。在学术领域,他多次出席软件工程基础会议,分享过大量研究成果,并在 2015 年出版了关于英特尔X86 架构的书籍及相关模拟器。此外,他还积极举办面向业余操作系统开发者的研讨会,投身于推动技术交流。
本书的主题是自制操作系统。从零开始,用30章做出一个简单的操作系统:MikanOS 。 在30章结束之后,你将看到下图所示的效果。图中的一切都是依照本书的内容实现的。当 然,这些功能都是独立运行的,没有使用其他操作系统。
操作系统(Operating System)是计算机中的基础软件,比如常见的Windows 、macOS和 Linux。操作系统在计算机的使用过程中发挥着重要作用——它通过提供网络浏览器和文字处 理器等常用功能来支持应用开发,通过分配计算资源来实现多个应用的同时使用,并且提供 了统一的操作方法。操作系统使计算机更加强大,更易于使用。
本书的目标是制作一个无须借助其他操作系统即可运行的操作系统,而不是在既有的操 作系统(如 Windows)上运行的应用。不借助其他操作系统的功能意味着,比如在操作鼠标 时,自己编写鼠标指针(箭头)在屏幕上移动的过程;使用键盘输入命令并按下回车键时, 自己编写启动命令的进程。此外,还必须创建一个函数来探知并管理计算机的内存。几乎所 有的处理过程都是自己完成的,这就是自制操作系统。是不是很激动人心?
乍一看,自制操作系统似乎是在浪费时间。虽然现在已经有了很多功能强大的操作系 统,自制操作系统是在模仿它们,但是自制操作系统能给你带来宝贵的经验。探索计算机系 统的工作原理会激发你的求知欲。从实用的角度来看,了解硬件和操作系统的工作原理将拓 宽软件工程师的工作范围:研究操作系统如何工作,并探索如何创建高效运行的应用。或 者,在调查系统故障原因时,可以利用调试操作系统的经验来深入研究。当需要阅读 Linux 内核的代码时,如果有制作操作系统的经验,那么读起来会容易得多。
现在我们用专业术语介绍一下 MikanOS的功能:MikanOS是一个通过UEFI BIOS启动的 操作系统,以 64位模式运行,具有抢占式多任务、窗口系统、分页内存管理和系统调用等 功能。如果你不知道这些专业术语的含义,也不要紧,本书的任务就是在实践中解释它们的 含义。
目标读者
如今,个人可以创建复杂的网络服务和支持VR的游戏。如果你购买了一台面向物联网的 小型计算机,就可以立即开始从事十年前无法想象的高级电子工作了。以如何构建编译器和 CPU为主题的书也已出版。
虽然制作各种东西变得更加容易,但制作操作系统却变得更加困难。这是随着计算机的 日益复杂而演变出的结果。本书的目的就是揭示隐藏在黑暗中的操作系统原理,确保自制的 乐趣依然存在。为什么不与作者一起手工制作操作系统呢?
本书是2006年出版的《30天自制操作系统》的衍生成果。这是一本非常好的书,2021年 仍在印刷。但自该书出版以来,个人计算机已经发生了很大的变化,有些信息(尤其是与硬 件相关的信息)已经过时。于是,我决定写一本新书1 。因此,本书的内容是在编写此书时市 面上销售的计算机上进行测试的(但不保证在所有型号的计算机上都能正常工作)。
本书的目标读者是写过简单程序的人。如果你有几百行代码的编写经验,那么应该可以 毫无顾虑地阅读本书。但如果你从未编写过程序,那将会很吃力。
本书中的MikanOS是用C++编写的。对于那些不熟悉C++的读者,书中会提供一些解 释。要了解更多,可以参考本书中的说明,也可以参考相关的入门书籍和网站信息。你可能 决心在开发操作系统之前完全学会C++,但作者认为,在开发的过程中根据需要学习 C++ , 会更容易保持积极性。脚踏实地,勇往直前吧!