Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DailySchedule

TOC

七月

Mon Tues Wed Thur Fri Sat Sun
1 2 3 4
(D1)
5
(D2)
6
(D3)
7
(D4)
8
(D5)
9
(D6)
10
(D7)
11
(D8)
12
(D9)
13
(D10)
14
(D11)
15
(D12)
16
(D13)
17
(D14)
18
(D15)
19
(D16)
20
(D17)
21
(D18)
22
(D19)
23
(D20)
24
(D21)
25
(D22)
26
(D23)
27
(D24)
28
(D25)
29
(D26)
30
(D27)
31
(D28)

OLD TOC Day 0~28

Day 0

事件1:

开始学操作系统(RISC-V)清华在线课程,2020春季课程,购买操作系统概念的书

事件2:

阅读https://github.com/rcore-os/rCore/wiki/os-tutorial-summer-of-code 的文档,先全面了解第一阶段实习的任务

事件3:

电脑的VMvare虚拟机一直上不了网,卸载重装的时候出现了问题,电脑开不了机了,重置系统,重新安装软件,心态有点崩,好在已经把基本的软件下回来了,而且虚拟机重装后可以上网了

预计计划:

要开始着手学习Rust语言

Day 1

事件1:

开始学习Rust语言,阅读Rust 程序设计语言 简体中文版,完成到

  • 入门指南
  • 猜猜看游戏教程
  • 常见编程概念
  • 认识所有权
    目前来看,基本的语法和C语言相差不大,也都比较好理解,值得注意的是Rust语言基于表达式的特征,第四章所有权是Rust语言的重点,还没有完全理解,进行了一部分,还没有学完,明天继续。我一直有手写笔记的习惯,学新东西也还是愿意在本子上写写画画一些重点

事件2:

虚拟机上安装Rust,小练习题完成下载到虚拟机上,家里的网有些慢,常报timeout的错误,所以安装花了比较久的时间。通过命令行实现了基本的Hello,World和Hello,Cargo的程序,知道了Rust语言编译运行的基本流程

事件3:

继续安装电脑重置后消失的软件

预计计划:

继续看Rust 程序设计语言 简体中文版;开始解决小练习题

Day 2

事件1:

虚拟机上安装Rust语言编译器,可能因为我的虚拟机版本过低,开始安装intellij和Vscode都没有成功,后来按照教程通过Ubuntu make安装成功,在Vscode平台完成了Rust语言环境配置,并且运行了几个小程序,但是总的来说安装和配置环境不太顺利,浪费了比较久的时间

事件2:

继续看Rust 程序设计语言 简体中文版,完成到

  • 认识所有权
  • 使用结构体来组织相关联的数据
    因为事件1花了大部分时间,导致进度有点慢

事件3:

编写了一部分小练习题,巩固了一下Rust的语法规范,完成到

  • variables
  • if
  • functions
  • test1
  • primitive_types
  • structs

预计计划:

继续看Rust 程序设计语言 简体中文版;继续解决小练习题

Day 3

事件1:

今天有点杂事,学习时间比较短,继续看了Rust 程序设计语言 简体中文版,完成到

  • 枚举与模式匹配
  • 使用包、Crate和模块管理不断增长的项目
    其中match具有绑定值的模式,可以从枚举成员中提取值的特点很巧妙,但是刚刚接触不太适应,还要继续熟练

事件2:

继续解决小练习题,完成到

  • strings
  • test2
  • enums
    其中涉及到match绑定元组、字符串的测试,认识到模式中的变量数必须和待匹配的变量数一致,丰富了教程里绑定枚举的例子

预计计划:

今天学习时间比较少,要追赶一下进度,尽量往后看Rust 程序设计语言 简体中文版;继续解决小练习题

Day 4

事件1:

继续学了Rust 程序设计语言 简体中文版,完成到

  • 常见集合
  • 错误处理
  • 泛型、trait 与生命周期
  • 测试
    因为练习题遇到,还额外看了宏,感觉这几章的任务量都有点大,而且泛型和trait的概念也不太好理解,所以进度不太快

事件2:

继续解决小练习题,完成到

  • tests
  • modules
  • macros
  • test4
    今天看书的时间太久了,导致练习题没能如期做完,明天应该可以做完了

预计计划:

继续看Rust 程序设计语言 简体中文版;解决完小练习题;开始用Rust语言编中小型程序

Day 5

事件1:

继续学习Rust 程序设计语言 简体中文版,完成到

  • 一个 I/O 项目:构建命令行程序
  • Rust 中的函数式语言功能:迭代器与闭包
    其中第十二章:一个 I/O 项目:构建命令行程序与《Rust 编程之道》第十章的示例代码相关,因此也进行了一部分《Rust 编程之道》第十章的示例代码的学习。但是始终觉得对引用、copy trait那里理解的不太透彻,查了一些资料,也还没有完全弄明白,主要是引用位于函数返回值或参数时没有找到通用的规则,还要继续研究一下

事件2:

继续解决小练习题,完成到

  • move_semantics
  • error_handling
    还有尚未看完的语法,小练习也还没做完,拖了好几天了,立flag,明天一定要做完了

事件3:

学习了一部分《Rust 编程之道》第十章的示例代码

预计计划:

继续看Rust 程序设计语言 简体中文版;解决完小练习题;开始用Rust语言编中小型程序;解决引用、copy trait的问题;改一下DailySchedule的格式

Day 6

事件1:

继续学习Rust 程序设计语言 简体中文版,完成到

  • 智能指针前四节
  • 无畏并发
    线程、共享状态都是很新的概念,以前从来没有见到过,现在感觉理解还是比较浅显,随着学习的深入应该会有更深的理解

事件2:

终于解决了所有的小练习题,今天完成了

  • option
  • clippy
  • standard_library_types
  • traits
  • generics
  • threads
  • conversations
    练习题的代码和README提交在DailySchedule/exercises一栏,一开始提交到GitHub时遇到了报错failed to push some refs to git,后来通过教程成功解决,完成全部练习的截图如下 image

事件3:

DailySchedule的格式修改的好看了一点

预计计划:

继续学习《Rust 编程之道》第十章的示例代码;开始用Rust语言编中小型程序;解决引用、copy trait的问题;复盘一下小练习题

Day 7

事件1:

继续学习Rust 程序设计语言 简体中文版,完成到

  • Rust 的面向对象编程特性

事件2:

完成了编写5道中小型练习题,Rust版本和原Python或C语言版本已打包在一起上传

事件3:

自己编了几个程序,初步搞懂了copy trait;又复习了一下之前做的比较坎坷的小练习题DailySchedule/exercises,有不少收获

//DailySchedule/exercises/enums/enums3.rs
enum Message {
    ChangeColor(u8, u8, u8),
    ...
}
fn process(&mut self, message: Message) {
        match message{
              Message::ChangeColor(r, g, b)  => {self.change_color((r,g,b));},//认识到match绑定要求模式中的变量数要和待匹配的变量数一致,即匹配的是一个元组中的三个变量,而不是一个元组
              ...
} }
//DailySchedule/exercises/error_handling/errorsn.rs
fn read_and_validate(b: &mut dyn io::BufRead) -> Result<PositiveNonzeroInteger, Box<dyn error::Error>> {
    let num: i64 = line.trim().parse()?;//认识到?运算符在Result<_,_>是Ok时,返回的是Ok中的值,而不是Ok(_)
    ...
}
//DailySchedule/exercises/traits/traits2.rs
impl AppendBar for Vec<String> {
    fn append_bar(self) -> Self{
       let mut v=self;
       v.push("Bar".to_string());//这个做了比较久,一开始就是写self.push("Bar".to_string());提示返回值类型不匹配才明白   
       v
} }

还有就是threads、arc的部分觉得比较难,而且不太熟练,在做实验中遇到再继续巩固,关于迭代器的方法看标准库有点慢,感觉这个教程还讲的比较细致

事件4:

完成了《Rust 编程之道》第十章的示例代码,上传到了DailySchedule/csv_challenge,根据这个示例代码对Rust的模块化编程有了更深入的了解。另外,按照书上的代码我开始不能正确运行,会提示main error:Program("column name doesn't exist in the input file"),发现是core/write.rs的问题,debug发现headers都可以正常输出,那么就是和修改的目标column匹配的问题,应该是输入的参数还要通过trim方法去掉空格等才能和column匹配,经过修改,运行正确

//let column_number=columns.iter().position(|&e| e==column);
let column_number=columns.iter().position(|&e| e.trim()==column);

预计计划:

开始step1 risc-v系统结构的学习;继续用Rust语言编中小型程序

Day 8

事件1:

基本完成阅读《Rust 编程之道》第三章的内容,因为已经仔细过了一遍Rust 程序设计语言 简体中文版,所以看的比较快

事件2:

完成了step2 实验的环境部署,在虚拟机进行实验,配置环境花了比较多的时间

预计计划:

开始step1 risc-v系统结构的学习;继续用Rust语言编中小型程序

Day 9

事件1:

阅读了一部分《计算机组成与设计(RISC-V版)》,今天事情比较多,学习的时间少,要追赶一下进度

事件2:

参加第一次线上交流

预计计划:

继续step1 risc-v系统结构的学习;继续用Rust语言编中小型程序

Day 10

事件1:

完成阅读《计算机组成与设计(RISC-V版)》的前两章,很多内容都是和计算机系统基础有重合的,看的比较顺利

事件2:

学习了一部分RISC-V手册:一本开源指令集的指南的第十章内容

事件3:

观看了操作系统(RISC-V)前三章的内容,刚开始入门操作系统的内容,进展不是很快,结合RISC-V手册:一本开源指令集的指南,初步搞懂了中断的处理机制,还需要实验检验,计划实验和视频结合的形式学习,看完一部分的视频就去进行对应的实验操作,以加深对知识的印象

事件4:

完成阅读《Rust 编程之道》第四章的内容

事件5:

按照step2 实验的gdb调试方法安装了riscv64-unknown-elf-gdb

预计计划:

继续学习RISC-V手册:一本开源指令集的指南;继续用Rust语言编中小型程序;继续观看操作系统(RISC-V);开始实现Lab0的内容

Day 11

事件1:

完成了编写1道中小型练习题

  • Learn-Python-3-the-Hard-Way的ex33.py

事件2:

按照Lab0 实验指导--rcore tutorial教程第三版实现了Lab0的内容,得到了正确的输出,并且按照GDB调试方法实现了调试的界面,手动使用 GDB 对 rCore 进行 debug,一开始的时候不理解让 QEMU在 1234 端口等待调试器接入的含义,后来才明白是开两个终端,一个运行QEMU,另一个运行GDB,GDB连接QEMU来进行调试,但是对Lab0的代码不是完全理解,还要继续看一下相关的知识点

事件3:

大致完成阅读《Rust 编程之道》第十三章的内容

事件4:

实现Lab0的过程中,结合阅读了部分《使用 Rust 编写操作系统》

预计计划:

继续学习RISC-V手册:一本开源指令集的指南;继续用Rust语言编中小型程序;实现Lab1

Day 12

事件1:

完成了编写2道中小型练习题

  • Learn C The Hard Way 中文版的ex15.c
  • Learn-Python-3-the-Hard-Way的ex39.py

事件2:

又重新按照Lab0 实验指导--rcore tutorial教程第三版捋了一遍Lab0的流程,回看了部分操作系统(RISC-V)第二章的内容,基本理解了Lab0每一步的目的和代码

事件3:

按照Lab1 实验指导--rcore tutorial教程第三版完成了Lab1时钟中断之前的内容,发现了几处教程的错误

  • os/src/interrupt/handler.rs
//global_asm!(include_str!("./interrupt.asm"));
global_asm!(include_str!("interrupt.asm"));
//use riscv::register::stvec;
use riscv::register::{stvec,scause::Scause};
  • 输出结果
/*Hello rCore-Tutorial!
mod interrupt initialized
panic: 'Interrupted: Exception(Breakpoint)'*/
mod interrupt initialized
panic: 'Interrupted: Exception(Breakpoint)'

预计计划:

继续用Rust语言编中小型程序;继续实现并理解Lab1

Day 13

事件1:

完成了编写2道中小型练习题

  • Learn C The Hard Way 中文版的ex14.c
  • Learn-Python-3-the-Hard-Way的ex38.py

事件2:

按照Lab1 实验指导--rcore tutorial教程第三版完成了Lab1时钟中断的内容,发现了几处教程的错误

  • os/src/main.rs 其中rust_main函数去掉unreachable!()之后,还要将返回类型的!去掉
//pub extern "C" fn rust_main() -> ! {}
pub extern "C" fn rust_main()  {}
  • os/src/interrupt/handler.rs
//use riscv::register::{stvec,scause::Scause};
use riscv::register::{stvec,scause::{Scause,Trap,Exception,Interrupt}};
use super::timer;
/*panic!(
        "Unresolved interrupt: {:?}\n{:x?}\nstval: {:x}",
        scause.cause(),
        context,
        stval
    );*/
/* panic!(
        "Unresolved interrupt: {:?}\n{:x}\nstval: {:x}",
        scause.cause(),
        context.sepc,
        stval
    );*/

事件3:

系统学习了一下git的用法,之前本地仓库和远程仓库一直没有很好的实现同步,向GitHub上传文件有时会出问题,修改好了之后,上传文件更加方便,建立了同步的本地仓库,随时更新,随时上传

预计计划:

继续学习RISC-V手册:一本开源指令集的指南;继续用Rust语言编中小型程序;完成Lab1的学习报告

Day 14

事件1:

完成了编写1道中小型练习题

  • Learn C The Hard Way 中文版的ex13.c

事件2:

仔细理解Lab1的实现流程,一些遇到的困难和解决办法会整理在Lab1的学习报告,应该还需要一天才能写完

预计计划:

继续学习RISC-V手册:一本开源指令集的指南;继续用Rust语言编中小型程序;完成Lab1的学习报告

Day 15

事件1:

整理完成了Lab1的代码和学习报告,提交在DailySchedule/Lab/Lab1

事件2:

观看了操作系统(RISC-V)第四讲前四节的内容,开始学习了内存分配的知识,今天学习时间不是太多,视频还没有看完,明天继续

预计计划:

继续学习RISC-V手册:一本开源指令集的指南;继续用Rust语言编中小型程序;继续观看操作系统(RISC-V)

Day 16

事件1:

参加了第二次线上交流,和大家做了分享,时间比较仓促,没来得及好好准备什么,但是看大家的进度,感觉自己稍微有点落后,要加快速度呀

事件2:

观看完操作系统(RISC-V)第四讲和第五讲的内容,学习了物理内存管理的连续内存分配和非连续内存分配,比较容易理解,还是要结合实验去巩固这些知识,明天开始做实验,视频上还提出了RISC-V手册:一本开源指令集的指南的第十章内容比较有帮助,明天也会辅助看一下

预计计划:

继续学习RISC-V手册:一本开源指令集的指南;继续用Rust语言编中小型程序;开始学习Lab2

Day 17

事件1:

基本阅读完RISC-V手册:一本开源指令集的指南第十章的内容,后面虚拟内存的部分和操作系统(RISC-V)第五讲视频的内容有很多重合,所以只是大致过了一遍

事件2:

按照Lab2 实验指导--rcore tutorial教程第三版实现Lab2的内容,发现代码有很多缺失,在rCore-Tutorial仓库里面找到了完整的代码,实现了Lab2,得到了正确的运行结果,但是感觉代码量比Lab1大了很多,还没能好好理解

事件3:

试图用Rust编一下双向链表,但是我尝试用Box和Rc都各种报错,borrowed、mutable、copy trait等等,改了太久,花了太多时间了,就战略性放弃了,打算再选几个Learn-Python-3-the-Hard-Way的练习题做完15道,然后专心看Lab

预计计划:

整理Lab2的学习报告;用Rust语言编中小型程序结束

Day 18

事件1:

完成了编写4道中小型练习题

  • Learn-Python-3-the-Hard-Way的ex32.py
  • Learn-Python-3-the-Hard-Way的ex17.py
  • Learn-Python-3-the-Hard-Way的ex21.py
  • Learn-Python-3-the-Hard-Way的ex26.py 已经完成了15道中小型练习题的编写,都上传在DailySchedule/rust-code,编写完整的代码以后,对rust的语法更加熟悉,对Option、match、Result等rust的特有语法也掌握的比较熟练了,但是为了节省时间,没有成功编写复杂的数据结构的代码,总是遇到所有权方面的报错,当时编双向链表的时候就是感觉怎么写都能巧妙的遇上error,也就先放弃了,毕竟还是要以Lab的实现为主

事件2:

整理完成了Lab2的代码和学习报告,提交在DailySchedule/Lab/Lab2

预计计划:

开始实现Lab3;继续观看操作系统(RISC-V)

Day 19

事件1:

实现部分Lab3,同步写学习报告,内容比较多,应该还要一天才能完成,但是虽然知识点多,但是感觉代码和知识点的对应比较好,理解起来比较容易

事件2:

学习了writing-an-os-in-rust的内存分页简介相关内容

预计计划:

完成Lab3的代码和学习报告;继续观看操作系统(RISC-V)

Day 20

事件1:

整理完成了Lab3的代码和学习报告,提交在DailySchedule/Lab/Lab3

事件2:

学习了操作系统(RISC-V)第九讲的部分内容,为Lab4做准备,还没有学完,明天继续

预计计划:

继续观看操作系统(RISC-V);开始实现Lab4

Day 21

事件1:

按照Lab4 实验指导--rcore tutorial教程第三版开始实现Lab4

事件2:

学习了操作系统(RISC-V)第九讲和第十讲的部分内容,这几天学校来这边招生,会去帮一下忙,进度可能要拖慢了

预计计划:

继续观看操作系统(RISC-V);继续实现Lab4

Day 22

事件1:

按照Lab4 实验指导--rcore tutorial教程第三版继续实现Lab4

预计计划:

继续观看操作系统(RISC-V);继续实现Lab4

Day 23

事件1:

按照Lab4 实验指导--rcore tutorial教程第三版继续实现Lab4,明天Lab4一定要完成了,ddl很紧迫的情况下,学习时间又偏偏少了,1号之前还有2个Lab,不慌不慌,应该还是来得及的

事件2:

完成rCore的总结报告,通过pr提交

预计计划:

继续观看操作系统(RISC-V);继续实现Lab4

Day 24

事件1:

整理完成了Lab4的代码和学习报告,提交在DailySchedule/Lab/Lab4

事件2:

开始实现Lab5

预计计划:

继续实现Lab5和Lab6

Day 25

事件1:

观看操作系统(RISC-V)第十七讲的内容,准备学习Lab5的文件系统

事件2:

开始实现Lab5,Lab5的内容和前几次实验相比不算多,但是很多概念都不太熟悉,所以大概还要一天才能完成

事件3:

收到通知,通过了第一阶段的学习,有点小激动~虽然学校开不了复课证明,但是还是可以参加 Hackathon 的活动,那么就马上要去深圳啦

预计计划:

继续实现Lab5和Lab6

Day 26

事件1:

整理完成了Lab5代码和学习报告,提交在DailySchedule/Lab/Lab5

预计计划:

实现Lab6

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages