From 99baa7ea31eeb6df3af0ba5d4fa91a4762959a0d Mon Sep 17 00:00:00 2001 From: Dynamic_Pigeon <3040313336@qq.com> Date: Sun, 1 Dec 2024 11:17:43 +0800 Subject: [PATCH 1/4] =?UTF-8?q?2024=E7=A7=8B=E5=86=AC=E5=AD=A3=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=E4=B8=89=E9=98=B6=E6=AE=B5=E6=80=BB=E7=BB=93?= =?UTF-8?q?=E6=8A=A5=E5=91=8A-chy669086?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\265\346\200\273\347\273\223-chy669086.md" | 28 +++++++++++++++++++ 1 file changed, 28 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\344\270\211\351\230\266\346\256\265\346\200\273\347\273\223-chy669086.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\344\270\211\351\230\266\346\256\265\346\200\273\347\273\223-chy669086.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\344\270\211\351\230\266\346\256\265\346\200\273\347\273\223-chy669086.md" new file mode 100644 index 00000000000..1b946a0bb23 --- /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\344\270\211\351\230\266\346\256\265\346\200\273\347\273\223-chy669086.md" @@ -0,0 +1,28 @@ +--- +title: 2024秋冬开源操作系统训练营第三阶段总结-chy669086 +date: 2024-11-29 20:08:07 +categories: + - 第三阶段总结报告 +tags: + - author:chy669086 +--- + +也是很高兴能进入三阶段学习。三阶段让我对操作系统的理解更进一步,通过课后的作业,我也学到了不少知识。 + +## 个人收获 + +- 学会了操作系统对设备的挂载 +- 了解了 unikernel 到宏内核的转化 +- 对操作系统内存分配的了解更进一步 +- 通过查漏补缺对上一阶段掌握不熟的知识进行了复习 + +通过阅读 arceos 的源代码和课后练习,我的程序编写能力也得到了锻炼,让我对操作系统有了全新的认识。 + +## 未来展望 + +通过这个阶段的学习,我有以下打算: + +- 四阶段希望进行宏内核的学习 +- 在寒假时间自己实现一个轻量级的 unikernel 内核,并通过组件化的形式将他变成宏内核 + +最后,感谢老师的悉心教导,也感谢平台提供的学习机会,让我有了深入学习操作系统的机会。 \ No newline at end of file From 731a536bc795420ad6a77c0b3ebbb3fcede81e17 Mon Sep 17 00:00:00 2001 From: Dynamic_Pigeon <3040313336@qq.com> Date: Sat, 21 Dec 2024 12:42:55 +0800 Subject: [PATCH 2/4] =?UTF-8?q?2024=E7=A7=8B=E5=86=AC=E5=BC=80=E6=BA=90?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E7=B3=BB=E7=BB=9F=E8=AE=AD=E7=BB=83=E8=90=A5?= =?UTF-8?q?=E7=AC=AC=E5=9B=9B=E9=98=B6=E6=AE=B5=E6=80=BB=E7=BB=93-chy66908?= =?UTF-8?q?6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\265\346\200\273\347\273\223-chy669086.md" | 45 +++++++++++++++++++ 1 file changed, 45 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-chy669086.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-chy669086.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-chy669086.md" new file mode 100644 index 00000000000..819154fd51e --- /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-chy669086.md" @@ -0,0 +1,45 @@ +--- +title: 2024秋冬开源操作系统训练营第四阶段总结-chy669086 +date: 2024-12-19 17:32:46 +categories: + - 第四阶段总结报告 +tags: + - author:chy669086 +--- + + +参与方向:宏内核,posix 接口相关。 + +我在四阶段中编写的是 futex 有关的代码。 + +## 设计思路 + +暂时请求了五个 os 需要实现的接口,分别是 + +- `sched_yield` 退出当前的任务,不放回调度队列。 +- `translate_vaddr` 将当前任务的虚拟地址转换成操作系统可以访问的地址 +- `current_task` 取得当前任务 +- `current_prosess_id` 取得进程 id +- `wake` 传入一个 `FutexQ` 类型,唤醒任务(提供了 `get_task` 函数取得任务) + +`FutexQ` 是存放任务的重要类型,内有 `key` `bitset` `task` 三个字段,其中 `key` 和 `bitset` 是用来唤醒任务的重要字段。 + +`FutexKey` 是一个枚举,现在只实现了一个 `Private`,`Shared` 暂时没有开发的思路。 + +任务等待队列存储在 `FutexQueues` 中,通过一个 `futex` 的唯一 key 通过哈希变换后放入或唤醒。 + +现在实现的调用有:`FUTEX_WAIT` `FUTEX_WAKE` `FUTEX_REQUEUE` `FUTEX_CMP_REQUEUE` `FUTEX_WAKE_OP` 以及对应的 bitset 版本 + +因为三阶段提供的宏内核中没有合适的线程实现,二阶短的项目不知道什么原因不能编译 `link-me` 的代码,所以我直接把整个模块移植到了阶段二的仓库,并编写测试通过。 + +## 收获 + +说实话还是不是很擅长编写 no_std 的代码,所以我还是依赖了很多外部库。 + +虽然没有通过最初的设想去适配到任何一个系统里去(直接移植还是太不松耦合了),但是我也花了很多时间去尝试适配,其中阶段二的项目仓库是最接近完成的一个,结果编译错误了,经过测试发现把 `futex::syscall::sys_futex` 函数调用去掉就可以通过编译,一时间不知道从何改起。转到 `arceos` 适配的时候,在被迫阅读了大量源码之后,发现提供的宏内核示例压根没有创建线程的系统调用,自己写了半天并没有写出来,所以又放弃了。 + +虽然写的挺差的,而且最近也到学校的期末周了,确实有没有太多时间写这个项目了,但是通过这次 posix 接口的编写,我还是学会了不少东西。 + +## 总结 + +从训练营开始到现在也过去 12 周了,看着自己从对操作系统毫无概念一步步到现在还是很感慨的。感谢老师的辛勤付出,感谢训练营能给我一个这样的平台。 From 4f8c932af07f761a0efb4390169b3fc6e98e5a6e Mon Sep 17 00:00:00 2001 From: Dynamic_Pigeon <3040313336@qq.com> Date: Sat, 21 Dec 2024 12:43:01 +0800 Subject: [PATCH 3/4] =?UTF-8?q?2024=E7=A7=8B=E5=86=AC=E5=BC=80=E6=BA=90?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E7=B3=BB=E7=BB=9F=E8=AE=AD=E7=BB=83=E8=90=A5?= =?UTF-8?q?=E7=AC=AC=E5=9B=9B=E9=98=B6=E6=AE=B5=E6=80=BB=E7=BB=93-chy66908?= =?UTF-8?q?6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...51\230\266\346\256\265\346\200\273\347\273\223-chy669086.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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-chy669086.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-chy669086.md" index 819154fd51e..7208459f00e 100644 --- "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-chy669086.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-chy669086.md" @@ -30,7 +30,7 @@ tags: 现在实现的调用有:`FUTEX_WAIT` `FUTEX_WAKE` `FUTEX_REQUEUE` `FUTEX_CMP_REQUEUE` `FUTEX_WAKE_OP` 以及对应的 bitset 版本 -因为三阶段提供的宏内核中没有合适的线程实现,二阶短的项目不知道什么原因不能编译 `link-me` 的代码,所以我直接把整个模块移植到了阶段二的仓库,并编写测试通过。 +因为三阶段提供的宏内核中没有合适的线程实现,二阶短的项目不知道什么原因不能编译 `link-me` 的代码,所以我直接把整个模块删除 `linkme` 后移植到了阶段二的仓库,并编写测试通过。 ## 收获 From 2315d42e678659f222ed0b9ae349717b362501fd Mon Sep 17 00:00:00 2001 From: Dynamic_Pigeon <3040313336@qq.com> Date: Mon, 21 Apr 2025 15:39:04 +0800 Subject: [PATCH 4/4] =?UTF-8?q?2025=E6=98=A5=E5=AD=A3=E5=BC=80=E6=BA=90?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E7=B3=BB=E7=BB=9F=E8=AE=AD=E7=BB=83=E8=90=A5?= =?UTF-8?q?=E7=AC=AC=E4=B8=80=E4=BA=8C=E4=B8=89=E9=98=B6=E6=AE=B5=E6=80=BB?= =?UTF-8?q?=E7=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...346\200\273\347\273\223-dynamic-pigeon.md" | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 "source/_posts/2025\346\230\245\345\255\243\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\344\270\200\344\272\214\344\270\211\351\230\266\346\256\265\346\200\273\347\273\223-dynamic-pigeon.md" diff --git "a/source/_posts/2025\346\230\245\345\255\243\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\344\270\200\344\272\214\344\270\211\351\230\266\346\256\265\346\200\273\347\273\223-dynamic-pigeon.md" "b/source/_posts/2025\346\230\245\345\255\243\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\344\270\200\344\272\214\344\270\211\351\230\266\346\256\265\346\200\273\347\273\223-dynamic-pigeon.md" new file mode 100644 index 00000000000..dcb95182e93 --- /dev/null +++ "b/source/_posts/2025\346\230\245\345\255\243\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\344\270\200\344\272\214\344\270\211\351\230\266\346\256\265\346\200\273\347\273\223-dynamic-pigeon.md" @@ -0,0 +1,23 @@ +--- +title: 2025春季开源操作系统训练营第一二三阶段总结-dynamic-pigeon +date: 2025-04-21 15:19:02 +tags: +--- + +## 一阶段总结 + +二刷了,也很快写完了,感觉没有什么好说的() + +## 二阶段总结 + +又复习了一遍 rcore,顺便对比了一下去年写的代码,感觉去年写的代码明显很差,经常出现一些莫名其妙的的数据结构和函数调用, +今年对很多地方进行了重新编写,感觉自己对 rcore 的理解又上了一层。 + +今年担任助教的过程中,也主动被动的学了一些之前没有怎么关注的事情,对操作系统的理解也上了一层 + +## 三阶段总结 + +说起来这个三阶段去年是不做实验要求的,今年做了要求,但是因为之前在 arceos 进行了一个月的重度开发加上去年都写过了,这次 +很快就写完了。 + +在写实验的过程中也发现,之前在写内核的时候有很多对情况的遗漏,现在也对这些情况进行了填补。 \ No newline at end of file