# x64 **Repository Path**: zxh879776225/x64 ## Basic Information - **Project Name**: x64 - **Description**: study 64bit os - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-10-08 - **Last Updated**: 2025-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # X64 Kernel Project ## 简介 这是一个64位内核开发项目,旨在构建一个支持多处理器和现代硬件特性的操作系统核心。项目包含了启动加载程序、内核初始化、中断处理、内存管理、文件系统支持(包括FAT32)、设备驱动等多个核心组件。 ## 特性 - 支持x86-64架构 - 多处理器(SMP)支持 - FAT32文件系统实现 - 中断与异常处理框架 - 内存管理与分配机制 - 设备驱动(键盘、鼠标、硬盘等) - 定时器与软中断支持 ## 结构 - **source/boot**: 启动加载程序相关代码 - **source/loader**: 16位与32位加载器代码 - **source/kernelx64**: 内核主代码 - **interrupt**: 中断处理模块 - **memory**: 内存管理系统 - **disk**: 磁盘驱动 - **VFS**: 虚拟文件系统层 - **fat32**: FAT32文件系统实现 - **SMP**: 多处理器支持 - **tools**: 工具函数库 ## 使用 ### 编译 1. 确保安装了必要的编译工具链(如GCC、NASM、CMake等) 2. 在项目根目录运行CMake配置 3. 执行`make`命令进行编译 ### 运行 使用QEMU运行: ```bash qemu-system-x86_64 -kernel image/kernel64.elf ``` 使用脚本运行: ```bash ./script/qemu-debug-linux.sh ``` ### 调试 - 使用`.vscode/launch.json`进行调试配置 - 使用`.vscode/tasks.json`执行构建任务 ## 文档 ### 启动流程 - `source/boot/boot.c`中定义了`boot_entry`作为启动入口 - `source/loader/loader_16.c`中的`loader_entry`负责从实模式切换到保护模式并最终跳转到64位内核 ### 内核初始化 - `source/kernelx64/main.c`中的`Start_Kernel`是内核的起始函数 - 初始化包括CPU、内存、中断控制器、定时器等模块 ### 内存管理 - `source/kernelx64/memory.c`实现了内存管理功能 - 页面分配与释放 - Slab分配器 - 页表初始化 ### 中断处理 - `source/kernelx64/interrupt.c`中定义了中断注册与处理接口 - 支持硬件中断和IPI(处理器间中断) - 实现了8259A和APIC中断控制器 ### 文件系统 - `source/kernelx64/fat32.c`实现了FAT32文件系统的读写操作 - 支持文件打开、关闭、读取、写入、查找等功能 - 实现了超级块、索引节点、目录项等操作 ### 设备驱动 - **硬盘**: `source/kernelx64/disk.c`实现了IDE设备的基本读写操作 - **键盘**: `source/kernelx64/keyboard.c`实现了键盘中断处理和输入缓冲 - **鼠标**: `source/kernelx64/mouse.c`实现了鼠标中断处理和输入缓冲 ### 调度器 - `source/kernelx64/schedule.c`实现了基本的任务调度机制 ### 时间管理 - `source/kernelx64/time.c`和`source/kernelx64/timer.c`提供了时间读取和定时器功能 ## 贡献 欢迎提交Issue和Pull Request。请确保遵循项目的编码规范和提交准则。 ## 许可证 该项目遵循MIT许可证,请查看项目的`LICENSE`文件获取详细信息。 ## 注意事项 - 项目包含了一些平台相关的定义如`APIC`, `IOAPIC`等,这些可能需要根据实际硬件环境调整 - 项目中的`source/comm/global_def.h`包含了一些全局定义和配置参数,修改时需谨慎 - 项目仍在开发阶段,部分功能可能不稳定或未完成 ## 联系 如有任何问题或建议,请联系作者zxh879776225。