-
Notifications
You must be signed in to change notification settings - Fork 442
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add 2024秋冬开源操作系统训练营第四阶段总结报告-XiangyuTu
- Loading branch information
Showing
1 changed file
with
28 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,28 @@ | ||
--- | ||
|
||
title: 2024秋冬开源操作系统训练营第四阶段总结报告 | ||
date: 2024-12-22 01:15:00 | ||
tags: | ||
- author:XiangyuTu | ||
- repo:https://github.com/XiangyuTu/aruntime | ||
--- | ||
|
||
作为常年开发网络程序的我,对异步、并发操作却仅仅停留在使用层面,这对我来说是一件长期的困扰。于是在第四阶段,我毫不犹豫地选择了“基于协程异步机制的OS”方向。在这个方向上,我学到了很多新的知识,也遇到了很多新的问题。 | ||
|
||
## 第一周 | ||
|
||
第一周的任务主要是了解 Rust 中异步的基本概念,通过阅读资料,我了解到了 Rust 中的 `async` 和 `await` 关键字背后的原理,并且了解到了如何实现有栈/无栈协程。过去我只了解过有栈协程,而无栈协程对我来说是一个全新的概念,其 LLVM Generator 的实现机制让我感到十分精妙。在这一周中,我主要是通过阅读资料和代码来了解这些概念,对于这些概念的理解还不是很深入。 | ||
|
||
## 第二周 | ||
|
||
第二周主要的工作是阅读 Tokio 代码,我阅读了 Tokio 的 `net`、`signal` 和 `sync` 模块,我将部分代码的分析记录在了共享文档中,这些代码的阅读让我对异步编程有了更深入的理解。 | ||
|
||
## 第三周 | ||
|
||
第三周通过阅读 `epoll`、`io-uring` 等相关资料,我了解到了异步 IO 的原理。通过阅读 `async-io` 和 `polling` 的代码,我了解了 `epoll` 在 Rust 异步运行时中的运用,而通过阅读 `monoio` 和 `tokio-uring` 的代码,我了解了 `io-uring` 在 Rust 异步运行时中的运用,这些代码的阅读让我对异步 IO 有了更深入的理解。`io-uring` 的机制起初让我感到困惑,但是在领悟到 `io-uring` 事实上是一个异步的系统调用框架而不是 `epoll` 这样的文件描述符复用机制后,我便茅塞顿开。 | ||
|
||
在阅读了大量相关的资料后,我也着手开始实现一个简单的异步运行时,通过对 [`mini-rust-runtime`](https://github.com/ihciah/mini-rust-runtime) 的学习和修改,我将其中使用 `polling` 实现的基于 `epoll` 的异步运行时改为了基于 `io-uring` 的异步运行时,并初步支持了文件的异步读写。因为使用 `io-uring` 必须从系统调用层面进行编程,抽象层次很低,在查阅了大量资料后我才勉强完成了这个十分粗糙的实现。 | ||
|
||
## 总结 | ||
|
||
毫不夸张的说,这短短的三周我学到了近年来对我来说最有价值的知识,使我对异步编程的理解有了质的飞跃,使我未来能更好地开发出高性能的网络程序。在学习的过程中,我也遇到了很多问题,但是通过查阅资料和请教老师,我都得到了解决。这次训练营对我来说是一次非常有意义的经历,我也希望未来能有机会继续参加这样的活动。 |