8000 CCOperatingSystemX64/tutorial/21_process_simple at main · Charliechen114514/CCOperatingSystemX64 · GitHub 8000
[go: up one dir, main page]

Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Stage 21: 简单进程管理教程

阶段概述

欢迎来到 Stage 21。在这一阶段,我们将实现操作系统的核心功能之一:进程管理。这标志着我们的内核从单线程执行向多任务系统的重大跨越。

通过这个教程系列,你将学会:

  • 如何设计进程控制块(PCB)数据结构
  • 如何实现进程调度器
  • 如何用汇编实现上下文切换
  • 如何实现 fork、exit、wait4 等经典系统调用
  • 如何支持线程管理
  • 如何实现可扩展的调度类框架

前置条件

开始之前,请确保你已经完成了:

  • Stage 20: 系统调用框架
  • 理解 x86_64 汇编基础
  • 理解虚拟内存管理(VMM)
  • 熟悉 System V AMD64 ABI 调用约定

环境要求

操作系统: Ubuntu 22.04 LTS / WSL2 / Arch WSL
编译器:   x86_64-elf-gcc 或类似交叉编译器
构建工具: CMake 3.25 或更高版本
模拟器:   QEMU 7.0 或更高版本
汇编器:   NASM 2.15 或更高版本

教程列表

本教程包含以下章节,建议按顺序阅读:

第一部分:概念和设计

第二部分:基础实现

第三部分:调度器

第四部分:核心功能

第五部分:扩展功能

核心成果

完成本阶段后,你的内核将具备:

  • 进程控制块(PCB)管理

    • 进程标识(PID、PPID)
    • 进程状态(READY、RUNNING、BLOCKED、ZOMBIE)
    • 进程树管理(父子关系、兄弟关系)
  • 进程调度器

    • 可扩展的调度类框架
    • Round-Robin 调度算法
    • 优先级调度算法(可选)
  • 上下文切换

    • 汇编实现的高效切换
    • 地址空间切换(CR3)
    • TSS 内核栈管理
  • 内存隔离

    • 每进程独立地址空间
    • 用户空间创建/销毁
  • 系统调用

    • fork() - 创建进程
    • exit() - 退出进程
    • wait4() - 等待子进程
    • getpid() / getppid() - 获取进程 ID
  • 线程支持

    • 内核线程创建
    • 用户线程创建
    • 线程 join/detach

快速开始

如果你想直接看到结果,可以跳到最后一章:

# 编译内核
cd /home/charliechen/CCOperatingSystemX64
cmake -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build

# 运行演示
qemu-system-x86_64 -kernel build/kernel.bin -serial stdio

相关文档

上一阶段

Stage 20: 系统调用框架


作者: CharlieChen114514 最后更新: 2026-02-20

0