pcy190 发表于 2019-9-6 15:46

模仿Linux0.11的一个小系统

本帖最后由 pcy190 于 2019-9-6 15:47 编辑

分享一个自写的,模仿Linux0.11系统的一个小型操作系统。
此源码比较简短,功能虽然有限,但是可以对Linux系统基础的工作原理有较为广泛的认识.
该系统基于bochs和qemu运行,相关的配置可以参考项目的`README`
项目地址
- (https://github.com/pcy190/TinyOS/tree/harddisk)

源码打包好了放在附件

**系统实现了**
- 基本的内存管理
- 线程调度
- 有输入(键盘中断)和输出
- 基本系统调用(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
```


## 目录介绍
- (https://github.com/pcy190/TinyOS/blob/master/kernel/main.c)
这是内核启动完后的主进程的程序。可以在这里添加主要的逻辑代码
- (https://github.com/pcy190/TinyOS/tree/master/boot)
内核启动的引导代码。mbr引导到loader去加载内核。
- (https://github.com/pcy190/TinyOS/tree/master/fs)
文件系统目录
- (https://github.com/pcy190/TinyOS/tree/master/device)
设备驱动目录。包括时钟中断,键盘中断,磁盘中断的处理
- (https://github.com/pcy190/TinyOS/tree/master/lib)
基本C语言中字符串,内存,读入输出的函数实现
- (https://github.com/pcy190/TinyOS/tree/master/thread)
线程调度与管理
- (https://github.com/pcy190/TinyOS/tree/master/userprog)
用户态和内核态切换。包括系统调用的syscall的声明。

[`hd80M.img`](https://github.com/pcy190/TinyOS/blob/master/hd80M.img "hd80M.img")文件是附加的磁盘,文件系统在此格式化并建立。
要运行的自定义二进制文件,可以通过dd或者syscall来写入读入并运行。
`hd.img`是系统内核所在磁盘,如果不存在会自动新建。

JuncoJet 发表于 2019-9-6 17:24

X86的?{:301_1009:}

pcy190 发表于 2019-9-6 19:38

JuncoJet 发表于 2019-9-6 17:24
X86的?

是的。x86版本的
页: [1]
查看完整版本: 模仿Linux0.11的一个小系统