yellow951321(黃致豪) ------------------ **Information:** - 成功大學 資訊工程學系110級 Github: https://github.com/yellow951321 2021 linux 核心設計 春季班 自我評量 ================================ 期末專題: - quiz3 - SSO/CoW [hackmd](https://hackmd.io/i24l0X5wQLmE1U4a0myROg?view) 學期回顧 ================================ a) 知道 x - y < 0 敘述為何不能寫為 x < y 嗎? (CS:APP 第 2 章) 由課程講義的 [CS:APP 第 2 章重點提示和練習](https://hackmd.io/@sysprog/CSAPP-ch2) 可知道,當有號數和無號數在做比較時,有號數負會被轉換成 2 補數,反而正值大於負值。但 x - y 則不會發生此錯誤,因此可能會造成前者和後者的結果不同的情況。 b) 知道 C 語言規格書如何解釋 ptr++ 和 *ptr++ 行為的差異嗎? 在 ISO/IEC 9899 中提到 * ISO/IEC 9899:1999 [6.5.6-8] Additive operators > When an expression that has integer type is added to or subtracted from a pointer, the result has the type of the pointer operand. If the pointer operand points to an element of an array object, and the array is large enough, the result points to an element offset from the original element such that the difference of the subscripts of the resulting and original array elements equals the integer expression. 因此,前者是對地址做運算。而後者 *ptr 會是 arithmetic type ,對裡面的數值做運算。 自我評量 (1 ~ 10) Self-assessment ================================= 起初的最一開始的 lab0 就給了我很大的震撼, lab0 本身對我來說還是可以應付的難度,但是在延伸問題以及用來做效能分析的種種工具對我來說很陌生。尤其是延伸問題,延伸問題大多數是要對現有的程式碼做改進或者是探討其中的機制的優點和缺點,這類沒有標準答案的問題對我來說就跟噩夢一樣,至少讓我自己認識到了我在這方面的不足,希望我能夠加強起來。除此之外,上課內容裡也不斷重複提到一些我早就已經聽過的概念,在 c 語言上,例如 linked-list, bit-wise,以及並行程式。而在理論科目上也提到了之前 os 曾經教過的排程相關議題。但是,同樣的議題在這堂課的補充教材裡,對我來說卻是陌生的。讓我知道自己曾經學習的目的單單只是為了考試而背起來,沒有完整的將這些知識連結起來成為自己的東西。在落後的前提下,我卻沒有花上足夠時間追上別人的腳步。在期末專題上,我至少在瀏覽完大家的貢獻後統整成一份共筆希望能夠對這堂課有所貢獻。 這堂課我給自己 6 分,給至少有參與課堂到最後的我的基本分。