Simple kernel for learning operating systems. 用于学习操作系统的简单内核
Simple kernel for learning operating systems. 用于学习操作系统的简单内核
C/C++ 其它杂项
共962Star
详细介绍
SimpleKernel
关键词
-
Kernel
-
C/C++
-
UXIN-like
-
Multiboot2
简介
SimpleKernel,一个用来练手的简单内核。提供了各个阶段完成度不同的内核,你可以从自己喜欢的地方开始。
开发环境
-
Ubuntu Linux
注意:未测试
- bochs
- i386-elf tool chain i386-elf-binutils, i386-elf-gcc, i386-elf-grub
- xorriso
-
Mac
-
Homebrew
-
bochs
-
x86_64-elf tool chain
x86_64-elf-binutils, x86_64-elf-gcc, x86_64-elf-grub
-
xorriso
-
注:可以使用 setup.sh 自动安装环境
如何运行
git clone https://github.com/MRNIU/SimpleKernel.git
cd SimpleKernel/
sh setup.sh
运行截图
目录结构
-
原则
整个工程按照功能模块划分子目录,每个子目录再划分头文件和源文件目录,以便架构清晰、易懂。
目录设计
-
原则
目录的命名能准确描述模块的基本功能,建议用小写字母且不含下划线、点等特殊符号;
目录必须放于相包含的父目录之下,并需要明确与其他目录间的耦合性。
-
示例
kernel:系统内核部分; libs:依赖库;
依赖关系
-
原则
新添加组件往往依赖于系统原有组件,必须以最小耦合的方式明确所直接依赖的组件。
头文件
文件命名
头文件命名能准确描述文件所包含的模块内容,达到通俗、易懂的目的。
Makefile
测试
自动集成
合并到 master 分支时需要通过 Travis CI 测试。编译没有错误即可。
代码风格
镜像文件
simplekernel.img 是 1.44 软盘,我们的内核就在这里。
TODO
- 并发
- 文件系统
- 设备驱动
贡献者
贡献
请阅读 CONTRIBUTING.md。
感谢
此项目参考了很多优秀的项目和资料
《程序员的自我修养--链接、装载与库》(俞甲子 石凡 潘爱民)
JamesM's kernel development tutorials
How-to-Make-a-Computer-Operating-System
捐助者
-
l*e
支持作者
请我喝杯咖啡吧! (ps: 请注明 GitHub id 以便加入捐献者名单
版权信息
此项目使用 MIT 许可证
-
0 Star
-
9295 Star
-
0 Star
-
0 Star
-
1111 Star
-
0 Star
-
0 Star
-
591 Star
-
0 Star
-
0 Star