深刻理解計算機系統(虛擬存儲器)

       虛擬存儲器是硬件異常、硬件地址翻譯、主存、磁盤文件和內核軟件的完美交互,他爲每一個進程提供了一個大的、一致的和私有的地址空間。
程序員

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

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

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

         3)它保護了每一個進程的地址空間不被其餘進程破壞。spa

       程序員爲何須要理解虛擬存儲器?
操作系統

       虛擬存儲器是中心的。虛擬存儲器是強大的。虛擬存儲器是危險的。翻譯

物理和虛擬尋址對象

        計算機系統的主存被組織成一個由M個連續的字節大小的單元組成的數組。每字節都有一個惟一的物理地址(Physical Address,PA)。CPU訪問存儲器的最天然的方式就是使用 物理地址。咱們把這種方式稱爲物理尋址(physical addressing)。索引

        早期的PC機使用物理尋址。現代處理器使用的是一種稱爲虛擬尋址的尋址形式 。進程

        使用虛擬尋址時,CPU經過生成一個虛擬地址來訪問主存,這個虛擬地址再被送到存儲器以前先轉換成適當的物理地址。將一個虛擬地址轉換爲物理地址的任務叫作地址翻譯。就像異常處理同樣,地址翻譯須要CPU硬件和操做系統之間的緊密合做。CPU芯片上叫作存儲器管理單元的專用硬件,利用存放在主存中的查詢表來動態翻譯虛擬地址,該表的內容是由 操做系統管理的。

地址空間

            地址空間是一個非負整數地址的有序集合:{0,1,2,...}若是地址空間中的整數是連續的,那麼咱們說它是一個線性地址空間。爲了簡化討論,咱們老是假設使用的是線性地址空間。在一個帶虛擬存儲器的系統中,CPU從一個有N=2^n個地址的地址空間中生成虛擬地址,這個地址空間稱爲虛擬地址空間:{0,1,2,...,N-1},一個地址空間的大小是由表示最大地址所須要的位數來描述的。例如,一個包含N=2^n個地址的虛擬地址空間就叫作一個n位地址空間。現代系統典型的支持32位或者64位虛擬地址空間。

            一個系統還有一個物理地址空間 ,它與系統中物理存儲器的M個字節相對應:{0,1,2,...,M-1},M不要求是2的冪,可是爲了簡化討論,咱們假設M=2^m。

            地址空間的概念是很重要的,由於它清楚地區分了數據對象(字節)和它們的屬性(地址)。一旦認識到了這種區別,那麼咱們就能夠將其推廣,容許每一個數據對象有多個獨立的地址,其中每一個地址都選自一個不一樣的地址空間。這就是虛擬存儲器的基本思想。主存中的每一個字節都有一個選自虛擬地址空間的虛擬地址和一個選自物理地址空間的物理地址。

虛擬存儲器做爲緩存的工具

            概念上而言,虛擬存儲器被組織爲一個由存放在磁盤上的N個連續的字節帶下的單元組成的數組。每字節都有一個惟一的虛擬地址,這個惟一的虛擬地址是做爲到數組的索引的。磁盤上數組的內容被緩存在主存中。和存儲器層次結構中的其餘緩存同樣,磁盤上的數據被分割成塊,這些塊做爲磁盤和主存之間的傳輸單元。VM系統經過將虛擬存儲器分割爲稱爲虛擬頁的大小固定塊來處理這個問題。每一個虛擬頁的大小爲P=2^p字節。相似的,物理存儲器被分割爲物理頁,大小也爲P字節(物理頁也稱爲頁幀)。

DRAM緩存的組織結構

            爲了有助於清晰的理解存儲層次結構中不一樣的緩存概念,咱們將使用術語SRAM緩存來表示位於CPU和主存之間的L一、L2和L3高速緩存,並用術語DRAM緩存來表示虛擬存儲器系統的緩存,它在主存中緩存虛擬頁。

相關文章
相關標籤/搜索