虚拟存储器简介
虛擬存儲器簡介
虛擬內存是計算機系統內存管理的一種技術。它使得應用程序認為它擁有連續的可用的內存(一個連續完整的地址空間),而實際上,它通常是被分隔成多個物理內存碎片,還有部分暫時在外部磁盤存儲器上,在需要時進行數據交換。目前,大多數操作都使用了虛擬內存,如Windows家族的“虛擬內存”;Linux的“交換空間”等。
?????????????????——百度百科
把虛擬地址轉換成實際地址這項工作有存儲器管理部件(Memory Management Unit, MMU)完成。管理方法有分段管理(Segmentation)和分頁管理(Paging)兩種。
分段管理
分段管理是把存儲器分為若干段,為一個程序指定一個或幾個“段寄存器”。這些寄存器指定當前段所在的主存的起始地址。每次訪問存儲器時,主存的地址由段寄存器的內容與程序中的虛擬地址相加得到。
除了主存的起始地址,段寄存器中可能還存有該段的大小以及對該段的訪問控制信息。段的大小用于判斷虛擬地址是否出界,而訪問控制信息指出該段是否已在主存以及能否對其進行讀寫或執行等訪問權限信息。由此可見,分段管理中每段的大小是可變的。
分頁管理
分頁管理把存儲器機械地分成若干頁,使用單一的虛擬地址,而不需要使用段寄存器。在32位架構系統中,虛擬地址是32位,可以把虛擬地址分為兩部分:虛擬頁號(高20位)和頁內地址(低12位)。可以繼續把20位虛擬頁號分為兩部分:頁目錄地址(高10位)和頁表地址(低10位)。我們首先使用頁目錄地址訪問頁目錄,從中得到頁表的起始地址,然后再使用頁表地址訪問頁表,得到實際頁號,最后再使用實際地址訪問存儲器取出數據。這樣,一個頁目錄和一個頁表都只占4KB。值得注意的是,4KB的頁目錄只有一個,但4KB的頁表有1K個。
但是上述分頁管理機制存在一個很大的問題:為了訪問一次數據存儲器,先要訪問一次頁目錄存儲器,再要訪問一次頁表存儲器,這時得到的才是實際地址。這樣一來,我們從主存中取出一個數據,需要先后訪問三次主存,實在太慢了!為此,我們可以使用快速地址轉換TLB來解決這一問題。
快速地址轉換TLB
TLB(Translation Lookaside Buffer,旁路轉換緩沖)是一種與Cache極其相似的電路,只是里面的RAM存儲的不是數據而是存儲器地址的實際頁號部分。
參考文獻:李亞民.計算機原理與設計.北京.清華大學出版社.2011.6
總結
- 上一篇: CCRC信息安全服务资质认证是什么
- 下一篇: WIN10设置OUTLOOK开机自启