日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

2017-2018-1 20155204 《信息安全系统设计基础》第十一周学习总结

發布時間:2023/11/27 生活经验 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2017-2018-1 20155204 《信息安全系统设计基础》第十一周学习总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

教材學習內容總結

9.1物理和虛擬地址

  1. 物理地址:計算機系統的主存被組織成一個人由M個連續的字節到校的單元組成的數組。每字節都有一個唯一的物理地址。第一個字節的地CPU生成址為0,接下來的字節地址為1,再下一個是2,依次類推。給定這種簡單的結構,CPU訪問存儲器的最自然的方式就是使用物理地址。

  2. 虛擬地址:CPU生成一個虛擬地址來訪問主存,這個虛擬地址在被送到存儲器之前先轉換成適當的物理地址。

9.2地址空間

  1. 地址空間:一個非負整數地址的有序集合。

  2. 線性地址空間:地址空間中的整數是連續的

  3. 虛擬地址空間:一個帶有虛擬存儲器的系統中,CPU從一個有N=2^n個地址的地址空間中生成虛擬地址,這個地址空間稱為虛擬地址空間。

9.3虛擬內存作為緩存的工具

  1. 虛擬存儲器被組織為一個由存放在磁盤上的N個連續的字節大小的單元組成的數組,每個字節都有一個唯一的虛擬地址,作為到數組的索引。

  2. VM系統通過將虛擬存儲器分割為稱為虛擬頁的大小固定的塊來處理這個問題。每個虛擬頁大小為P=2^p。物理存儲器被分割為大小也為P字節的物理頁稱為幀。

  3. 在任意時刻,虛擬頁的集合通常被分為三個不相交的子集:未分配的、緩存的、未緩存的。

9.4虛擬內存作為存儲器管理的工具

  1. 按需頁面調度和獨立的虛擬地址空間的結合,對系統中內存的使用和管理造成了深遠的影響。特別地,VM簡化了鏈接和加載、代碼和數據共享,以及應用程序的內存分配。
  • 簡化鏈接:獨立的地址空間允許每個進程為它的內存映像使用相同的基本格式,因而不管代碼和數據實際存放在物理內存的何處,它的一致性極大地簡化了鏈接器的設計和實現,允許生成全鏈接的可執行文件,這些可執行文件是獨立于物理內存中代碼和數據的最終位置的。
  • 簡化加載:虛擬內存使得容易向內存中加載可執行文件和共享文件對象。系統加載時只需分配那些數據和代碼區域的連續的虛擬頁面區域,將它們標識為無效,且頁面條目地址指向目標文件中適當的位置。
  • 簡化共享:操作系統通過不同進程的頁表,將各自的私有的數據和代碼映射到不同的物理頁面;而對共享的代碼和數據,就將適當的虛擬頁面映射到相同的物理頁面,從而安排多個進程共享這部分代碼的一個拷貝。
  • 簡化內存分配:由于頁表的工作方式,操作系統沒有必要分配k個連續的物理內存頁面,頁面可以隨機的分散在物理內存中。

9.5虛擬內存作為存內存保護的工具

在PTE上添加一些額外的許可位來控制一個虛擬頁面的內容訪問十分簡單。

9.6地址翻譯

  1. 形式上說。地址翻譯是一個N元素的虛擬地址空間(VAS)中元素和一個M元素的物理地址空間(PAS)中元素的映射。

  2. 使用頁表的地址翻譯:頁表基址寄存器指向當前頁表,通過n位的虛擬地址中n-p位的虛擬頁號(VPN)從頁表中選出適當的頁表條目,將頁表條目中中的物理頁號(PPN)和虛擬地址中的p位虛擬頁面偏移(VPO)串聯起來,得到物理地址。因為VPO和PPO是相同的。

  3. 頁命中時CPU硬件執行的步驟:
    處理器生成一個虛擬地址,并把它傳送給MMU
    MMU生成PTE地址,并從高速緩存/主存請求得到它
    高速緩存/主存向MMU返回PTE
    MMU構造物理地址,并把它傳送給高速緩存/主存
    高速緩存/主存返回所請求數據給處理器。

  4. 處理缺頁:
    第一步到第三步和頁面命中步驟內容相同
    第四步:PTE有效位為0,所以MMU觸發了一次異常,傳遞cpu中的控制到操作系統內核的缺頁處理程序
    第五步:缺頁處理程序確定出物理內存中犧牲頁,若犧牲頁已被修改過,則將其換到磁盤
    第六步:缺頁處理程序調入新的頁面,并更新內存中的PTE
    第七部:缺頁處理程序返回到原來的進程,驅使導致缺頁的指令重新啟動,會出現頁面命中接下來的步驟。

9.8內存映射

通過將一個虛擬內存區域與一個磁盤上的對象關聯起來,以初始化這個虛擬內存區域的內容,這個過程叫做內存映射。

虛擬內存區域可以映射到兩種類型的對象:

  • 普通文件:一個區域可以映射到一個普通磁盤的其他部分。
  • 匿名文件:內核創建的,包含的全是二進制零。
    再看共享對象

一個對象可以被映射到虛擬內存的一個區域,要么作為共享對象,要么作為私有對象。

對共享對象,某個進程的任何寫操作于那些也把這個共享對象映射到它們虛擬內存中的其它進
程而言也是可見的,這些變化會反映到磁盤中的原始文件上;而對私有對象,某個進程的任何寫操作對其它進程來說都是不可見的。

私有對象一般使用一種寫時拷貝的技術來映射到虛擬內存中。一個私有對象開始時與共享對象一樣,都是每個進程虛擬空間中各自有一個映射,但物理內存中只有一份拷貝。而當到某個進程試圖寫私有對象的某個區域時,會觸發一個保護故障,故障處理程序就會在物理內存中創建這個頁面的一個新拷貝,并更新相應PTE和恢復寫權限,再將控制返回到寫指令處。

9.9動態內存分配

  1. 大多數C程序在運行時需要額外虛擬內存時,會使用一個動態內存分配器,它維護者一個進程的虛擬內存區域,稱為堆。堆是一個請求二進制零的區域,它緊接在未初始化的bss區域后開始,并向上生長,對于每個進程,內核維護著一個變量brk,它指向堆的頂部。

  2. 分配器將堆視為一組不同大小的塊的集合來維護,每個塊就是虛擬內存組塊,分配的或空閑的。分配的供應用使用或被進程釋放,空閑的等待被應用所分配。

分配器有兩種基本風格:

  • 顯式分配器:要求程序顯式地釋放任何已分配的塊
  • 隱式分配器:(也叫垃圾收集器)要求分配器檢測何時一個已分配塊不再被程序使用,然后釋放這個塊。
  1. malloc和free函數
    C標準庫提供了稱為malloc程序包的顯式分配器,可以調用它來從堆中分配塊。Malloc不會初始化它返回的內存。Free用來釋放已分配的堆塊,注意其參數必須指向一個從malloc中獲得的已分配塊的起始位置。

  2. 為什么要使用動態分配器分配:
    程序使用動態內存分配的最重要的原因是它經常直到程序實際運行時才知道某些數據結構的大小。

  3. 分配器的要求:
    處理任意請求序列
    立即響應請求
    只使用堆
    對齊塊
    不修改已分配的塊。
    最大化吞吐率:每個單位時間里完成的請求數,包括分配請求和釋放請求
    最大化內存利用率:可通過峰值利用率Uk來測量,一般為聚集有效載荷Pk和當前堆大小的比值。
    碎片

-------------------,

  1. 隱式空閑鏈表:

通過將空閑塊和已分配塊的頭部的信息將這些塊連接起來直到最后一個設置了已分配位和大小為零的終止頭部,成為一個鏈表結構。

  1. 放置已分配的塊:

當應用請求一個K字節的塊時,分配器搜索空閑鏈表,并查找出足夠大、可以放置所請求的空閑塊的方式。一般有首次適配、下一次適配和最佳適配策略。

  1. 分割空閑塊:

當查找出空閑塊后決定分配這個塊中多少空間給分配請求。

  1. 合并空閑段塊

當分配器釋放一個已分配塊時,可能有其他空閑塊與這個新釋放的空閑塊相鄰。

9.10垃圾收集

  1. 垃圾收集:應用負責釋放不再需要的已分配塊。

  2. 垃圾收集器:它將內存視為一張有向可達圖,它的角色是維護可達圖的某種表示,并通過釋放不可達節點并將它們返回給空閑鏈表,來定期回收它們。

  3. Mark&Sweep垃圾收集器:

由標記階段和清除階段組成,標記階段標記出根節點的所有可達的和已分配的后繼,清除階段釋放每個未標記的已分配塊。

9.11C程序中常見的與內存有關的錯誤

  • 間接引用壞指針
  • 讀未初始化的內存
  • 允許棧緩沖區溢出
  • 假設指針和它們執行的對象是相同大小的
  • 造成錯位錯誤
  • 誤解指針運算
  • 引用不存在的變量
  • 引用空閑堆塊中的數據
  • 引起內存泄露

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

  • 問題1:造成堆利用率低的主要原因是什么?
  • 問題1解決方案: 在雖然有未使用的內存但不能滿足分配請求時就稱出現碎片。碎片又分為——內部碎片:一個已分配塊比有效載荷大時發生的;外部碎片:是當空閑內存合計起來足夠滿足一個分配請求,但沒有一個單獨的空閑塊足夠大到可以來處理這個請求而發生的。
  • 問題2:如何理解常見錯誤中的允許棧緩沖區溢出
  • 問題2解決方案:棧溢出就是緩沖區溢出的一種。 由于緩沖區溢出而使得有用的存儲單元被改寫,往往會引發不可預料的后果。程序在運行過程中,為了臨時存取數據的需要,一般都要分配一些內存空間,通常稱這些空間為緩沖區。如果向緩沖區中寫入超過其本身長度的數據,以致于緩沖區無法容納,就會造成緩沖區以外的存儲單元被改寫,這種現象就稱為緩沖區溢出。緩沖區長度一般與用戶自己定義的緩沖變量的類型有關。

代碼托管

本周結對學習情況

- [20155203](http://www.cnblogs.com/xhwh/p/7940497.html)
- 結對學習內容課下練習、一起讀書、一起研究課下測試。

學習進度條

代碼行數(新增/累積)博客量(新增/累積)學習時間(新增/累積)重要成長
目標5000行30篇400小時
第一周200/2002/220/20
第二周300/5002/418/38
第三周500/10003/722/60
第四周300/13002/930/90
第五周200/15002/1110/100
第六周200/17002/1310/110
第七周302/20201/1410/120
第八周892/29121/1410/130
第九周892/29123/1710/140
第十周239/31510/1710/150
第十一周181/33322/1910/160

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

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

  • 計劃學習時間:10小時

  • 實際學習時間:10小時

  • 改進情況:

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

參考資料

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

轉載于:https://www.cnblogs.com/20155204wh/p/7954205.html

總結

以上是生活随笔為你收集整理的2017-2018-1 20155204 《信息安全系统设计基础》第十一周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。