README.md

    2021年开源操作系统夏令营:第一阶段

    doc :每日记录

    rustling :rustling的练习代码

    csv_challenge :《Rust编程之道》第10章的csv_challenge

    quiz : quiz的代码及注释

    leetcode :leetcode一些题目的解

    exercismio :部分exercismio的解

    tutorial :教程章节代码(目前到chapter6)

    report :放每章report的目录(目前到chapter6)

    step 0

    已了解rust基本语法,故在该步中的任务有:

    1. 《Rust编程之道》的3,4,5,9,13章;
    2. 完成《Rust编程之道》第十章的完整示例代码,掌握Cargo和模块系统;
    3. 尝试完成编程小练习

    day1-20210702

    《Rust编程之道》看了3,4,5章,第5章看到了生命周期参数部分。 其中对生命周期参数理解的不是很好。

    明天再看一遍,如果依然理解不了,以后在实践的时候只能尽量 不用生命周期参数🤪,或者是遇到该场景的时候再尝试去理解。

    day2-20210703

    《Rust编程之道》看了9,13章。unsafe的代码理解起来太耗心智了。

    直接用leetcode上面的题目来练习(虽然这和第9,13章没啥关系)

    代码

    day3-20210704

    以leetcode上的题来进行练习 ex4~ex15

    代码

    day4-20210705

    rustlings编程小练习(51/75)

    day5-20210706

    rustlings编程小练习(75/75)

    day6-20210707

    《Rust编程之道》第10章的csv_challenge (外加吐槽下rust的插件)

    csv_challenge

    day7-20210708

    quiz1~quiz14

    主要是参考了张汉东老师的习题解答

    quiz习题解答

    不得不说这些题目刚见到时 (我虽然不懂,但我大受震撼).jpg

    day8-20210709

    quiz15~quiz33 (33/33)

    这33题绝大部分看完注释后都能懂,但是对个别题的理解还是存在困难(11,27 32,24)

    day9-20210710

    完成了exercism.io的部分题目。由于Rust Track上的题目需要被审核(大致是这么个意思),而且时间还不短。 所以不打算继续这上面的题目了,计划开始进入下一步。

    练习题目在src/exercismio目录下,已完成的详细题目列表在这day9-20210710

    day10-20210711

    基于docker的开发环境,用的是其它同学提供的docker镜像。这里面 提供了自己构建 docker镜像的过程,也可以拉取现成的镜像。我在win10系统上构建失败了(不知道是不是windows的锅),所以用的是现成的镜像。

    对照着rCore-Tutorial-Book-v3 上面的教程, 成功打印出了hello world!😭 (走了好多弯路,不容易啊)。

    移除标准库依赖 的流程走了一遍 x86_64平台,期间确实有几个步骤不一样,不过BlogOS的相关内容 里面都有 解决方法

    我的经历在

    day11-20210712

    参照教程 第一章顺利的在裸机上打印出了hell world

    也实现了彩色输出,不过实现的比较辣眼睛,只能简单的彩色输出,没有level控制啥的

    day12

    按照教程第二章的流程进行,发现最后的输出结果和教程不一样。

    教程代码中的输出是这样的

    [rustsbi] Kernel entry: 0x80200000
    [kernel] Hello, world!
    [kernel] num_app = 3
    [kernel] app_0 [0x8020b028, 0x8020c050)
    [kernel] app_1 [0x8020c050, 0x8020d108)
    [kernel] app_2 [0x8020d108, 0x8020e4c0)
    [kernel] Loading app_0
    Hello, world!
    scause=0x2
    [kernel] IllegalInstruction in application, core dumped.
    [kernel] Loading app_1
    Into Test store_fault, we will insert an invalid store operation...
    Kernel should kill this application!
    [kernel] PageFault in application, core dumped.
    ...

    而我的输出是这样的

    [rustsbi] Kernel entry: 0x80200000
    [ INFO]->[kernel] num_app = 3
    [ INFO]->[kernel] app_0 [0x8020b028,0x8020c068]
    [ INFO]->[kernel] app_1 [0x8020c068,0x8020d138]
    [ INFO]->[kernel] app_2 [0x8020d138,0x8020e4f8]
    [ INFO]->[kernel] Loading app_0
    [ INFO]->Hello, world!
    [ERROR]->Unsupported trap Interrupt(VirtualSupervisorSoft),stval = 0x0!
    [ INFO]->[kernel] Loading app_1
    [ INFO]->Into Test store_fault, we will insert an invalid store operation...
    [ INFO]->Kernel should kill this application!
    [ERROR]->[kernel] IllegalInstruction in application,core dumped
    ...

    这里出现了一个Interrupt(VirtualSupervisorSoft)(但是我还是继续让它run_next_app了)

    明天继续探究下到底是什么原因

    day13

    昨天产生Interrupt的原因还没找到,觉得自己的基础有点弱,教程理解起来有点困难,补几天的基础知识😩

    今天看了下汇编语言,参考的是《汇编语言(第三版)》(王爽)。这本书真不错,对之后看RISC-V的手册应该很有帮助。

    对应的笔记

    day14

    原来前天的错误是因为rustsbi的版本不对,我直接用的是第一章代码里的版本,教程第二章的用rustsbi与第一章是不同的😭

    今天看了RISC-V的中文手册,但是感觉没有《汇编语言》那样循序渐进,毕竟只是一本手册。

    day15

    今天看的是计算机组成与设计:RISC-V 的课程,计划明天再看一天

    笔记明天一起提交

    day16

    计算机组成与设计:RISC-V 前几章的笔记

    day17-20210718

    完成chapter1和chapter2的report1report2

    顺便说一句,chapter2中的测试用例 如果是用make all CHAPTER=2获取bin文件,然后把这些bin文件放到自己的user/target对应的目录下, 再把源文件放到user/src/bin目录下(为了通过build.rs生成link_app.S文件),之后进到自己的os目录下执行会出现莫名其妙的错误。 (应该是程序地址的问题,复制到target后我并没有删除原来bin文件夹下的代码)

    后来把源文件放到user/src/bin目录下,然后再编译(当然可能会有一些错误,不过都很好解决)就好了。

    day18-20210719

    chapter3。report未完成

    day19-20210720

    report3

    chapter4未完成

    day20-20210721

    chapter4的实验未完成

    day21-20210722

    chapter4report4

    day22-20210723

    chapter5,report5

    day23-20210724

    chapter6 , report6

    day24-20210725

    chapter7正在进行中,代码量有点大,估计得好几天。

    day25-20210726

    实验室停电,休息一天。

    day26-20210727

    chapter7实验接口已声明,但未实现

    day27-20210728

    chapter7

    report

    项目简介

    2021年开源操作系统夏令营:第一阶段

    发行版本

    当前项目没有发行版本

    贡献者 2

    qq_21726851 @qq_21726851

    开发语言

    • Rust 93.8 %
    • Assembly 2.9 %
    • Makefile 2.6 %
    • Dockerfile 0.7 %