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

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

為了更加有效地管理儲存器並且少出錯,現代系統提供了一種對主存的抽象概念,叫做虛擬儲存器(VM)。虛擬儲存器是硬體異常、硬體地址翻譯、主存、磁碟檔案和核心軟體的完美互動,它為每個程序提供了一個大的、一致的和私有的地址空間。通過一個很清晰的機制,虛擬儲存器提供了三個重要的能力:
1)它將主存看成是一個儲存在磁碟上的地址空間同,主存中只儲存活動區域,並根據需要在磁碟和主存之間來回傳送資料,通過這種方式,它高效地使用了主存。
2)它為每個程序提供了一致的地址空間,從而簡化了儲存器管理。
3)它保護了每個程序的地址空間不被其他程序破壞。

物理和虛擬定址

計算機系統的主存被組織成一個由M個連續的位元組大小的單元組成的陣列,每位元組都有一個唯一的實體地址。CPU根據實體地址訪問儲存器的方式是物理定址。

地址空間

• 地址空間是一個非負整數地址的有序集合。
• 一個地址空間的大小是由表示最大地址所需要的位數來描述的,例如一個包含N=2的n次方個地址的虛擬地址空間就叫做一個n位地址空間。現代系統典型地支援32位或者64位虛擬地址空間,一個系統還有一個實體地址空間,它與系統中物理儲存器的M個位元組相對應。

虛擬儲存器作為快取的工具

• 在任意時刻,虛擬頁面的集合都分為三個不相交的子集
未分配的:VM系統還未分配(回或者建立)的頁。未分配的塊沒有任何資料和它們相關聯,因此也就不佔用任何磁碟空間。
快取的:當前快取在物理儲存器中的已分配頁。
未快取的:沒有快取在物理儲存器中的已分配頁。

頁表

同任何快取一樣,虛擬儲存器系統必須有某種方法來判定一個虛擬頁是否存放在DRAM中的某個地方。如果是,系統還必須確定這個虛擬頁存放在哪個物理頁中。如果不命中,系統必須判斷這個虛擬頁存放在磁碟的哪個位置,在物理儲存器中選擇一個犧牲頁,並將虛擬頁從磁碟拷貝到DRAM中,替換這個犧牲頁。
• 這些功能是由許多軟硬體聯合提供的,包括作業系統軟體、MMU(儲存器管理單元)中的地址翻譯硬體和一個存放在物理儲存器中叫做頁表的資料結構,頁表將虛擬頁對映到物理頁。每次地址翻譯硬體將一個虛擬地址轉換為實體地址時都會讀取頁表。作業系統負責維護頁表的內容,以及在磁碟與DRAM之間來回傳送頁。

頁命中

缺頁

• 在虛擬儲存器的習慣說法中,DRAM快取不命中稱為缺頁。
• 缺頁異常呼叫核心中的缺頁異常處理程式,該程式會選擇一個犧牲頁,在此例中就是存放在PP3中的VP4。如果VP4已經被修改了,那麼核心就會將它拷貝回磁碟。無論哪種情況,核心都會修改VP4的頁表條目,反映出VP4不再快取在主存中這一事實。
• 接下來,核心從磁碟拷貝VP3到儲存器中的PP3,更新PTE3,隨後返回。當異常處理程式返回時,它會重新啟動導致缺頁的指令,該指令會把導致缺頁的虛擬地址重發送到地址翻譯硬體。但是現在,VP3已經快取在主存中了,那麼頁命中也能由地址翻譯硬體正翻譯硬體正常處理了。圖4展示了在缺頁之後我們的示例頁表的狀態:

分配頁面

• 下圖展示了當作業系統分配一個新的虛擬儲存器頁時對我們示例頁表的影響,例如呼叫malloc的結果。

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

• 按需頁面排程和獨立的虛擬地址空間的結合,對系統中儲存器的使用和管理造成了深遠的影響。特別地,VM簡化了連結和載入、程式碼和資料共享,以及應用程式的儲存器分配。
• 簡化連結
• 簡化載入
• 簡化共享
• 簡化儲存器分配