-
Notifications
You must be signed in to change notification settings - Fork 439
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Create 2024秋冬开源操作系统训练营第四阶段总结报告-明扬.md
- Loading branch information
1 parent
d678ab9
commit 8e81960
Showing
1 changed file
with
41 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,41 @@ | ||
--- | ||
|
||
title: 2024秋冬开源操作系统训练营第四阶段总结报告 | ||
date: 2024-12-22 14:58:00 | ||
tags: | ||
- author:mingyang91 | ||
- repo:https://github.com/mingyang91/os | ||
--- | ||
|
||
## 与同学们互相讨论 | ||
|
||
在本次学习过程中,我对Rust异步编程中的一些核心挑战进行了深入思考: | ||
|
||
**1. 函数着色和异步Drop的挑战** | ||
|
||
目前Rust异步编程中最棘手的问题是函数着色和async drop机制。特别是在资源管理方面,由于future是基于poll的机制,在处理background task和事务时面临两个主要场景的挑战: | ||
|
||
- 结构体持有background task(如连接或stream)时的资源释放 | ||
- 需要uncancelable语义的事务处理场景 | ||
|
||
**2. 资源安全释放的困境** | ||
|
||
在系统信号处理方面存在显著挑战。特别是在进程接收信号时的安全资源释放问题仍然没有完善的解决方案。虽然对于使用事务的SQL系统影响相对较小,但在文件系统或WAL文件等场景中,这个问题尤为突出。 | ||
|
||
**3. 互斥锁的使用策略** | ||
|
||
在异步编程中,关于互斥锁的选择需要特别注意。Tokio提供了一个重要的见解:在异步代码中使用标准库的普通Mutex通常是可行且推荐的。异步互斥锁的主要优势在于能够在.await点保持锁定状态,但这也使其比阻塞式互斥锁更昂贵。因此,对于单纯的数据访问,使用标准库的阻塞式互斥锁是更合适的选择。 | ||
|
||
**4. 操作系统层面的应用** | ||
|
||
在操作系统内核中,协程的应用主要可以考虑用于替代传统的自旋锁场景,而io_uring的引入则可能带来更广泛的应用空间。 | ||
|
||
**5. 异步编程模型的适用场景** | ||
|
||
从资源管理的角度来看,异步编程模型在不同场景下有其独特的优势和局限。特别是在处理IO密集型任务时,异步模型能够提供更好的性能和资源利用率。 | ||
|
||
## 总结 | ||
|
||
四阶段开始前, 我曾立下这个目标: 希望能开发出我自己的操作系统内核, 并在 Lichee Pi 4A 真机设备上成功启动. | ||
|
||
无奈上周夫人孕期遭遇大出血, 紧急住院保胎一周. 我作为陪护家属, 暂停了一周的学习与工作照顾夫人. 故未能完成四阶段开始前立下的目标😔. |