虛擬內(nèi)存有哪些調(diào)度方式?虛擬內(nèi)存3種調(diào)度方式詳解!
虛擬內(nèi)存,也被我們稱為虛擬存儲器,計算機正在運行的數(shù)據(jù)可以存放于虛擬內(nèi)存中。為增進大家對虛擬內(nèi)存的認識,本文將對虛擬內(nèi)存的3種調(diào)度方式予以介紹。如果你對虛擬內(nèi)存具有興趣,不妨和小編一起來繼續(xù)往下閱讀哦。
調(diào)度方式有分頁式、段式、段頁式3種。頁式調(diào)度是將邏輯和物理地址空間都分成固定大小的頁。主存按頁順序編號,而每個獨立編址的程序空間有自己的頁號順序,通過調(diào)度輔存中程序的各頁可以離散裝入主存中不同的頁面位置,并可據(jù)表一一對應檢索。頁式調(diào)度的優(yōu)點是頁內(nèi)零頭小,頁表對程序員來說是透明的,地址變換快,調(diào)入操作簡單;缺點是各頁不是程序的獨立模塊,不便于實現(xiàn)程序和數(shù)據(jù)的保護。段式調(diào)度是按程序的邏輯結(jié)構(gòu)劃分地址空間,段的長度是隨意的,并且允許伸長,它的優(yōu)點是消除了內(nèi)存零頭,易于實現(xiàn)存儲保護,便于程序動態(tài)裝配;缺點是調(diào)入操作復雜。將這兩種方法結(jié)合起來便構(gòu)成段頁式調(diào)度。在段頁式調(diào)度中把物理空間分成頁,程序按模塊分段,每個段再分成與物理空間頁同樣小的頁面。段頁式調(diào)度綜合了段式和頁式的優(yōu)點。其缺點是增加了硬件成本,軟件也較復雜。大型通用計算機系統(tǒng)多數(shù)采用段頁式調(diào)度。
1、頁式調(diào)度
在頁式虛擬存儲系統(tǒng)中,虛擬空間被分成大小相等的頁,稱為邏輯頁或虛頁。主存空間也被分成同樣大小的頁,稱為物理頁或?qū)嶍?。相應地,虛擬地址分為兩個字段:高位字段為虛頁號,低位字段為頁內(nèi)地址。實存地址也分為兩個字段:高位字段為實頁號,低位字段為頁內(nèi)地址。同時,頁的大小都取2的整數(shù)冪個字。
通過頁表可以把虛擬地址轉(zhuǎn)換成物理地址。每個程序設置一張頁表,在頁表中,對應每一個虛頁號都有一個條目,條目內(nèi)容至少包含該虛頁所在的主存頁面地址(實頁號),用它作為實存地址的高位字段;實頁號與虛擬地址的頁內(nèi)地址相拼接,就產(chǎn)生完整的實存地址,據(jù)此訪問主存。
2、段式調(diào)度
頁面是主存物理空間中劃分出來的等長的固定區(qū)域。分頁方式的優(yōu)點是頁長固定,因而便于構(gòu)造頁表、易于管理,且不存在外碎片。但分頁方式的缺點是頁長與程序的邏輯大小不相關(guān)。例如,某個時刻一個子程序可能有一部分在主存中,另一部分則在輔存中。這不利于編程時的獨立性,并給換入/換出處理、存儲保護和存儲共享等操作造成麻煩。
另一種劃分可尋址的存儲空間的方法稱為分段。段是按照程序的自然分界劃分的、長度可以動態(tài)改變的區(qū)域。通常,程序員把子程序、操作數(shù)和常數(shù)等不同類型的數(shù)據(jù)劃分到不同的段中,并且每個程序可以有多個相同類型的段。
在段式虛擬存儲系統(tǒng)中,虛擬地址由段號和段內(nèi)地址組成,虛擬地址到實存地址的變換通過段表來實現(xiàn)。每個程序設置一個段表,段表的每一個表項對應一個段,每個表項至少包括三個字段:有效位(指明該段是否已經(jīng)調(diào)入主存)、段起址(該段在實存中的首地址)和段長(記錄該段的實際長度)。
3、段頁式調(diào)度
段頁式虛擬存儲器是段式虛擬存儲器和頁式虛擬存儲器的結(jié)合。
首先,實存被等分成頁。在段頁式虛擬存儲器中,把程序按邏輯結(jié)構(gòu)分段以后,再把每段按照實存的頁的大小分頁,程序按頁進行調(diào)入和調(diào)出操作,但它又可按段實現(xiàn)共享和保護。因此,它可以兼有頁式和段式系統(tǒng)的優(yōu)點。它的缺點是在地址映像過程中需要多次查表,虛擬地址轉(zhuǎn)換成物理地址是通過一個段表和一組頁表來進行定位的。段表中的每個表目對應一個段,每個表目有一個指向該段的頁表的起始地址(頁號)及該段的控制保護信頁表指明該段各頁在主存中的位置以及是否已裝入、已修改等標志。
以上便是此次帶來的虛擬內(nèi)存相關(guān)內(nèi)容,通過本文,希望大家對虛擬內(nèi)存已經(jīng)具備一定的了解。如果你喜歡本文,不妨持續(xù)關(guān)注我們網(wǎng)站哦,將于后期帶來更多精彩內(nèi)容。最后,十分感謝大家的閱讀,have a nice day!