# Linux 核心專題: 改進 lab0 > 執行人: oEric0929o :::success :question: 提問清單 * ? ::: ## 任務簡述 重做 [lab0](https://hackmd.io/@sysprog/linux2023-lab0) 並彙整其他學員的成果。 ## TODO: 達成作業所有要求 ### queue.c <s> [目前進度](https://hackmd.io/iSd6FlDuTjas3U9mnmpW0Q) 95/100 </s> :::danger 關於進度,直接更新在「本頁面」 :notes: jserv ::: ### 引入 lib/list_sort.c 參考 [chiangkd](https://github.com/chiangkd) 同學的做法,將 lib/list_sort.c 及 lib/list_sort.h 引入專案,並修改 Makefile 在 qtest.c 中新增 do_lsort 並新增 lsort 命令 比較自己實作的 merge sort 以及 Linux 核心程式碼的效能落差 ``` cmd> new cmd> ih RAND 260000 cmd> time sort Delta time = 0.190 cmd> free cmd> new cmd> ih RAND 260000 cmd> time lsort Delta time = 0.152 ``` 兩者的時間約相差1.25倍 ### 在 qtest.c 提供新的命令 shuffle 參考 [chiangkd](https://github.com/chiangkd) 同學的做法,在 queue.c 中新增 shuffle 函式 利用不斷抽取隨機元素放到最末端達到洗牌的效果 在 qtest.c 中新增 do_shuffle 並新增 shuffle 命令 ### 整合網頁伺服器 TODO ### 研讀論文〈[Dude, is my code constant time?](https://eprint.iacr.org/2016/1123.pdf)〉 TODO ### Valgrind 與 Address Sanitizer 記憶體檢查 TODO ## TODO: 研讀 Linux 的 `lib/list_sort.c` 並量化分析 解讀 Linux 核心原始程式碼的 `lib/list_sort.c`,設計實驗來量化分析,探討其實作手法,需要善用 perf 一類的工具。解析程式碼要有完整的圖文、數學證明,和如何達到 cache 友善。 [lib/list_sort.c](https://github.com/torvalds/linux/blob/master/lib/list_sort.c) ## TODO: 改進原有常數時間複雜度判斷程式 搭配研讀必要的統計原理,探討如何改進原有常數時間複雜度判斷程式 ## TODO: 藉由 Timsort 嘗試改進 `lib/list_sort.c` 應保持原本 in-place 排序的實作策略。