Commit 6d48ea6d authored by 某某某's avatar 某某某
Browse files

Merge remote-tracking branch 'origin/docs'

parents 0a15f320 adb62a55
No related merge requests found
Showing with 73 additions and 10 deletions
+73 -10
**学校:** 合肥工业大学(翡翠湖校区)<br>
**参赛方向:** 小型内核实现<br>
**队伍编号:**<br>
**队伍名:** LH<br>
**队伍成员:** 张赫、林昀喆<br>
**指导老师:** 田卫东、周红鹃<br>
## 基本信息
# 项目简介
**参赛方向:** 小型内核实现
**队伍编号:** T202410359994432
**队伍名:** LH
# 项目完成内容
## 项目简介
# 未完成内容
本项目是一个从零开始开发操作系统内核设计。
进一步实现buf.c缓冲区代码编写,以及文件系统上层接口等内容
\ No newline at end of file
## 开发环境与运行方式
### 开发环境
- Ububtu-22.04
- qemu-system-riscv64
- riscv64-unknown-elf-gcc
- [rustsbi](https://github.com/rustsbi/rustsbi)
### 运行方式
**make**
确保安装了上述工具以及其他必要的开发环境
```
make run
```
**debug**
如果你希望 `DEBUG` ,使用 `export DEBUG=y`, 然后 `make run`,即可使用 riscv-gdb 进行调试。
项目中的一些配置信息在 `config/config.json` 中,可进行相关配置。
**clean**
清理环境
```
make clean
```
**vscode**
可直接使用 vscode 调试前端进行调试、构建项目或清理项目。
## 开发路线
首先实现了一些基本的函数库,然后实现基本内存管理,时钟中断,随后实现了 虚拟内存 sv39 ,而后实现了进程基础功能,随后设计了一个简单的文件系统。开发的想法是从头到尾走一遍,然后对各部分进行优化,实现更优策略,使用更优算法。
详见 `docs` 目录。
## 参考资料
[xv6-riscv](https://github.com/mit-pdos/xv6-riscv)
\ No newline at end of file
docs/docs.md 0 → 100644
## config
`config/config.json` 中,可以相关内容的配置。
思路是可以按照 Debug、Build 模式去进行相应配置,System 用于配置各种操作系统选项。
`config/config.py` 会对这个 `config.json` 进行解析,生成对应的 `config.h` 文件,其中包含相应的宏定义。
在各个文件中 `include` `config.h` 之后,即可按照配置选项执行相应功能,如 Debug 模式下,可以选择想要打印相关信息的函数。
## Trap
中断向量位于 `trap_v.S`中,其中会保存关键寄存器,然后跳转至 `trap_handler` 函数,在该函数中会进一步细分 `interrupt` `exception`,根据 `scause` 寄存器中相应的值执行相应的处理函数。
## 虚拟内存
实现了 riscv sv39 三级页表。实现了基本的虚拟内存映射、回收、页表复制、范围回收、检查权限等。
## fs
关于磁盘部分 `disk.c` 以及相关的部分来自于 `xv6-riscv`,对其做了简单的修改,用于适配。
实现了基本的文件操作,并实现了用于本项目的简单的磁盘格式化工具。
## 总结
整个项目,这与时间分配不足有关。原本是希望能各个部分简单实现,然后各个部分去逐步优化,但由于各种各样的因素,没能做到。之后继续努力。
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment