本项目是一个基于 x86 32 位架构的教学型操作系统,采用 C 语言和部分汇编实现,适合作为操作系统原理课程的学习和实验平台。项目实现了从引导加载、内存管理、中断处理、进程/线程管理、文件系统、用户程序、shell 等核心功能。
├── command/ # 用户命令实现,如cat等
├── device/ # 设备驱动(如控制台、硬盘、键盘、定时器等)
├── fs/ # 文件系统相关实现
├── include/ # 启动相关头文件
├── kernel/ # 内核核心代码(内存、进程、调度、中断等)
├── lib/ # 基础库函数(字符串、列表、调试、stdio等)
│ ├── kernel/ # 内核态库函数
│ └── user/ # 用户态库函数
├── note/ # 项目笔记
├── picture/ # 图片资源
├── shell/ # shell 相关实现
├── thread/ # 线程与同步机制
├── userprog/ # 用户程序管理与系统调用
├── build/ # 编译输出目录
├── makefile # 构建脚本
└── README.md # 项目说明文档
-
准备环境
- 推荐 Linux 环境,需安装
gcc-4.6、nasm、ld等工具。 - 确保
makefile中HD60M_PATH路径为你本地的硬盘镜像文件路径。
- 推荐 Linux 环境,需安装
-
编译项目
make all
-
运行方式
- 可使用 Bochs、QEMU 等虚拟机加载生成的硬盘镜像文件进行调试和运行。
- 引导与加载:MBR.S、loader.S 负责系统引导和内核加载。
- 内存管理:kernel/memory.c、bitmap.c 实现物理内存分配与管理。
- 中断与异常:kernel/interrupt.c、timer.c、print.S 等实现中断处理与时钟。
- 进程/线程管理:thread/、kernel/process.c、userprog/ 等实现多进程/线程调度、同步与切换。
- 文件系统:fs/ 目录下实现简易的类 Unix 文件系统,包括目录、文件、inode、超级块等。
- 设备驱动:device/ 目录下实现控制台、硬盘、键盘等驱动。
- Shell 与命令:shell/、command/ 目录下实现简单 shell 及内置命令(如 cat、pipe 等)。
- 库函数:lib/ 目录下实现字符串、调试、stdio 等常用库函数,分为内核态和用户态。
如需详细了解各模块实现细节,请查阅对应目录下的源码及注释。