一个64位操作系统的设计与实现
上QQ阅读APP看书,第一时间看更新

1.4 本书操作系统简介

在了解操作系统的结构组成和编写操作系统需要的知识后,接下来将对本书即将实现的操作系统加以介绍。本书以Linux操作系统作为主要参考对象,来编写一个操作系统雏形,并将其运行在物理平台上。此举既可以对学习代码量巨大的Linux内核有所帮助,又可以在本系统基础上通过动手实践对理论加以验证,进而做到举一反三。而且,使用物理平台运行操作系统,会大大增加读者的成就感和对操作系统的理解能力,同时还能排除虚拟平台带来的差异和问题。下面将本操作系统分为引导启动、内核层与应用层三部分,并逐一对它们进行介绍。

引导启动。引导启动程序将使用NASM汇编语言编写,实现U盘引导启动、文件系统识别、系统内核加载、内存容量检测、显示模式的检测与设置、处理器运行模式切换、页表配置等功能,进而完成系统内核运行前的准备工作。此环节涉及的关键技术点有BIOS中断调用、VBE功能获得和设置、FAT12/32文件系统结构解析、E820内存地址分布、U盘与磁盘的区别、处理器体系结构探索等。

内核层。内核层部分是操作系统的重头戏。正如前文所述,本系统将参考Linux内核来编写一个功能相对健全的内核雏形,其中会涉及编译技术和链接技术来将程序划分出不同的代码空间。而且,系统内核还将配有内存管理模块、中断/异常处理模块、进程管理模块、多核通信模块、文件系统模块、外部设备驱动等一系列功能模块,成为一个可以正常工作且功能相对完整的系统内核。同时,本系统还将遵循POSIX规范标准,为应用层提供通用的编程接口(系统调用API)。

应用层。应用层部分将实现Shell命令解析器和一些基础命令。既然内核层已经实现了系统调用API,那么这些应用程序便可在此基础上予以实现。

综上所述,虽然本书操作系统参考了Linux内核源码,但并非直接裁剪Linux内核源码而成!因为,这样会帮助读者在学习本书的同时,便于向Linux内核过渡。就像当年Linux参考Unix一样,我们的操作系统必须先有个健全的系统雏形,才能承载我们远大的梦想。