Skip to content

Charliechen114514/CCOperatingSystemX64

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

82 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🖥️ CCOperatingSystemX64

从零构建的 64 位 x86_64 操作系统

项目从CCOperateSystem(笔者的X86操作系统)派生!

License: MIT Build Status Progress Platform LOC

升级到X64,全新的CCOperateSystem


📖 项目简介

CCOperatingSystemX64 是一个完全从零开始的 x86_64 架构操作系统开发项目。项目旨在通过实践深入理解计算机系统底层原理,包括:

  • 🔧 双阶段 Bootloader - 支持 LBA 与 CHS 双模式磁盘读取
  • 🚀 64位长模式 - 完整的 x86_64 长模式切换与页表设置
  • 🏗️ CMake 构建系统 - 现代化的构建与调试流程
  • 🐛 QEMU 集成调试 - 支持 GDB 远程调试与 VNC 图形界面

核心特性

特性 说明
双阶段 Bootloader 支持 LBA 与 CHS 双模式磁盘读取
64位长模式 完整的 x86_64 长模式切换与页表设置
CMake 构建系统 现代化的构建与调试流程
VSCode 调试 一键启动 GDB 远程调试
模块化设计 清晰的代码组织,易于学习
进程管理 fork/exit/wait、Copy-on-Write
调度器框架 Round-Robin、优先级调度、抢占式
系统调用 syscall/sysret、完整的 POSIX 接口
用户态支持 Ring 3 进程、用户态 C 库
同步原语 Spinlock、Mutex、Semaphore、CondVar、RWLock
文件系统 VFS、EXT2、ATA 磁盘驱动
多线程支持 内核线程与用户线程

🚀 快速开始

前置要求

工具 版本要求 用途
NASM >= 2.15 汇编器
GCC >= 15.2.1 C 编译器
CMake >= 4.2.3 构建系统
QEMU >= 10.2.0 系统模拟器
Python >= 3.14.2 构建脚本

构建与运行

# 克隆项目
git clone https://github.com/Charliechen114514/CCOperatingSystemX64
cd CCOperatingSystemX64

# 配置并构建
cmake -B build
cmake --build build

# 运行(VGA 图形模式 - 推荐)
cmake --build build --target vga-run

# 一键构建并运行
cmake -B build && cmake --build build --target build-and-vga-run

调试

F5 即可启动 VSCode 调试,支持断点、变量监视、调用栈查看等功能。

详见 调试教程


✨ 功能一览

系统基础

模块 功能
Bootloader 双阶段加载、LBA/CHS 兼容、64位长模式切换
内核入口 独立入口点、BSS 段清零、栈帧设置
串口驱动 COM1 配置、ANSI 颜色、同步输出

显示系统

模块 功能
VGA 文本模式 80x25 显示、16 色支持、硬件/软件光标
GUI 辅助 进度条、布局辅助
格式化输出 printf 风格输出、多后端支持
欢迎界面 ASCII 艺术 logo、模块化设计

内存与数据结构

模块 功能
字符串库 完整字符串操作 (strlen/strcpy/strcmp/strtok 等)
内存操作 memset/memcpy/memmove/memcmp
双向链表 Linux kernel 风格链表操作
哈希表 开放寻址哈希表
位图操作 位图管理、位查找、位图运算
数学工具 对齐、幂运算、除法变体、位操作宏

内存管理

模块 功能
E820 内存检测 BIOS E820/E801/88h 内存地图解析
物理帧分配器 Bitmap 物理帧分配/释放
虚拟内存管理 页表管理、地址映射、权限控制
堆内存管理 kmalloc/kfree、块合并算法
页错误处理 缺页异常、按需分页框架、Copy-on-Write 框架

中断与设备驱动

模块 功能
中断框架 IDT、异常处理、IRQ 描述符系统
PIC 控制器 8259A 初始化、IRQ 重映射、EOI 处理
PIT 定时器 可编程间隔定时器驱动
键盘驱动 PS/2 控制器、扫描码解析、环形缓冲区
串口中断 RX/TX 中断、串口 Shell
RTC 时钟 CMOS RTC、周期性中断、闹钟功能
ATA 磁盘驱动 ATA/ATAPI PIO 模式、LBA28/LBA48 寻址

开发工具

模块 功能
日志系统 五级日志、多后端输出、可配置过滤
断言系统 运行时/静态断言、可配置后端
栈回溯 符号解析、表格化输出、安全验证
Shell 系统 多后端支持、命令注册、内置命令

进程管理

模块 功能
进程控制块 PCB 结构定义、进程状态管理、PID 分配器
线程控制 TCB 结构、线程创建与退出
上下文切换 switch_context/switch_to_first 汇编实现
进程操作 fork/exit/wait4 系统调用、Copy-on-Write 支持
内核栈管理 每进程独立内核栈、栈溢出保护
用户栈设置 1MB 用户栈空间、自动增长支持

调度器框架

模块 功能
调度器抽象类 sched_class 多态设计、策略枚举
Round-Robin 调度 FIFO 队列、固定时间片 (10ms)
优先级调度 128 级优先级、Active/Expired 队列机制
抢占式调度 时间片到期、优先级抢占支持
调度器注册 动态注册、运行时切换

同步原语

模块 功能
Spinlock 自旋锁、Ticket Lock、关闭抢占支持
Mutex 互斥锁、基于等待队列实现
Semaphore 信号量、资源计数
CondVar 条件变量、等待/通知机制
RWLock 读写锁、读者优先策略
WaitQueue 等待队列、可中断等待
Atomic 原子操作、GCC 内建原子

系统调用

模块 功能
syscall/sysret 快速系统调用指令支持
系统调用分发 统一入口、参数解析、错误处理
进程管理 fork/exit/wait/getpid/getppid/yield
线程管理 thread_create/thread_exit
同步操作 mutex_lock/unlock、sem_wait/post
I/O 操作 write/read/open/close/lseek
系统信息 uname/getuid/kill/execve

用户态支持

模块 功能
Ring 3 切换 iretq 用户态进入、syscall 内核态返回
用户内存管理 USER_BASE~USER_END 地址空间、安全访问验证
内存拷贝 user_copy_from_user/to_user 安全拷贝
用户态 C 库 printf/malloc/exit 等标准库函数
用户程序构建 freestanding 编译、符号重命名、内核嵌入

文件系统

模块 功能
ATA 磁盘驱动 ATA/ATAPI PIO 模式、LBA28/LBA48 寻址
块设备层 通用块设备接口、请求队列管理
VFS 虚拟文件系统 超级块、inode、文件、目录项抽象
EXT2 文件系统 EXT2 超级块解析、inode 管理、块寻址
文件操作 open/read/write/lseek/close 系统调用
目录操作 readdir、路径解析、目录遍历
数据磁盘管理 自动创建、格式化 ext2 磁盘镜像

📚 学习路径

教程 (Tutorial)

每章教程都配有对应代码,从零开始构建操作系统:

章节 内容
01 Bootloader BIOS 加载与 MBR 引导
02 加载汇编内核 简单内核加载
03 统一引导 多内核支持
04 CMake 联合构建 现代化构建系统
05 大内核支持 超过扇区限制的内核
06 调试入门 GDB 基础调试
07 VGA + VSCode 调试 图形模式与完整调试
08 字符串工具 C 标准库实现
09 内存与串口 内存操作与串口通信
10 格式化日志 printf 与日志系统
11 链表与位图 数据结构基础
12 栈回溯 符号解析与调试
13 中断基础 IDT/PIT/键盘驱动
14 更多中断设备 串口中断/RTC/Shell
15 物理内存管理 E820 内存检测与物理帧分配
16 虚拟内存管理 页表管理与缺页异常
17 堆内存管理 kmalloc/kfree 实现
18 COW 与异常处理 写时复制与异常处理
19 代码重构 代码整理与重构
20 系统调用框架 syscall/sysret 指令支持
21 简单进程 进程控制块与上下文切换
22 调度器类 调度器抽象类与多策略支持
23 用户态进程 Ring 3 切换与用户态 C 库
24 ATA 磁盘驱动 ATA/ATAPI PIO 模式、LBA 寻址
25 EXT2 文件系统 VFS 与 EXT2 文件系统实现
26 同步原语 Spinlock/Mutex/Semaphore 实现

🤝 贡献

欢迎提交 Issue 和 Pull Request!


📄 许可证

本项目采用 MIT 许可证


Made with ❤️ for OS Development Enthusiasts

⬆ 返回顶部

About

A from-scratch x86_64 operating system project with a modern CMake + QEMU + GCC + NASM workflow. Built for learning, hacking, and truly understanding how an OS boots and runs.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors