虛擬儲存器

2022-09-21 22:06:10 字數 1704 閱讀 8039

對乙個程式來說,程式、資料和堆疊的總大小總是超過實際物理記憶體的大小,因此作業系統希望把當前使用的部分內容放到物理記憶體,把其他未使用的內容放到下一級儲存器。

對於32位處理器來說,其位址空間0-0xffff_ffff,4gb,其中乙個位址就稱為虛擬位址。與之相對的是物理儲存器,一般物理儲存器(記憶體)的容量不能超過處理器最大可以定址空間。

虛擬位址和實際實體地址之間需要記憶體管理單元mmu進行位址轉換。

採用虛擬位址可由作業系統負責排程,將實際實體地址動態地分配給各個程式。

最常用的是基於分頁的虛擬儲存器。

虛擬位址空間劃分以頁為單位,典型頁大小為4kb,相應的實體地址空間也以同樣大小劃分,稱為frame。程式開始執行時,以頁為單位將當前需要的內容從硬碟中搬移到物理記憶體,從而使處理器能夠執行比物理記憶體更大的程式。

因為frame和page大小相等,因此虛擬位址和實際位址進行轉換時只需要轉換頁碼,不需要關注頁內偏移位址。

若虛擬位址找不到對應的實體地址,則產生page fault異常送給處理器,由異常處理程式進行處理。

為了減少page fault發生的頻率,採用一張**來儲存虛擬位址到實體地址的對應關係,稱為page table,頁表。一般將頁表放在物理記憶體中,每次作業系統將 乙個程式調入物理記憶體中執行時都將頁表暫存器設定好。當使用頁表暫存器和虛擬位址進行定址時,若找到的對應表項valid為1,則說明這個虛擬位址和物理記憶體已經完成了對映,可以找到資料。若valid為0,則說明發生page fault,需要作業系統從下一級暫存器將所需內容搬移出來。

將頁表放在物理記憶體中,每次要得到乙個虛擬位址對應的資料都要對物理記憶體訪問兩次。第一次訪問頁表獲得實體地址,第二次使用實體地址訪問物理記憶體才能得到需要的資料。這種方法效率較低。

一般乙個4gb的虛擬空間,只有少部分獲得利用,大部分頁表內容都是空的,造成頁表利用效率極低。

多級頁表可以減少頁表對物理儲存空間的占用,並易於用硬體實現。

多級頁表將乙個單級頁表劃分為若干個子頁表,處理器在執行程序時根據實際需求搬移子頁表,而不是整個頁表。這樣就不再需要占用大片連續的物理記憶體空間,子頁表可以存放在物理記憶體中不連續的位置,提高物理記憶體利用效率。但如此做,也需要增加乙個二級頁表,用來記錄各個子頁表在物理記憶體中的位置。

通過多級頁表獲取乙個虛擬位址對應的資料,首先需要訪問第一級頁表獲得第二級頁表的位置,然後訪問第二級頁表才能得到虛擬位址對應的實體地址,再根據實體地址獲得相應資料。

為了對不同程序之間加以保護,不允許其互相修改自己的內容,作業系統要具有最高控制權。因為作業系統也是程式,也需要訪問儲存器內容,那必然需要經過頁表,因此可以設定作業系統和使用者程序對不同頁的訪問許可權。

因為採用兩級頁表的話需要訪問兩次物理記憶體才能獲得相應實體地址,但物理記憶體的執行速度相對於處理器來說不在同一量級,因此可以借鑑cache的設計理念,用乙個速度比較快的快取,將頁表中最近使用的pte快取下來,這種快取稱為tlb。

tlb不同於cache,頁表只具有時間相關性,而不具備空間相關性。

一般為了減少tlb缺失(miss)的頻率,會採用全相連的方式設計tlb,但這樣也導致tlb容量不能太大。現代處理器中很多採用兩級tlb,第一級採用哈佛結構,分為指令tlb,資料tlb,採用全相鏈結構。第二級資料和指令共享,採用組相鏈結構。

虛擬儲存器

1 虛擬儲存器只是乙個容量非常大的儲存器的邏輯模型,不是任何實際的物理儲存器 2 它借助於磁碟等輔存來擴大主存的容量,使之為更大或更多的程式使用 3 程式的邏輯位址稱為虛擬位址 虛位址 程式的邏輯位址空間稱為虛擬位址空間 4 實體地址 實位址 由cpu位址引腳送出,是用於訪問主存的位址 5 設cpu...

虛擬儲存器

在系統中程序是與其它的程序共享cpu和主存資源的,程序太多就需要太多的儲存器,而且儲存器很容易受到破壞,如果某個程序不小心寫了另乙個程序使用的儲存器,它就會以 完全和程式邏輯無關的令人迷惑的方式失敗。位址空間。特點 1.主存看成是虛擬在磁碟上的位址空間 的快取記憶體,在主存裡只儲存活動區域。2.為每...

虛擬儲存器

1 常規儲存器管理方式的特徵 一次性 即作業在執行前需一次性地全部裝入記憶體。這會導致兩種情況的發生 當作業很大,所要求的記憶體空間超過了記憶體總容量,作業不能全部被裝入記憶體,致使該作業無法執行。在多道程式中,有多個作業要求執行,但由於記憶體容量不足以容納所有這些作業,只能將少數作業裝入記憶體讓它...