Skip to content

AbstractThink/os-tutorial-cn

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

翻译自 : cfenollosa/os-tutorial

English

操作系统教程

如何从零创建一个操作系统!

我总是在想,如何从零制作一个操作系统。在大学里,教给我的是如何实现高级特性(如分页、信号量、内存管理等),然而:

  • 我从未从自己的启动扇区开始
  • 大学知识比较难,我大部分记不住
  • 有些人认为通过阅读现有的内核是学习操作系统的好方法,尽管它很小。

受到 这份文档OSDev wiki 的启发,我将尝试制作短小的、一步一步的说明文档和示例代码。 老实说,这份教程主要基于第一份文档,但是被分成了更小的部分,没有理论。

更新: 更多资源: 关于操作系统开发的James’s 内核开发教程

特点

  • 这个课程是一份编码指导,面向的是乐于底层编码人员。 例如,对操作系统如何工作好奇,但是没有时间或意志从头到尾地阅读 Linux 内核。
  • 这里的理论非常少。这也是一个特点。Google 就是你的理论课。大学里过多的理论比没有理论更糟糕,它会让一些东西比它实际更加困难。
  • 教程非常小,可能 5-15 分钟就完成了。相信我,也相信你自己。你可以做到的!

如何使用这份教程

  1. 从第一个目录开始按序往下看。它们是在之前的代码上构建的,如果你直接跳转到 05 目录,你将不知道这里为什么会有 mov ah, 0x0e 。因为你错过了 02 课程。 眞的,只要按序阅读即可。你可以跳过你已经知道的材料。
  2. 打开 README, 阅读第一行,这是你在阅读代码之前应该知道的概念细节。 Google 那些你不了解的概念。第二行是每个课程的目标。阅读它们,它们解释了为什么要这样做。 “为什么” 和 “如何做” 一样重要。
  3. 阅读剩下的 README, 它非常 简洁.
  4. (可选)阅读 README 之后,尝试自己写代码文件。
  5. 查看代码示例,它们注释的非常好。
  6. (可选)尝试修改代码做一些实验。一定要确保你理解你改动的代码,并用其它命令复现。

TL;DR: 首先阅读每个目录的 README, 接着阅读代码文件。如果你有勇气,你可以自己编码。

策略

我们将在操作系统上做许多事情:

  • 从裸机启动,不用 GRUB, - DONE!
  • 进入 32 位模式, - DONE!
  • 从汇编跳转到C语言, - DONE!
  • 中断处理 - DONE!
  • 屏幕输出和键盘输入, - DONE!
  • 一些基本的库函数,根据我们需要进行添加 - DONE!
  • 内存管理
  • 写一个文件系统存储文件
  • 制作一个非常简单的 shell
  • 用户模式
  • 也许会写一个文本编辑器
  • 多进程和调度

也许我们会按序进行,然而不久之后就知晓了。

如果我们有勇气:

  • BASIC 解释器
  • GUI
  • 网络

Contributing

这是一个个人学习项目,即使它已经很久没有更新了,我仍然希望偶而进来看看。

我感谢所有指出 bug 和提交 pull requests 的人。我需要时间审查所有的事,因此我不能保证马上发出。

请自由 fork 这个仓库。如果你们大部分对这个仓库有兴趣,告诉我,我在这里列出 “main fork”.

About

cfenollosa/os-tutorial 的中文翻译

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 47.2%
  • Assembly 46.5%
  • Makefile 6.0%
  • C++ 0.3%