# 2024q1 Homework5 (assessment) contributed by < `yutingshih` > ## 測驗題改進與提問 <!-- 從前 4 週的測驗題選出 3 題改進 (含延伸問題,要有對應的 Linux 核心原始程式碼案例探討),觀摩其他學員並參照授課教師進行的作業檢討和回顧,若有不能理解的部分,請標註出來。善用 HackMD 的語法 :::info 和 ::: 標註你的提問,在原有的筆記頁面更新即可。 --> ## 閱讀〈因為自動飲料機而延畢的那一年〉與課程啟發 <!-- 紀錄閱讀〈因為自動飲料機而延畢的那一年〉的啟發,特別在學習本課程 5 週之後的感想,應具體描述你在課堂、課後創作,和觀摩其他學員的成果時,理解到系統軟體的開發態度、對細節的重視,以及理論和實務的融會貫通。 --> - 現代生活中習以為常的商品,需要結合各種不同的專業投入 - 隔行如隔山,無法合理估計問題的複雜程度、要花多少時間和資源 - 「一項產業進步的速度,很大程度取決於做實驗修正問題的速度」 - 要是現在就放棄的話,你這輩子日後遇到這種等級的困難,就只會想逃避而已。 - 「你最大的問題在太害怕失敗了,既然都已經決定要延畢做飲料機了,那就要好好做,才不會辜負當初自己的期望。」、「你該學習的不是看到事情要完蛋了就去避免失敗,而是應該學習如何處理與承受失敗,你才能變得比以前更強大。」 - 「改造現成的比自己做一台快多了」資訊產業發展迅速正是因為能夠奠基在前人的基礎上,在 21 世紀的資訊科技產業中生存,要能夠快速理解並改進 ## 教材閱讀及提問 <!-- 研讀第 1 到第 6 週「課程教材」和 CS:APP 3/e (至少到第二章),紀錄心得和提問。針對自訂題目,例如貢獻程式碼到 Linux 核心,也將自己的構想和規劃記錄下來,隨後與授課教師一對一討論時可運用。 --> 在 [並行程式設計: 執行順序](https://hackmd.io/@sysprog/concurrency/%2F%40sysprog%2Fconcurrency-ordering) 中提到,C++ 定義了 5 種情況能夠建立跨執行緒之間的 happens-before 關係,但實際上該如何應用?參考資料中有列出 `enum class memory_order` 的文件,但不清楚如何撰寫程式。 ## 期末專題 <!-- 參照 2023 年期末專題,簡述你想投入的專案 (亦可建立新專案),至少選出 (或訂出) 二個。 --> ### 《Concurrency Primer》校訂和範例撰寫 - 一直以來我對於並行程式設計還有現代 C 語言的認識和實作經驗都十分欠缺,希望從基礎開始重新學起,而校訂書籍和撰寫範例是很好的練習機會 (參考 [learning pyramid](https://en.wikipedia.org/wiki/Learning_pyramid)) - 這學期有修另外一門課《人工智慧晶片設計與應用》,要求作業使用 $\LaTeX{}$ 撰寫,因此對 $\LaTeX{}$ 的語法和環境 (本地端/線上編譯) 有一定的熟悉度,可以直接貢獻原始碼 - 預計貢獻內容需要與老師討論 ### 改進 Linux 核心的 `lib/{list_}sort.c` - 在 homework 1 的基礎上,探討 Linux 核心的 bottom-up merge/heap sort 實作,並實作 hybrid sort 演算法 ### 位元操作與浮點數運算 - 碩班研究方向是神經網路模型的量化 (quantization),與位元操作和浮點數運算息息相關 ### 用於軟硬體整合開發的多執行緒系統模擬器 - 實驗室專注於人工智慧系統軟硬體共同設計的研究,然而目前尚欠缺一套能夠進行軟體和硬體整合驗證的平台 - 用於早期的硬體架構探索與效能評估和軟體開發 (e.g. compiler & runtime porting) --- test-and-set TODO: 閱讀 https://hackmd.io/@sysprog/concurrency 及《Concurrency Primer》 TODO: 紀錄問題 real-time property safety, liveness, fairness - 在 [搶佔式與非強取式核心](https://hackmd.io/@sysprog/concurrency/%2F%40sysprog%2Fconcurrency-concepts#%E6%90%B6%E4%BD%94%E5%BC%8F%E8%88%87%E9%9D%9E%E5%BC%B7%E5%8F%96%E5%BC%8F%E6%A0%B8%E5%BF%83) 提到搶佔和非搶佔式的核心,那 Linux 核心是屬於哪一種? - 內文都是採用「非搶佔式核心」,但標題卻是「非強取式核心」,兩者不一致 - 下面好像不是 Java 程式 ![image](https://hackmd.io/_uploads/BkbYpqsM0.png) - 與下面 happens-before 的描述矛盾,上一行的操作不必然得 sequenced-before 下一行 ![image](https://hackmd.io/_uploads/Bkun6ciGR.png) - 什麼叫做 atomic object ![image](https://hackmd.io/_uploads/Sk7vejiMA.png) - total order 有四個屬性:reflexive, antisymmetric, trasitive, connected,講義只講到三個,但 Wikipedia 上的 total order 的定義還有包含 reflexive: $\forall a \in X, aRa$ ![image](https://hackmd.io/_uploads/BJ5LOsjfR.png)