# x86操作系统 **Repository Path**: chen_dl/x86-operating-system ## Basic Information - **Project Name**: x86操作系统 - **Description**: 这是一个x86操作系统 - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-10 - **Last Updated**: 2026-03-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 小型x86操作系统 基于 QEMU 开发 x86 微型 OS,实现 IDT 中断管理、时间片进程调度、分页内存隔离;适配 newlib 库,完成 FAT16 文件系统与多实例 Shell,支持 ELF 加载及 execve/fork 等系统调用,实现信号量 / 互斥锁保证进程同步。 **仓库地址:** https://gitee.com/chen_dl/x86-operating-system **技术栈:** C 语言、x86 汇编、操作系统内核、多进程调度、FAT16 文件系统 1、中断与异常处理:基于 IDT 表实现中断 / 异常处理逻辑,配置 8259 中断控制器完成硬件中断管理,保障系统中断响应稳定性。 2、进程管理:采用时间片轮转调度算法,基于 TSS 完成进程切换,实现计数信号量 + 互斥锁保证进程同步,支持 8 路 Shell 并发运行。 3、内存管理:为进程构建独立页表,结合特权级机制区分内核态 / 用户态,实现多进程地址空间隔离与内存保护。 4、设备与库适配:设计统一设备抽象接口(键盘 / 显示器 / 磁盘),移植并适配 newlib 库,实现标准 C 库系统调用支持。 5、文件系统与交互:实现 FAT16 文件系统及 echo/ls/cp/rm 等 Shell 命令,支持 execve/fork/wait 等系统调用与 ELF 文件加载运行。 ------ # 一、开发环境准备 目前是在ubuntu系统上进行开发 ### 1.1 下载开发软件 ``` sudo apt install gcc cmake gdb sudo apt-get install gcc-i686-linux-gnu sudo apt-get install qemu-system-x86 ``` > 我用的编程软件是vscode,如果没有请自行下载 ### 1.2 vscode需要的插件 ![image-20251110210515164](开发日志/picture/1.png) # 二、项目结构 ![image-20260220222009250](开发日志/picture/38.png) 1、boot 负责加载 loader; 2、loader 进入 32 位保护模式、开启分页机制并完成硬件检测,随后加载 kernel; 3、kernel 作为核心,包含多进程、中断管理、设备管理、文件系统、存储管理、内存分页和系统调用等模块; 4、最终 kernel 启动 shell,为用户提供交互接口。 ```shell . ├── applib ├── boot ├── common ├── kernel │ ├── core │ ├── cpu │ ├── dev │ ├── fs │ │ ├── devfs │ │ └── fatfs │ ├── include │ ├── init │ ├── ipc │ └── tools ├── loader ├── loop ├── shell ├── snake └── test_coredump ``` # 三、项目运行 ## 3.1 项目启动 ![image-20260220225031185](开发日志/picture/39.png) ## 3.2 help命令 ![image-20260220225153281](开发日志/picture/40.png) ## 3.3 echo命令 ![image-20260220225759696](开发日志/picture/41.png) ## 3.4 ls命令 ![image-20260220225924711](开发日志/picture/42.png) ## 3.5 less命令 ![image-20260220230124443](开发日志/picture/43.png) ## 3.6 cp命令 ![image-20260220230526806](开发日志/picture/44.png) ## 3.7 rm命令 ![image-20260220230708289](开发日志/picture/45.png) ## 3.8 运行贪吃蛇小游戏 ![image-20260220230834047](开发日志/picture/46.png) ![image-20260220231551414](开发日志/picture/47.png) ![image-20260220231629134](开发日志/picture/48.png)