1. 程式人生 > >2017-2018-1 20155333 《信息安全系統設計基礎》第十一周學習總結

2017-2018-1 20155333 《信息安全系統設計基礎》第十一周學習總結

多看 這樣的 因此 .html 解決 ref 垃圾 malloc 軟件工程師

2017-2018-1 20155333 《信息安全系統設計基礎》第十一周學習總結

教材學習內容總結

1、虛擬存儲器提供了三個重要的能力:

  • (1)它將主存看成是一個存儲在磁盤上的地址空間的高速緩存,在主存中只保存活動區域,並根據需要在磁盤和主存之間來回傳送數據,通過這種方式,它高效的使用了主存。

  • (2)它為每個進程提供了一致的地址空間,從而簡化了存儲器管理。

  • (3)它保護了每個進程的地址空間不被其他進程破壞。
    2、 碎片現象:造成堆利用率低的主要原因是一種碎片現象。
  • 內部碎片:已分配塊比有效載荷大時發生的。
  • 外部碎片:是當空閑存儲器合計起來滿足分配請求,但是沒有一個單獨的空閑塊足夠大來處理這個請求。所以,存儲器采用試圖維持少量的大空閑塊,而不是維持大量的小空閑塊。
    3、垃圾收集:
    垃圾收集器將存儲器視為一張有向可達圖,該圖的節點被分成一組根節點和一組堆節點,每個堆節點對應於堆中的一個已分配塊。在任何時刻,不可達節點對應於垃圾,是不能被應用再次使用的,垃圾收集器的角色是維護可達圖的某種表示,並通過不可達節點並將它們返回給空閑鏈表,來定期回收他們。
  • JAVA:收集器能精確的維護可達圖,因此也能夠回收所有垃圾。
  • C和C++:收集器不能維持可達圖的精確表示,這樣的收集器叫做保守的垃圾收集器,即每個可達塊都被正確的標記為可達,而一些不可達節點卻可能被錯誤的標記為可達。
    4、C程序中常見的與存儲器有關的錯誤:
  • 間接引用壞指針:在進程的虛擬地址空間中有較大的洞,沒有映射到任何有意義的數據。如果我們試圖間接引用一個指向這些洞的指針,那麽操作系統就會以段異常中止程序。
    最經典的錯誤是:scanf(“%d”,val);我們將val的值錯誤傳給scanf,而不是&val,在這種情況下scanf將val解釋為一個地址,並試圖將一個字寫到這個位置。
  • 假設指針和它們指向的對象是相同大小的
  • 誤解指針運算:指針的算術操作是以它們指向的對象的大小為單位來進行的,而這種大小單位不一定是字節。
  • 引用不存在的變量
  • 引起存儲器泄露:沒有釋放已經分配的塊,就返回。

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

  • 問題1:既然虛擬內存是在磁盤上的,為什麽運行時不感覺卡頓?
  • 問題1解決方案:因為程序的局部性。
  • 問題2:為什麽要了解虛擬存儲器?
  • 問題2解決方案:
  1. 虛擬存儲器是中心。虛擬存儲編輯系統的所有層面。
  2. 虛擬存儲器是強大的。虛擬存儲器給予應用程序強大的能力,可以創建和銷毀存儲器片(chunk)、將存儲器片映射到磁盤文件的某個部分,以及其他進程共享存儲器。
  3. 虛擬存儲器是危險的。每次應用程序引用一個變量、間接引用一個指針,或者調用一個類似與malloc的動態分配的函數,就會跟虛擬存儲器打交道。
  • ...

代碼調試中的問題和解決過程

  • 問題1:XXXXXX
  • 問題1解決方案:XXXXXX
  • 問題2:XXXXXX
  • 問題2解決方案:XXXXXX
  • ...

代碼托管

今天運行statistic.sh腳本出現了問題,等解決了問題會把截圖補上的。

上周考試錯題總結

  • 錯題1及原因,理解情況
  • 錯題2及原因,理解情況
  • ...

結對及互評

點評模板:

  • 博客中值得學習的或問題:
    • xxx
    • xxx
    • ...
  • 代碼中值得學習的或問題:
    • xxx
    • xxx
    • ...
  • 其他

本周結對學習情況

- [2015532](http://www.cnblogs.com/zjy1997/)
- 結對照片
- 結對學習內容
    - 教材第九章
    - 實驗四外設驅動程序設計
    - ...

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

xxx
xxx

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一周 10/10 1/1 10/10
第二周 80/90 1/2 15/25
第三周 100/190 1/3 15/40
第四周 150/340 1/4 18/58
第五周 2/6 20/78
第六周 2/8 20/98
第七周 2124/ 2/10 20/118
第八周 2/12 30/148

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

參考:軟件工程軟件的估計為什麽這麽難,軟件工程 估計方法

  • 計劃學習時間:25小時

  • 實際學習時間:20小時

  • 改進情況:

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

參考資料

  • 《深入理解計算機系統V3》學習指導
  • ...

2017-2018-1 20155333 《信息安全系統設計基礎》第十一周學習總結