Skip to content

zhangfuwen/trea_kernel

Repository files navigation

Custom Kernel

一个基于x86架构的简单操作系统内核项目,实现了基本的内存管理、进程管理、文件系统等核心功能。

项目特点

  • 基于x86架构,支持保护模式
  • 实现了基本的内存管理系统
    • 分页机制
    • 伙伴系统内存分配器
    • 虚拟内存管理
  • 进程管理和调度系统
    • 基本的进程创建和切换
    • 时间片轮转调度
    • 系统调用支持
  • 基础文件系统
    • VFS(虚拟文件系统)接口
    • 内存文件系统(MemFS)实现
    • 控制台文件系统
  • 设备驱动支持
    • VGA文本模式显示
    • 串口通信
    • 键盘驱动
  • 中断处理系统
    • GDT(全局描述符表)
    • IDT(中断描述符表)
    • 可编程中断控制器(PIC)支持

编译环境要求

  • GCC (支持C++17)
  • NASM (汇编器)
  • CMake (构建系统)
  • GRUB2 (引导加载程序)
  • QEMU (用于测试运行)

构建步骤

  1. 克隆项目代码:
git clone <repository_url>
cd custom_kernel
  1. 在WSL或Linux环境下编译:
./build_wsl.sh
  1. 生成initramfs:
./cpio_fs.sh

运行方法

使用QEMU运行:

./run.sh

项目结构

  • arch/ - 架构相关代码
    • x86/ - x86架构特定实现
  • boot/ - 引导加载相关文件
  • drivers/ - 设备驱动程序
  • include/ - 头文件
    • arch/ - 架构相关头文件
    • kernel/ - 内核功能头文件
    • lib/ - 通用库头文件
  • kernel/ - 内核核心功能实现
  • lib/ - 通用库函数
  • rootfs/ - 根文件系统相关文件
  • tools/ - 开发工具

主要模块说明

  • 内存管理:实现了基于伙伴系统的物理内存分配器和虚拟内存管理系统
  • 进程管理:支持基本的进程创建、切换和调度功能
  • 文件系统:实现了VFS接口和基本的内存文件系统
  • 中断处理:包括基本的中断处理机制和系统调用支持
  • 设备驱动:支持基本的输入输出设备

开发指南

  1. 代码风格遵循项目根目录下的coding_standards.md文件
  2. 新功能开发请创建独立的分支
  3. 提交代码前请确保通过基本的功能测试

许可证

本项目采用MIT许可证

贡献

欢迎提交Issue和Pull Request来帮助改进项目。

致谢

感谢所有为这个项目做出贡献的开发者。

About

An OS kernel developed using C++ and Trea

Resources

Stars

Watchers

Forks

Packages

No packages published