介绍
一个简单的类unix内核,目前准备支持x86和arm架构,其中arm目标支持平台是raspi2b。在本系列文章中主要用arm的代码作为例子,原因是x86架构有较重的历史负担导致编码异常困难,但是x86部分我也差不多写了个大概,两者代码会考虑的。主要参考已有的类unix内核,xv6/FreeNOS/linux,重写一个通用的类unix的内核,并且提供一个最小根目录文件系统,验证可行性。
选择x86和raspi2b的另一个重要原因是qemu支持模拟这两种硬件型号,降低对实际物理硬件的依赖和调试难度。
开源代码地址
借用sqlite作者的话:
May you do good and not evil.
May you find forgiveness for yourself and forgive others.
May you share freely, never taking more than you give.
https://github.com/5dplay/tiny-kernel-v2.git
局限
- 目前仅在qemu上开发, 需要格外支持 才能在硬件机器上正常工作。
- 由于时间精力以及能力有限,目前的实现 仅支持32位,即使是arm也仅使用aarch32指令集。
- 仅支持单核,多核与单核相比多的是一系列并发处理上的问题,不影响整体框架。后续若是有精力再单独讨论smp相关的实现。
- 无论是内存管理还是其他的基本采用最简单的实现方式,但会提供接口以供他人编写出更酷的实现方式