分享到plurk 分享到twitter 分享到facebook

版本 da68a6b29de9f89880102db4d4c328679740668f

User/yutingshih

Changes from da68a6b29de9f89880102db4d4c328679740668f to 37eea574cb99ed44efcf2087fe9a7b793e4de7f9

---
title: yutingshih (施宇庭)
categories: User
...

# 簡介

- 國立成功大學 智慧運算碩士學位學程
- GitHub: [`yutingshih`](https://github.com/yutingshih)
- HackMD: [`yutingshih`](https://hackmd.io/@yutingshih)

# 2024 Linux 核心實作 春季班 自我評量

## 成果發表和貢獻

評分標準:每個 non-trivial 貢獻得 1 分,貢獻獲得採納再額外多得 1 分,教材勘誤每次得 0.5 分,各項貢獻得分加總後四捨五入。

- 並行程式設計:概念
    - 勘誤:在 [搶佔式與非強取式核心](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) 中,內文都是採用「非搶佔式核心」,但標題卻是「非強取式核心」,兩者不一致
- 並行程式設計:執行順序
    - 勘誤:在 [Happens-before](https://hackmd.io/@sysprog/concurrency/%2F%40sysprog%2Fconcurrency-ordering#Happens-before) 中,文字說明為「Java 程式」但展示的程式碼為 C 語言
    - 勘誤:在 [Happens-before](https://hackmd.io/@sysprog/concurrency/%2F%40sysprog%2Fconcurrency-ordering#Happens-before) 中,total order 的定義有誤,和參考資料的定義不一致,少了 relexivity
    - 修改 memory consistency model 中關於 [sequential consistency 的解釋](https://hackmd.io/@sysprog/BkNqX71L0#%E4%BF%AE%E6%94%B9%E3%80%88%E6%9C%80%E7%9B%B4%E8%A6%BA%E7%9A%84%E7%B4%84%E5%AE%9A%EF%BC%9ASequential-Consistency%E3%80%89)
    - 新增 [執行順序的數學描述](https://hackmd.io/@sysprog/BkNqX71L0#%E6%96%B0%E5%A2%9E%E3%80%88%E5%9F%B7%E8%A1%8C%E9%A0%86%E5%BA%8F%E7%9A%84%E6%95%B8%E5%AD%B8%E6%8F%8F%E8%BF%B0%E3%80%89)
    - 新增 x86-TSO、ARM 的 [hardware memory consistency model](https://hackmd.io/@sysprog/BkNqX71L0#%E6%96%B0%E5%A2%9E%E3%80%88Hardware-Memory-Consistency-Models%E3%80%89) 和 litmus tests
- Concurrency Primer
    - 新增 memory consistency model 章節 ([PR#16](https://github.com/sysprog21/concurrency-primer/pull/16))

閱讀教材過程中有發現錯誤,並記錄在[期末專題](https://hackmd.io/@sysprog/BkNqX71L0)的筆記中以 warning 區塊標示,共計三處各得 0.5 分。新增和修改內容的部分還在審查當中,尚未獲得採納,因此四項各拿 1 分。

本項得分:round(0.5 + 0.5 + 0.5 + 1 + 1 + 1 + 1) = 6 分

## 作業/隨堂測驗

## 期末專題

評分標準:下列各項加總後四捨五入,若超過則取 10 分

- 詳實記錄開發過程、成果與產出:0 ~ 6 分
- 觀摩其他同學的期末專題並提問:每個 0.8 分,最多 4 分
- 獲得[期末成果發表](https://hackmd.io/@sysprog/linux2024-showcase)機會:4 分

《Concurrency Primer》校訂和範例撰寫:[HackMD](https://hackmd.io/@sysprog/BkNqX71L0) / [GitHub](https://github.com/sysprog21/concurrency-primer) /  [Slides](https://docs.google.com/presentation/d/1we4EP9-CVLkawnnIxCxiboqJEyjJRYgc/edit?usp=sharing&ouid=100267826973884342963&rtpof=true&sd=true) / [Video](https://youtu.be/Hwc6HGfyCkQ?si=I1ukLFFXxUMP7y5M)

由於過去未曾學習過 concurrency 相關議題,因此在這兩個月中,我從閱讀《並行與多執行緒程式設計》系列講座開始,逐步建立基礎知識,將我的認知與偶然在教材中發現的若干錯誤記錄於[專題開發紀錄](https://hackmd.io/@sysprog/BkNqX71L0#%E9%96%B1%E8%AE%80%E3%80%88%E4%B8%A6%E8%A1%8C%E5%92%8C%E5%A4%9A%E5%9F%B7%E8%A1%8C%E7%B7%92%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E3%80%89%E7%B3%BB%E5%88%97%E8%AC%9B%E5%BA%A7%E4%B8%A6%E7%B4%80%E9%8C%84%E5%95%8F%E9%A1%8C)當中。

在第二個月,我開始閱讀專題指定材料,即 Russ Cox 所寫的 〈[Hardware Memory Models](https://research.swtch.com/hwmm)〉和 〈[Programming Language Memory Models](https://research.swtch.com/plmm)〉,消化後貢獻 [sequential consistency](https://hackmd.io/@sysprog/BkNqX71L0#%E4%BF%AE%E6%94%B9%E3%80%88%E6%9C%80%E7%9B%B4%E8%A6%BA%E7%9A%84%E7%B4%84%E5%AE%9A%EF%BC%9ASequential-Consistency%E3%80%89) 和 [x86/ARM memory consistency models](https://hackmd.io/@sysprog/BkNqX71L0#%E6%96%B0%E5%A2%9E%E3%80%88Hardware-Memory-Consistency-Models%E3%80%89) 至《並行與多執行緒程式設計》系列講座,以及貢獻 [memory consistency models](https://github.com/sysprog21/concurrency-primer/pull/16) 至《Concurrency Primer》當中。

最後我自主閱讀了論文《[Litmus Tests for Comparing Memory Consistency Models: How Long Do They Need to Be?](https://acg.cis.upenn.edu/papers/dac11_litmus.pdf)》學習如何用數學語言描述程式的執行順序及 memory consistency model,並將 [執行順序的數學描述](https://hackmd.io/@sysprog/BkNqX71L0#%E6%96%B0%E5%A2%9E%E3%80%88%E5%9F%B7%E8%A1%8C%E9%A0%86%E5%BA%8F%E7%9A%84%E6%95%B8%E5%AD%B8%E6%8F%8F%E8%BF%B0%E3%80%89) 貢獻至《並行與多執行緒程式設計》系列講座,能夠在這麼短的時間內理解艱深的內容,理出自己的思考脈絡並做出貢獻,超出我最初的預期,因此在開發過程與成果產出這個項目我給自己滿分 6 分。

但很遺憾這次沒有獲得[期末成果發表](https://hackmd.io/@sysprog/linux2024-showcase)的機會,且觀摩其他同學並提問尚未開始進行,因此這部分沒有拿到分數。

本項得分:6 分

## 與授課教師的互動

## 所見所聞所感

## 研究生學習回顧

評分標準:每封符合課程規定的學習回顧信件得 2.5 分,加總後四捨五入。

- 四月學習回顧 (2024/05/05):簡述在 lab0-c 學到 Linux 風格的 list API、學習閱讀 C 語言規格書等第一手資料、活用 Git 進行程式碼開發並於實驗室推廣
- 五月學習回顧 (2024/06/30):分享在並行程式設計的學習心得、期末專題嘗試貢獻《並行與多執行緒程式設計》和《Concurrency Primer》,以及未來可能對實驗室的幫助

這個項目要求整學期總共要寄出四封學習回顧信件,我只有兩次學習回顧信件符合標準 (準時寄出且有副本給授課教師),因此只拿一半的分數。

本項得分:round(2.5 + 2.5) = 5 分

## 自我評量 (1 ~ 10)