從概念上來講:虛擬儲存器被組織為乙個存放在磁碟上的n個連續的位元組大小的單元組成的陣列。
磁碟上陣列的內容被快取到主存中
1. 讀寫記憶體的安全性
物理記憶體本身是不限制訪問的,任何位址都可以讀寫,而作業系統要求不同的頁面具有不同的訪問許可權,這是利用cpu模式和mmu的記憶體保護機制實現的。例如,text segment被唯讀保護起來,防止被錯誤的指令意外改寫,核心位址空間也被保護起來,防止在使用者模式下執行錯誤的指令意外改寫核心資料。這樣,執行錯誤指令或惡意**的破壞能力受到了限制,頂多使當前程序因段錯誤終止,而不會影響整個系統的穩定性。
2,虛擬記憶體管理最主要的作用是讓每個程序有獨立的位址空間(程序間的安全)
所謂獨立的位址空間是指,不同程序中的同乙個va被mmu對映到不同的pa,並且在某乙個程序中訪問任何位址都不可能訪問到另外乙個程序的資料,這樣使得任何乙個程序由於執行錯誤指令或惡意**導致的非法記憶體訪問都不會意外改寫其它程序的資料,不會影響其它程序的執行,從而保證整個系統的穩定性。另一方面,每個程序都認為自己獨佔整個虛擬位址空間,這樣鏈結器和載入器的實現會比較容易,不必考慮各程序的位址範圍是否衝突。
現在我們也可以理解為什麼共享庫必須是位置無關**了。比如libc,不同的程序雖然共享libc所在的物理頁面,但這些物理頁面被對映到各程序的虛擬位址空間時卻位於不同的位址,所以要求libc的**不管載入到什麼位址都能正確執行。
3,va到pa的對映會給分配和釋放記憶體帶來方便
實體地址不連續的幾塊記憶體可以對映成虛擬位址連續的一塊記憶體。比如要用malloc分配一塊很大的記憶體空間,雖然有足夠多的空閒物理記憶體,卻沒有足夠大的連續空閒記憶體,這時就可以分配多個不連續的物理頁面而對映到連續的虛擬位址範圍。
4,乙個系統如果同時執行著很多程序,為各程序分配的記憶體之和可能會大於實際可用的物理記憶體,虛擬記憶體管理使得這種情況下各程序仍然能夠正常執行
因為各程序分配的只不過是虛擬記憶體的頁面,這些頁面的資料可以對映到物理頁面,也可以臨時儲存到磁碟上而不占用物理頁面,在磁碟上臨時儲存虛擬記憶體頁面的可能是乙個磁碟分割槽,也可能是乙個磁碟檔案,稱為交換裝置(swap
device)。當物理記憶體不夠用時,將一些不常用的物理頁面中的資料臨時儲存到交換裝置,然後這個物理頁面就認為是空閒的了,可以重新分配給程序使用,這個過程稱為換出(pageout)。如果程序要用到被換出的頁面,就從交換裝置再載入回物理記憶體,這稱為換入(pagein)。換出和換入操作統稱為換頁(paging)
為了對齊
深入理解計算機系統
關鍵路徑是在迴圈的反覆執行中形成的資料相關鏈。迴圈展開是一種程式變換,通過增加每次迭代計算的元素的數量,減少迴圈的迭代次數。重新結合變換能夠減少計算中關鍵路徑上操作的數量,通過更好地利用功能單元的流水線能力得到更好的效能。浮點運算不保證是可結合的,通常迴圈展開和並行地累積在多個值中,是提高程式效能的...
《深入理解計算機系統》
知乎 深入理解計算機系統 這本書需要什麼水平能看懂?15 213 18 218 15 513 introduction to computer systems schedule fall 2016 鏈結失效則 cmu15 213的課程主頁,有ppt,還有錄影,主講人就是這本書的作者。備註 備註 詳細...
深入理解計算機系統
系統的硬體組成 快取記憶體 作業系統管理硬體 程序虛擬記憶體 檔案amdahl定律 併發和並行 0和1組成的位序列,又稱為位元序列,8個位被組織成一組,成為位元組。每個位元組表示程式中的某些文字字元。系統中的所有資訊 包括磁碟檔案 記憶體中的程式 記憶體中存放的的使用者資料以及網路上傳送的資料,都是...