課程已經來到了第七周,經過了兩次大專案。在這兩次個人/結對專案裡,我深刻的感受到了自己在軟體工程、**架構、對計算機系統的了解上所存在的不足。這一周我看的書是深入理解計算機系統,這本書從某種意義上來說,也可以說是計算機體系結構的教材之一,之所以選擇這本書,不僅是因為我對這個方面的很多知識很感興趣,而且也不算很了解,我自我感覺,如果沒有好好讀過類似的書,可能對計算機系統仍然沒有什麼好的概念,即使學習過微機原理,也對我們以後的程式設計和工程實現能力有影響。
由於這週的事情很多,我只閱讀了本書的前兩章。首先不得不說的是,這兩張裡面,還有很多概念我已經學過了。但是,在閱讀的過程中,跟之前的學習相比,我感覺自己試圖從乙個新的角度去重新看待這些知識,並不是為了記憶,或者能夠做出題目那麼簡單。我想,當我經過了兩次大作業後,回頭來看待這些問題,即使我仍然屬於經驗不足的小白,但是我會有一些自己的體悟。事實證明確實如此。
本書的前兩章,主要介紹的是整個系統的漫遊以及計算機內部的資訊如何表示和處理。說實話,這些數該如何儲存等等的問題,我以前就學過了。但是呢,這一次看書,我發現自己多了一層思考,為什麼要這麼設計,是出於安全的因素,還是出於節省開銷的因素?在寫過了介面以後,作為資訊保安的學生,我發現自己對介面的敏感程度不足,在看書的過程中,我想到了乙個關於介面的問題,就是在傳遞四則運算所需的運算子資訊時,如果圖方便選用整數陣列介面或者字串的話,這個介面實際上是不夠安全的,有可能被人作攻擊。因此,我選用了五個bool型變數來作為介面的引數,這樣就最大限度的降低了介面被人攻擊的可能。然而,在這個同時,使用者體驗卻變差了。這個問題一直困擾著我,但是在看書的過程中,我有了這樣對介面的體悟,我想這是很令人開心的事。
同時,我一開始對unsigned int 和int其實沒有很好的概念,覺得他們只是兩種不同的編碼方式,卻沒有去很好地區分他們的具體作用。在書中,我看到了乙個不夠安全的例子,是關於使用攻擊者使用過大的數字會導致int整數溢位,被取餘數,從而導致分配空間小於本應獲得的空間,,從而導致部分記憶體空間中的資料暴露的例子。這對我帶來了不小的衝擊。原來攻擊可以發生在各個地方!由於我以前沒有注意過這些問題,所以其實我花了不少時間來理解這個例子,但是當我終於搞懂他以後,我突然覺得,原來獲得進步也不是那麼的困難,即使我以後可能不一定會碰到這樣的問題,但是這樣的例子是在時刻提醒我,只有對計算機系統足夠了解,才可以像計算機一樣思考,繼而能夠寫出更好的、更安全的**!
20150206讀書筆記《深入理解計算機系統》
第一章 c是系統級程式設計的首選。c 顯示支援抽象,屬於應用級程式語言。簡單例子 乙個典型系統的硬體組成 儲存器的層次結構 總結 計算機系統的乙個重大主題就是提供不同層次的抽象表示,來隱藏實際實現的複雜性。作業系統核心是應用程式和硬體之間的媒介。提供3個基本的抽象 1 檔案是對i o裝置的抽象 2 ...
《深入理解計算機系統》第七章讀書筆記
前言 鏈結是將各種 和資料部分收集起來並組合成為乙個單一檔案的過程,這個檔案可被載入 或拷貝 到儲存器並執行。鏈結可以執行於編譯時,也就是在源 被翻譯成機器 時 也可以執行於載入時,也就是在程式被載入器載入到儲存器並執行時 甚至執行於執行時,由應用程式來執行。在早期的計算機系統中,鏈結是手動執行的。...
《深入理解計算機系統》讀書筆記
小端模式 低有效位元組在前,高有效位元組在後 代表處理器 intel 大端模式 高有效位元組在前,低有效位元組在後 代表處理器 ibm power sun c語言允許無符號整數與有符號整數之間的轉換,轉換規則是 底層的位保持不變 當執行乙個運算時,若兩個數乙個為無符號數,乙個是有符號數,則c語言隱式...