TinyOS
2019-12-11 本文已影响0人
HAPPYers
分享一个自写的,模仿Linux0.11系统的一个小型操作系统。
此源码比较简短,功能虽然有限,但是可以对Linux系统基础的工作原理有较为广泛的认识.
该系统基于bochs和qemu运行,相关的配置可以参考项目的README
项目地址
系统实现了
- 基本的内存管理
- 线程调度
- 有输入(键盘中断)和输出
- 基本系统调用(getpid,printf等等)
- 基本的磁盘驱动
- 基于ext2的简单文件系统
分支
- master分支是稳定版本
- harddisk分支建议使用,会不断维护。
运行方式
在Linux或者wsl(子系统)中
下载源码
git clone https://github.com/pcy190/TinyOS.git
安装依赖项目
sudo apt install bochs qemu -y
sudo apt-get install build-essential module-assistant
sudo apt-get install gcc-multilib g++-multilib
编译运行
make run
目录介绍
-
kernel/main.c
这是内核启动完后的主进程的程序。可以在这里添加主要的逻辑代码 -
boot/
内核启动的引导代码。mbr引导到loader去加载内核。 -
fs/
文件系统目录 -
device/
设备驱动目录。包括时钟中断,键盘中断,磁盘中断的处理 -
lib/
基本C语言中字符串,内存,读入输出的函数实现 -
thread/
线程调度与管理 -
userprog/
用户态和内核态切换。包括系统调用的syscall的声明。
hd80M.img
文件是附加的磁盘,文件系统在此格式化并建立。
要运行的自定义二进制文件,可以通过dd或者syscall来写入读入并运行。
hd.img
是系统内核所在磁盘,如果不存在会自动新建。