From 8e81960319608177a2f7bea3c6c839c89e78b526 Mon Sep 17 00:00:00 2001 From: Ming Yang Date: Sun, 22 Dec 2024 14:58:58 +0800 Subject: [PATCH] =?UTF-8?q?Create=202024=E7=A7=8B=E5=86=AC=E5=BC=80?= =?UTF-8?q?=E6=BA=90=E6=93=8D=E4=BD=9C=E7=B3=BB=E7=BB=9F=E8=AE=AD=E7=BB=83?= =?UTF-8?q?=E8=90=A5=E7=AC=AC=E5=9B=9B=E9=98=B6=E6=AE=B5=E6=80=BB=E7=BB=93?= =?UTF-8?q?=E6=8A=A5=E5=91=8A-=E6=98=8E=E6=89=AC.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\345\221\212-\346\230\216\346\211\254.md" | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 "source/_posts/2024\347\247\213\345\206\254\345\274\200\346\272\220\346\223\215\344\275\234\347\263\273\347\273\237\350\256\255\347\273\203\350\220\245\347\254\254\345\233\233\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-\346\230\216\346\211\254.md" diff --git "a/source/_posts/2024\347\247\213\345\206\254\345\274\200\346\272\220\346\223\215\344\275\234\347\263\273\347\273\237\350\256\255\347\273\203\350\220\245\347\254\254\345\233\233\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-\346\230\216\346\211\254.md" "b/source/_posts/2024\347\247\213\345\206\254\345\274\200\346\272\220\346\223\215\344\275\234\347\263\273\347\273\237\350\256\255\347\273\203\350\220\245\347\254\254\345\233\233\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-\346\230\216\346\211\254.md" new file mode 100644 index 0000000000..63f859cbd4 --- /dev/null +++ "b/source/_posts/2024\347\247\213\345\206\254\345\274\200\346\272\220\346\223\215\344\275\234\347\263\273\347\273\237\350\256\255\347\273\203\350\220\245\347\254\254\345\233\233\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-\346\230\216\346\211\254.md" @@ -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 真机设备上成功启动. + +无奈上周夫人孕期遭遇大出血, 紧急住院保胎一周. 我作为陪护家属, 暂停了一周的学习与工作照顾夫人. 故未能完成四阶段开始前立下的目标😔.