File tree Expand file tree Collapse file tree 1 file changed +28
-0
lines changed Expand file tree Collapse file tree 1 file changed +28
-0
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+
3
+ title : 2024秋冬开源操作系统训练营第四阶段总结报告
4
+ date : 2024-12-22 01:15:00
5
+ tags :
6
+ - author:XiangyuTu
7
+ - repo:https://github.com/XiangyuTu/aruntime
8
+ ---
9
+
10
+ 作为常年开发网络程序的我,对异步、并发操作却仅仅停留在使用层面,这对我来说是一件长期的困扰。于是在第四阶段,我毫不犹豫地选择了“基于协程异步机制的OS”方向。在这个方向上,我学到了很多新的知识,也遇到了很多新的问题。
11
+
12
+ ## 第一周
13
+
14
+ 第一周的任务主要是了解 Rust 中异步的基本概念,通过阅读资料,我了解到了 Rust 中的 ` async ` 和 ` await ` 关键字背后的原理,并且了解到了如何实现有栈/无栈协程。过去我只了解过有栈协程,而无栈协程对我来说是一个全新的概念,其 LLVM Generator 的实现机制让我感到十分精妙。在这一周中,我主要是通过阅读资料和代码来了解这些概念,对于这些概念的理解还不是很深入。
15
+
16
+ ## 第二周
17
+
18
+ 第二周主要的工作是阅读 Tokio 代码,我阅读了 Tokio 的 ` net ` 、` signal ` 和 ` sync ` 模块,我将部分代码的分析记录在了共享文档中,这些代码的阅读让我对异步编程有了更深入的理解。
19
+
20
+ ## 第三周
21
+
22
+ 第三周通过阅读 ` epoll ` 、` io-uring ` 等相关资料,我了解到了异步 IO 的原理。通过阅读 ` async-io ` 和 ` polling ` 的代码,我了解了 ` epoll ` 在 Rust 异步运行时中的运用,而通过阅读 ` monoio ` 和 ` tokio-uring ` 的代码,我了解了 ` io-uring ` 在 Rust 异步运行时中的运用,这些代码的阅读让我对异步 IO 有了更深入的理解。` io-uring ` 的机制起初让我感到困惑,但是在领悟到 ` io-uring ` 事实上是一个异步的系统调用框架而不是 ` epoll ` 这样的文件描述符复用机制后,我便茅塞顿开。
23
+
24
+ 在阅读了大量相关的资料后,我也着手开始实现一个简单的异步运行时,通过对 [ ` mini-rust-runtime ` ] ( https://github.com/ihciah/mini-rust-runtime ) 的学习和修改,我将其中使用 ` polling ` 实现的基于 ` epoll ` 的异步运行时改为了基于 ` io-uring ` 的异步运行时,并初步支持了文件的异步读写。因为使用 ` io-uring ` 必须从系统调用层面进行编程,抽象层次很低,在查阅了大量资料后我才勉强完成了这个十分粗糙的实现。
25
+
26
+ ## 总结
27
+
28
+ 毫不夸张的说,这短短的三周我学到了近年来对我来说最有价值的知识,使我对异步编程的理解有了质的飞跃,使我未来能更好地开发出高性能的网络程序。在学习的过程中,我也遇到了很多问题,但是通过查阅资料和请教老师,我都得到了解决。这次训练营对我来说是一次非常有意义的经历,我也希望未来能有机会继续参加这样的活动。
You can’t perform that action at this time.
0 commit comments