这是我在大二时造的一个小轮子,萌生此意是因为受了 这个帖子 的作者 fleuria 启发。
OS67 是一个基于 i386 的玩具内核,主要参考了 Bram's Kernel Development Tutorail 和 xv6 。 代码开源在 https://github.com/LastAvenger/OS67 ,欢迎 Star ;)
实现了:
- 基础设备的驱动
- 简单的内存管理和虚拟内存映射
- Minix v1 文件系统
- 基于 fork/exec 实现的多进程
- 20 个系统调用
- 类 unix 的文件描述符实现 IO 重定向
- 简单的管道(由 shell 实现)
- 一些用户程序
近 7000 行代码, 不过其中有很多代码都是从 xv6 移植过来的。因此, OS67 充其量只是一个拙劣的 xv6 的重制品,但这并不妨碍我从中学习 Kernel 的原理。
如果有人对实现自己的 Kernel 感兴趣的话,可以参考一下我的代码,以及我在知乎的回答和博客的一些资料:
- https://www.zhihu.com/question/25628124/answer/71510837
- https://www.zhihu.com/question/28749911/answer/69346060
- https://www.zhihu.com/question/26557127/answer/33206700
- http://lastavenger.github.io/2015/08/07/minix-v1-file-system.html
- http://lastavenger.github.io/2015/09/14/process-scheduler-1.html
