一个简易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、应用层

  • 命令解析器:负责解析用户输入的命令,并调用相应的系统调用。