一个简易64位操作系统的设计与实现——开篇
纸上得来终觉浅,绝知此事要躬行
虽然看完了计算机体系结构相关的几本书,但是仍然觉得对操作系统和底层硬件的理解不够深入。
基于欲速则不达的原则以及财务情况,决定从零开始实现一个简易的64位操作系统,加深对计算机体系结构和操作系统的理解。
设计目标
实现一个简易的64位操作系统,主要包括以下几个方面:
- 64位操作系统
- 支持多核处理器
- 支持多线程
- 内存管理
- 异常/中断处理
- 设备驱动管理
- 文件系统
- 支持系统调用
- 简单的命令解析器和命令
开发环境
开发操作系统的软硬件环境如下:
- 硬件:MacBook Pro 16英寸(2019),CPU: i9-9880H,64GB内存
- OS:MacOS Sequoia 15.4 x86_64
- 编译器:GCC Apple clang version 17.0.0
- 汇编器:GAS Apple clang version 17.0.0 AT&T汇编解释器
- 汇编器:NASM 2.16.03 Intel汇编解释器
- 链接器:ld ld-1167.4.1
- 模拟器:Bochs 3.0
开发目录
按照操作系统的功能模块划分,目录结构如下:
1、引导程序
- 引导程序:负责加载内核和初始化系统。引导程序通常是用汇编语言编写的,直接与硬件交互。
2、内核层
- 内存管理:负责管理系统内存,包括内存分配、释放和分页等。
- 异常/中断处理:负责处理系统异常和中断。
- 文件系统:负责管理文件和目录,包括文件的创建、删除、读写等操作。
- 进程管理:负责管理进程的创建、调度和终止等操作。
- 设备驱动:负责管理设备的输入输出,包括键盘、鼠标、显示器等。
- 系统调用API:负责提供系统调用接口,供用户程序调用。
3、应用层
- 命令解析器:负责解析用户输入的命令,并调用相应的系统调用。