1. 程式人生 > >《資訊安全系統設計基礎+Linux 核心分析》第一次學習總結

《資訊安全系統設計基礎+Linux 核心分析》第一次學習總結

《資訊安全系統設計基礎+Linux 核心分析》第一次學習總結

教材學習內容總結

學習了《庖丁解牛》的第一章。知道的概念有:

  • 儲存程式計算機 = 馮諾依曼計算機,主要思想是:將程式存放在計算機儲存器中,然後按儲存器中的程式的首地址來執行程式的第一條指令,接下來就是一步一步按照程式中的編寫好的指令來一步一步執行,直至程式結束。
  • 馮諾依曼體系結構的要點如下圖。底層是:RAM,ROM,運算器(ALU),控制器,暫存器。 由圖可知:暫存器是在CPU中的,而RAM,ROM不是在CPU中的,它們是記憶體。
  • CPU 像“貪吃蛇”一樣,總是在記憶體裡“吃”指令。
  • CPU、記憶體和I/O裝置是通過匯流排連線的。記憶體中放著指令和資料。CPU負責解釋和執行記憶體中的指令。
  • IA32 : Intel Architecture 32bit.
  • 暫存器:ABCD是資料暫存器,這四個16位的暫存器可以分為兩個獨立的8位暫存器使用。E:32位;R:64位;X:128位。

  • 62位中的增加的通用暫存器是可以使用者隨便使用的。
  • 資料格式
    • Word : 16 bit.
    • Double Words : 32 bit. 4個Byte : l
    • Quad Words : 64 bit.
  • 尋找方式:找“物件” 的方法
    • 暫存器定址
    • 立即定址
    • 直接定址
    • 間接定址
    • 變址定址
  • 棧:有書的那部分是棧。棧頂指標:Stack Pointer中是非空的。
    • pushl 棧在增長
    • popl 棧在收縮(減小)
  • 指標、暫存器都是一個“小盒子”的“名稱”,這個小盒子裡放著“地址”(門牌號)。這個門牌號就是記憶體中的地址,地址裡面“住著”一個一個的資料們。如下圖所示:

  • 下面的指令都是“複合”指令,而且最底層的“原材料”指令中有設計到對堆疊指標(堆疊小盒子)的操作(更確切的說是操作了小盒子裡的資料--地址)
    • pushl : 由2條底層語句複合而成
    • popl : 由2條底層語句複合而成
    • call : 由3條底層語句複合而成,一個pushl 和一個 movel
    • ret : 由2條底層語句複合而成,一個popl
    • enter : 由3條底層語句複合而成,一個popl 和一個 movel
    • leave : 由3條底層語句複合而成,一個pushl 和一個 movel
  • 程式從main函式開始執行,即:main 標號(這個標號不算語句噢)下面的第一條語句。
  • 通過函式呼叫堆疊框架,暫存了函式的上下文資訊,整個程式的執行過程變成了一個指令流,從CPU 中“流”了一遍,最終棧空間又恢復到空棧的狀態。

    教材學習中的問題和解決過程

    經過思考後,無。我覺得:應該把指標的指向放到中間比較好。因為:“門牌號”都是在房間門的正中央的。

程式碼除錯中的問題和解決過程

沒有敲很多程式碼,只是驗證了一下自己的實驗環境。

程式碼託管

上週考試錯題總結

其他(感悟、思考等,可選)

好好學!
我發現,這門課好像和“深入理解計算機系統”這門課的聯絡很緊密?但是:這應該是兩門課!可以同時進行吧。

學習進度條

程式碼行數(新增/累積) 部落格量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時

嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進自己的計劃能力。這個工作學習中很重要,也很有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。

參考:軟體工程軟體的估計為什麼這麼難軟體工程 估計方法

  • 計劃學習時間:XX小時

  • 實際學習時間:XX小時

  • 改進情況:

(有空多看看現代軟體工程 課件
軟體工程師能力自我評價表
)

參考資料

  • 庖丁解牛 Linux 核心分析。