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

dange (林殿智)


GitHub: dange0

Email: dange0.tw@gmail.com

簡介

  • 中正大學 通訊工程學系 106 級 (2013-2017)
  • 成功大學 電腦與通信工程研究所 資訊與系統組 (2017-)

進階電腦系統理論與實作 (Fall 2018) 個人評量

作業及筆記

所見所聞心得

當初碩一從中正來到成大的時候,我就一直很想要來聽聽看 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 等等觀念。這些觀念與堅持在無形之中加強了我解決問題的能力,遇到問題不再是瞎猜,或是把作業系統當玄學,而是用更科學、更邏輯的方式去解決問題。

自我評量分數 (1 到 10 級分)

9 級分

在忙碌又爆炸的碩二生活中,我沒辦法投入充分的時間去完成所有的作業,但是每一份作業我都是用盡洪荒之力去寫,擠壓所有可用的時間後的結果。

回顧這學期的付出、收穫與最後驚覺自己的進步,從以前不懂 C 語言、只會 git clone、不懂硬體、不懂系統、不看第一手資料與try and error 的寫程式風格,總總不堪回首的陋習隨著課程的腳步一一拋開,盡可能的把最好的表現拿出來,我相信維持著這樣的步伐未來我還會持續在進步,因此我給自己這樣的分數。