xv6-riscv项目入门级分析
一.前言
这一部分简单记录一下学习该项目的初衷和目的,以及学习该项目的前备知识
初衷:因为导师方向偏系统软件,所以期望学一下os的理论以及实现,本科阶段仅仅学习了os的理论,其实对于实际实现等一概不懂,而xv6-riscv项目则能很好的弥补这一点。
目的:学习操作系统的具体实现,比如文件系统,进程管理等,提高源码阅读能力,以及建立编码规范(xv6-riscv项目代码写的很漂亮,值的一看!)
前备知识:熟悉C语言语法,熟悉linux操作系统,具备STFW (Search The Fantastic Web)能力
另外,该项目面对初学者,因此会有很多基础的东西,大牛勿喷。这篇文章是为了记录学习过程以及分享项目而写,所以这个学习方式仅是基于我自己的理解,还望谅解。若您发现错误,欢迎评论留言。
二.初识xv6
1.简要介绍xv6-riscv
xv6-riscv 项目是一个基于 RISC-V 架构的简易操作系统,是经典的 xv6 操作系统的一个移植版本。xv6 最初是麻省理工学院 (MIT) 开发的教育性操作系统,专门用于操作系统课程的教学和研究。xv6-riscv 则是将 xv6 移植到 RISC-V 架构上的一个分支。
- RISC-V 架构:一个开源的、可扩展的指令集架构 (ISA),目前诸多领域都在支持和应用该架构;
- 精简设计:xv6-riscv 保持了 xv6 的精简设计,以便于学习和理解。它包含了操作系统的核心组件,如进程管理、文件系统、内存管理等,但没有过多复杂的功能。
- 模块化结构:xv6-riscv 的代码结构相对简单,采用模块化设计,易于阅读和修改。这有助于我们理解操作系统的不同部分如何协同工作。
2.项目下载,以及环境配置等
源码下载地址(建议搞个ti子,尽量别用bai度):https://github.com/gitover22/xv6-riscv
手把手环境配置(需要提前准备ubuntu环境):https://zhuanlan.zhihu.com/p/509296983
ps:遇到配置问题可以首先STFW,实在解决不掉,请评论区留言。
3.你需要的强力辅助工具
建议配置Vscode,这个IDE配合终端使用非常符合开发需求,我是win系统,使用vscode通过ssh远程连接ubuntu系统。
1:vscode配置ssh远程连接教程
2:xv6-riscv用户手则(中文版)
2:配置好环境后,通过vscode打开项目,项目结构如下:
4.简要分析项目结构
相信读到这里,你的项目一定可以运行了,但请你先make clean,因为我们从最初状态看(最初状态就是上图结构图所示),下面我会按顺序逐次介绍各个目录以及文件的简要信息,后续会对其内容详细解读,这里是为了照顾入门同学。
.vscode:vscode集成开发环境中的一个特殊目录,用于存储项目相关的配置文件和设置。这些配置文件可以用来自定义项目的开发环境、构建过程、调试设置(launch.json)等,可以根据项目的需要来添加或修改其中的配置文件。
kernel:这个目录包含了操作系统内核的源代码。它包括处理进程、文件系统、内存管理、系统调用等核心组件的代码文件。
mkfs:这个目录比较简单,只包含mkfs.c文件,其用于创建文件系统镜像。它的主要功能是将一组文件打包到一个文件系统中,并创建一个文件系统的镜像。
user:用户级程序的源代码通常存储在这个目录下。这些程序可以是 shell、应用程序或测试程序,用于在操作系统上运行。
.dir-locals.el:该文件是 Emacs 中用于设置目录局部变量的文件。它的作用是为特定目录下的