1. 程式人生 > >2018-2019-1 20165209 《資訊安全系統設計基礎》第九周學習總結

2018-2019-1 20165209 《資訊安全系統設計基礎》第九周學習總結

2018-2019-1 20165209 《資訊安全系統設計基礎》第九周學習總結

教材學習內容總結

目錄內容:ls

1. 理解虛擬儲存器的概念和作用

  • 概念:虛擬儲存器是硬體異常、硬體地址翻譯、主存、磁碟檔案和核心軟體的完美互動,它為每個程序提供了一個大的、一致的和私有的地址空間。

  • 作用:
    • 將主存看做是一個儲存在磁碟上的地址空間的快取記憶體,在主存中只保護活動區域。
    • 為每個程序提供了一致的地址空間,從而簡化了儲存器管理。
    • 保護每個程序的地址空間不被其他程序破壞。

2.理解地址翻譯的概念

  • 概念:把一個虛擬地址轉換為實體地址的任務。

3.理解儲存器對映

  • 概念:Linux通過將一個虛擬記憶體區域與一個磁碟上的物件(object)關聯起來,以初始化這個虛擬記憶體區域的內容。

  • Linux中的普通檔案:一個區域可以對映到一個普通磁碟檔案的連續部分,例如一個可執行目標檔案。

  • 匿名檔案:一個區域也可以對映到一個匿名檔案,匿名檔案是由核心建立的,包含的全是二進位制零。

4.掌握動態儲存器分配的方法

  • 概念:當執行時需要額外虛擬儲存器時,使用動態儲存器分配器維護一個程序的虛擬儲存器區域。
  • 分配器有兩種:
    • 顯示分配器:要求應用顯式地釋放任何已經分配的塊。
    • 隱式分配器:要求分配器檢測一個已分配塊何時不再被程式所使用,就釋放這個塊。也叫做垃圾收集器。

5.理解垃圾收集的概念

  • 垃圾收集器是一種動態儲存分配器。自動釋放程式已經不再需要的已分配塊。

  • 垃圾收集器將儲存器視為一張有向可達圖。

  • Mark%Sweep垃圾收集器:由標記(mark)階段和清除(sweep)階段組成。

6.瞭解C語言中與儲存器有關的錯誤

  • 間接引用壞指標

  • 引用指標,而不是所指向的物件

  • 誤解指標運算

  • 引起儲存器洩露

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

  • 問題1:malloc()從哪裡獲得的記憶體空間?

  • 問題1解決方案:從堆裡面獲得空間。當作業系統收到程式的申請時,就會遍歷該連結串列,然後就尋找第一個空間大於所申請空間的堆結點,然後就將該結點從空閒結點連結串列中刪除,並將該結點的空間分配給程式。

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

  • 問題1:無法開啟Y86-64模擬器介面

  • 問題1解決方案:將兩個GUI路徑分別設定為TKLIBS=-L/usr/lib -ltk8.5-ltcl8.5和TKINC=-I/usr/include/tcl8.5(原因是Y86-64模擬器的Makefile中配置GUI相關路徑錯誤導致的)

上週考試錯題總結

  • 錯題1:

    • Unix/Linux中,對於程式碼fd=open("foo",O_WRONLY,0766),umask=022,下面說法正確的是(AC)
      A . 程序對foo是隻寫的
      B . 同組成員能寫foo
      C . 使用者可以執行foo
      D . 任何人都可以寫foo

    • 解析:因為九個許可權可以用0777表示,07(使用者)7(同組成員)7(其他人)7(111)(讀:寫:執行),檔案實際許可權是mode&~mask。

  • 錯題2:

    • 有關磁碟操作,說法正確的是(ACD)
      A . 對磁碟扇區的訪問時間包括三個部分中,傳送時間最小。
      B . 磁碟以位元組為單位讀寫資料
      C . 磁碟以扇區為單位讀寫資料
      D . 讀寫頭總處於同一柱面

    • 解析:對磁碟扇區的訪問時間中傳送時間最小;磁碟以扇區為單位讀寫資料;磁碟操作中讀寫頭總處於同一柱面。

其他

這一章的內容有點難,花的時間比預計多了一些,但是書本上的東西認真看還是可以理解的。

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

  • 計劃學習時間:15小時

  • 實際學習時間:20小時

  • 改進情況:

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

參考資料