-
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.
- Loading branch information
Showing
1 changed file
with
19 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,19 @@ | ||
--- | ||
title: Ichika-rcore-2023-reports | ||
date: 2023-11-02 17:08:18 | ||
tags: | ||
--- | ||
|
||
首先得说,[rCore-Tutorial-Guide-2023A](https://LearningOS.github.io/rCore-Tutorial-Guide-2023A/)教程真的太棒了,我敢说,这可能是我遇到的最清晰明了的操作系统教程! | ||
|
||
回忆起第一次听到rcore训练营的经历,那是在2023年的Rust大会上,李明老师的精彩演讲为我打开了新世界的大门。尽管我主要在应用层开发上浸淫,但Rust的魅力让我难以抗拒,所以,当知道2023秋季的rcore开营消息后,我和好友毫不犹豫地跃跃欲试。 | ||
|
||
rustlings部分我觉得挺熟悉的,之前已经玩转了好几回。但真正进入第二阶段,我有点像被冻住的鹿在大灯下,感到前所未有的压力。工作和时间的双重压迫让我迟迟无法启动,但最后的决心驱使我开始啃这块硬骨头。哗啦哗啦地一页页翻,直到lab1的系统调用实现,我才有那种“原来是这样!”的豁然开朗。这也让我真切体会到,教程的设计对新手真的非常友好。 | ||
|
||
再往后,lab2就开始考验我的耐心了。我承认,我对`sys_get_time`和`sys_task_info`的实现确实走了点弯路。原先,我采取了`translated_byte_buffer`来复制数据,试图仿照`sys_write`。但和友人交流后,我发现其实可以直接通过用户虚拟地址查找物理地址来进行数据复制,真是巧妙极了!同时,mmap和munmap的相关内容,虽然看似复杂,但仔细读一读,原来也不是那么的玄乎。 | ||
|
||
到了lab3,真的觉得有点上瘾了。这部分主要是`spawn`的实现。参考了exec和fork,再结合`man posix_spawn`的文档,整个流程其实很流畅。至于`stride`调度算法,哦,那真是让人爱不释手。一个简洁的lambda表达式,搞定!虽然说,我的实现可能有点粗糙,但它确实工作得很好。这也提醒了我,在软件开发中,有时候“简洁”和“完美”之间需要做出平衡。这也是我接下来要努力提升的方向。 | ||
|
||
虽然我对这三个实验的时间安排有点后悔,但回首这次训练营的经历,真的获益匪浅。对于未来的实验,我更加期待,希望能够带给我更多的启示和惊喜。 | ||
|
||
总之,这次短暂的OS训练营给我留下了深刻的印象。高质量的教程、热心的群友,真的是让人难以忘怀的体验! |