-
Notifications
You must be signed in to change notification settings - Fork 452
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #548 from lichenran0330/master
Add lcr blog
- Loading branch information
Showing
1 changed file
with
22 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
--- | ||
title: rcore-step12-lcr | ||
date: 2024-11-09 20:07:41 | ||
tags: | ||
- author:lichenran0330 | ||
--- | ||
第一阶段:rustlings | ||
1.去入门了一下rust,使用的是Rust语言圣经(Rust Course) | ||
2.通过学习Rust语言圣经,了解了rust的基础语法,因为之前有过C++语言基础,所以学习较为容易 | ||
3.无GC,有强大的包管理工具,强大的安全性,以及独具特色的所有权机制 | ||
4.学习了rustlings的110道题目,虽然之后大多用不到就全忘记了,但是如果将来从事相关工作,很快就能重新捡起来 | ||
5.学习完成rustlings的110道题目之后就开始了之后的第二阶段学习 | ||
|
||
第二阶段:rCore-Tutorial | ||
1.通过阅读rCore-Tutorial-Book学习到了很多关于操作系统的知识,之前也有过操作系统的学习,只不过都是理论上的,并没有相关实践上的学习,这也是我进入此训练营的原因,想通过训练营督促自己去学习到更多的关于操作系统的知识,以及拥有一个比较独特的项目,去助力就业 | ||
2.通过rCore的学习,完成了5个lab,可以说是学习比较辛苦的了,是rCore-Tutorial-Book和rCore-Camp-Guide-2024A两个教程同时跟进,学习完成rCore-Tutorial-Book之后就在相应章节的2024A中完成lab, | ||
(1)在lab1中,我们的系统已经能够支持多个任务分时轮流运行,引入一个新的系统调用 sys_task_info 以获取当前任务的信息。 | ||
(2)在lab2中,在引入虚存之后重写内核的 sys_get_time 和 sys_task_info 函数,以及完成mmap 和 munmap 匿名映射两个系统调用函数。 | ||
(3)在lab3中,进程创建过程中,fork+execl两个函数高频率连续使用,感觉十分繁琐,我们引入一个spawn函数直接完成两个函数调用的结果,新建子进程,使其执行目标程序。还完成了stride 调度算法的实现,通过修改优先级,使步长不同,导致选取的优先级发生变化。 | ||
(4)在lab4中,引入硬链接的概念,让我们完成linkat和unlinkat和fstat三个系统调用,写这个的时候给我写破防了,当时看的代码抑郁了,但是其实没有那么难,很多代码其实和解决问题没有任何关联,这一个lab只能是非常难写,需要对源码有很深的理解,以及需要想到在文件存入fd_table的时候,想办法把文件名字也放入PCB中 | ||
(5)在lab5中,完成了死锁检测,这个我的完成过程也是比较抽象,写的时候很痛苦,一直往银行家算法上面想,后面发现need根本不知道啊,经过讨论之后才知道,原来只需要检测死锁就行,比较精妙的一点就是在lock阻塞或睡眠的过程中,就需要更新need数组,而且在死锁检测时候,需要让need+1而不是allocation,比较有意思吧。 | ||
3.其实完成了这个比较toy的玩具项目,感觉最后很多东西没有联系起来,如果要是最后把所有lab整合在一起,组合成一个可以展现自己从开始到现在的成果的话会更好一些,不过也是很感谢rCore这个教学,学到了很多操作系统的知识。 |