版本 9a32ae26f2dfdbd860fa5c175d0c3553b2985ebc
dange (林殿智)
GitHub: dange0
Email: dange0.tw@gmail.com
簡介
- 中正大學 通訊工程學系 106 級 (2013-2017)
- 成功大學 電腦與通信工程研究所 資訊與系統組 (2017-)
進階電腦系統理論與實作 (Fall 2018) 個人評量
作業及筆記
- HW1
- HW2
- HW3
- HW4
- HW5
- 分組1
- 分組2
所見所聞心得
當初碩一從中正來到成大的時候,我就一直很想要來聽聽看 jserv 老師開的課程,但是身邊學長姐們聽到有這種想法都勸我不要想不開,再加上試聽幾堂後發現程度跟不上,於是我沒有在碩一時修這門課,然而我並非找了一些藉口就打退堂鼓,這一年我不斷提升自己的實力,用最大的力氣去補足跨領域造成的差異。終於,今年也是我最後可以修老師課的機會,我帶著實驗室的同學一起來誠實面對自己。當初我對 C 語言與系統感興趣是因為參加了一些資安培訓計畫,接觸到一些對系統攻擊的手法,這時候的我完全沈迷於一些華麗又炫砲的攻擊手法,像是 ROP, ret2lib 或是 UAF 等等。然而,過一陣子我就發現一味的追求攻擊手法並不是個正確的學習方向,唯有深入的了解底層的系統、了解 C 語言、了解 linux kernel,才能真正的將知識融會貫通,因此我在爆炸的碩二加入了誠實面對自己的行列。
這學期真的學習到太多的東西了,以前寫程式時根本就只是在對 *
與 &
做排列組合,湊出一組會動的結果就可以交作業了,從來都沒有深入了解 pointer 的意義。但是經過第一次作業的洗禮之下,才對 C 語言有不一樣的看法,對 C 語言來說,所有的東西都只是一堆 address 與 value,而要怎麼對這些 address 與 value 操作就取決與使用者了,C 語言給程式撰寫者極大的彈性的同時,也要求程式撰寫者要對自己的行為負責,是一個知己知彼、百戰百勝的概念。
這學期的分組作業也讓我發現我成長很多,在我上課之前我就對各個資安議題都很有興趣,其中包括了 2017 年的 Meltdown and Spectre,當初想要深入理解,但是對於系統的一些理論都沒有很深的認知,頂多只知道好像問題是出在亂序執行與分支預測上,但是要再更深入的研究時頭就會很痛,聽到 CPU 或是硬體更是不知道要怎麼下手。這次的分組作業剛好是作與 cache 相關的題目,透過補足理論上的不足,加上實際看了一些 github 上 cache 的測試方法,我開始有了不一樣的想法。因此我心血來朝的把他拿起來再看一次,這次神奇的事情就發生了,我突然什麼都看得懂了,CPU 與 cache 對我來說已經不再是什麼遙不可及的東西了,這就是我發現成長最大的地方。
最後,這堂課除了教會我如何寫 C 語言、如何看大型開源專案的程式碼、如何多人開發專案之外,老師帶給我們的觀念也非常重要,像是遇到問題應該去讀第一手資料,而非去 stackoverflow 找懶人包,或是寫程式不應該是 try and error,要在腦中可以 compile 等等觀念。這些觀念與堅持在無形之中加強了我解決問題的能力,遇到問題不再是瞎猜,或是把作業系統當玄學,而是用更科學、更邏輯的方式去解決問題。