菜单

操作系统

相关源文件

本页面提供了“Build Your Own X”代码库中收集的操作系统开发教程的全面指南。它涵盖了从零开始创建操作系统的资源,范围从简单的引导加载程序到完整的操作系统实现。有关容器化和 Docker 的信息,请参阅Docker 和容器

目的与范围

此处列出的教程旨在通过指导您构建自己的操作系统组件来揭示操作系统基础知识的奥秘。这些动手项目涵盖了引导加载程序、内核、内存管理以及跨 x86、ARM 和 RISC-V 等各种架构的完整操作系统。

来源:README.md258-278

操作系统开发概述

操作系统开发涉及创建管理硬件资源并为计算机程序提供服务的软件。从零开始构建操作系统需要理解硬件接口、内存管理、进程调度和系统调用。

操作系统架构概述

来源:README.md258-278

典型的操作系统开发路径

大多数操作系统开发教程都遵循从基本引导加载程序到更复杂系统组件的渐进式路径

来源:README.md258-278

按编程语言分类的教程

操作系统开发教程按主要实现语言分组,每种语言在性能、安全性以及学习曲线方面都提供了不同的权衡。

汇编语言教程

汇编语言提供了对硬件的直接控制,但需要详细了解处理器架构。

教程平台重点难度
编写一个微型 x86 引导加载程序x86创建最小引导加载程序初学者
Baking Pi – 操作系统开发树莓派基于 ARM 的操作系统基础中级

来源:README.md260-261

C语言教程

C语言是操作系统开发中最常用的语言,因为它在低级控制和可读性之间取得了平衡。

教程平台重点难度
操作系统:从0到1x86完整的操作系统开发中级
关于操作系统开发的小册子x86操作系统基础初级-中级
开发你自己的玩具级 UNIX-clone 操作系统x86UNIX-like 操作系统实现中级
内核101 – 让我们编写一个内核x86基本内核创建初学者
内核201 – 带I/O的内核x86键盘和屏幕支持中级
为 ARM 构建一个最小多任务内核ARM多任务实现高级
如何从零开始创建操作系统x86逐步构建操作系统初级-中级
Malloc 教程通用内存分配中级
探索虚拟内存通用虚拟内存实现高级
使用 Linux 内核和树莓派进行操作系统开发树莓派基于 Linux 的方法中级
操作系统开发傻瓜书x86简化操作系统概念初学者

来源:README.md262-273

C++ 教程

C++ 提供了面向对象的抽象,同时保持了低级控制。

教程平台重点难度
编写你自己的操作系统x86完整的操作系统实现中级-高级
编写一个引导加载程序x86引导加载程序开发中级

来源:README.md274-275

Rust 教程

Rust 在提供内存安全保证的同时,保持了与 C 语言相当的性能。

教程平台重点难度
用 Rust 编写操作系统x86_64内存安全的操作系统开发中级
RISC-V Rust 操作系统教程RISC-VRISC-V 操作系统开发高级

来源:README.md276-277

语言无关教程

教程平台重点难度
从零开始的 Linuxx86构建一个 Linux 系统高级

来源:README.md278

操作系统开发组件

本教程涵盖了各种重要的操作系统组件

引导加载程序开发

引导加载程序是计算机启动时执行的第一段代码,负责初始化硬件并加载内核。

来源:README.md260-261 README.md275

内核开发

内核是操作系统的核心组件,负责管理内存、进程和设备交互。

来源:README.md262-273

目标架构

本教程涵盖了各种处理器架构,每种架构都具有不同的特性。

架构特性推荐教程
x86/x86_64最常见的桌面架构,复杂指令集操作系统:从0到1,关于操作系统开发的小册子
ARM节能,常用于移动设备为 ARM 构建一个最小多任务内核,Baking Pi
RISC-V开放指令集架构,日益流行RISC-V Rust 操作系统教程

来源:README.md260-278

学习路径推荐

面向初学者

  1. 编写一个微型 x86 引导加载程序内核101开始,以理解基本概念
  2. 进阶到关于操作系统开发的小册子
  3. 尝试如何从零开始创建操作系统

面向中级开发者

  1. 使用开发你自己的玩具级 UNIX-clone 操作系统实现更完整的系统
  2. 通过Malloc 教程探索内存管理
  3. 通过内核201尝试硬件交互

面向高级开发者

  1. 通过为 ARM 构建一个最小多任务内核处理多任务
  2. 通过探索虚拟内存深入了解虚拟内存
  3. 尝试使用内存安全语言(如 用 Rust 编写操作系统)实现完整的操作系统
  4. 使用从零开始的 Linux 构建完整的 Linux 系统

来源:README.md258-278

操作系统开发关键主题

这些教程共同涵盖了以下重要的操作系统开发主题

内存管理

内存管理涉及为进程分配和释放内存、处理虚拟内存以及实现内存保护。

教程关键内存概念
Malloc 教程动态内存分配
探索虚拟内存虚拟内存,分页
用 Rust 编写操作系统内存安全分配器

来源:README.md270-271 README.md276

进程管理

进程管理涉及进程的创建、调度和终止,以及促进进程间通信。

教程关键进程概念
为 ARM 构建一个最小多任务内核进程创建,多任务
开发你自己的玩具级 UNIX-clone 操作系统进程调度

来源:README.md266 README.md268

设备驱动程序和 I/O

设备驱动程序为操作系统提供与硬件组件通信的接口。

教程关键 I/O 概念
内核201键盘和屏幕交互
使用 Linux 内核和树莓派进行操作系统开发硬件接口

来源:README.md267 README.md272

开发工具和环境

成功构建操作系统需要专门的工具

工具类型目的示例
汇编器将汇编代码翻译成机器码NASM, GAS
编译器编译高级语言代码GCC, Clang, MSVC
模拟器无需真实硬件即可测试操作系统QEMU, Bochs, VirtualBox
调试器查找并修复问题GDB, LLDB
交叉编译器为不同架构构建ARM/RISC-V 工具链

来源:README.md258-278

结论

构建自己的操作系统是最具挑战性但也是最有成就感的软件项目之一。这些教程通过直接实现操作系统内部机制,提供了结构化的学习路径。无论您对引导加载程序、内存管理还是完整系统感兴趣,总有一个教程能与您的经验水平和兴趣相符。

来源:README.md258-278