段頁式虛擬儲存器是段式虛擬儲存器和頁式虛擬儲存器的結合。
首先,實存被等分成頁。在段頁式虛擬儲存器中,把程式按邏輯結構分段以後,再把每段按照實存的頁大小分頁,程式按頁進行調入和調出操作,但它又可按段實現共享和保護。因此,它可以兼有頁式和段式系統的優點。它的缺點是在位址映像過程中需要多次查表,虛擬位址轉換成實體地址是通過乙個段表和一組頁表來進行定位的。段表中的每個表目對應乙個段,每個表目有乙個指向該段的頁表的起始位址(頁號)及該段的控制保護資訊。由頁表指明該段各頁在主存中的位置以及是否已裝入、已修改等標誌。
如果有多個使用者在機器上執行,稱為多道程式,多道程式的每一道(每個使用者)需要乙個基號(使用者標誌號),可由它指明該道程式的段表起點(存放在基址暫存器中)。乙個虛擬位址應包括基號
基號b 段號
s 段內邏輯頁號p
頁內位址d
[例3.9] 假設有三道程式,基號用a、b和c表示,其基址暫存器的內容分別為sa、sb和sc。程式a由4個段構成,程式c由3個段構成。段頁式虛擬儲存系統的邏輯位址到實體地址的變換過程如
圖3.35所示。
圖3.35 段頁式虛擬儲存器虛實位址變換過程
在主存中,每道程式都有一張段表,
a程式有4段,c程式有3段,每段應有一張頁表,段表的每行就表示相應頁表的起始位置,而頁表內的每行即為相應的物理頁號。請說明虛實位址變換過程。
解:(1
)由儲存管理部件根據基號c找到段表基址暫存器表第c個表項,獲得程式c的段表基址sc。再根據段號s(=1)找到程式c段表的第s個表項,得到段s的頁表起始位址b。 (
2)根據段內邏輯頁號p(=2)檢索頁表,得到物理頁號(圖中物理頁號為10)。 (
3)物理頁號與頁內位址偏移量拼接即得實體地址。
假如計算機系統中只有乙個基址暫存器,則基號可不要。多道程式切換時,由作業系統修改基址暫存器內容。
實際上,上述每個段表和頁表的表項中都應設定乙個有效位。只有在有效位為
1時才按照上述流程操作,否則需中斷當前操作先進行建表或調頁。
linux 和 windows 在 i386 cpu 上執行的時候,雖然既分段也分頁,但跟教科書上講的「段頁式」是不同的性質。實際的作業系統往往把分段作為乙個擺設,分頁做得很細緻,段也還是分的,但各個段往往重合到一起(即乙個段?),也就是我們平常說的 flat memory model。
分段是必需的,分頁是可選的
但是現代作業系統對分段的使用都是敷衍性質。。。。。。。
36段頁式虛擬儲存器
1 段頁式虛擬儲存器 把程式按邏輯結構分段 每段劃分為固定大小的頁,主存空間也劃分為相等的頁,程式對記憶體的調入 調出扔以頁為基本傳送單位,這樣的虛擬儲存器稱為段頁式虛擬儲存器。在段頁式虛擬儲存器中,每個程式對應乙個段表,每段對應乙個頁表,段的長度必須是頁長的整數倍,段的起點必須是某一頁的起點。2 ...
段頁式儲存管理
段頁式儲存管理技術的基本思想 段頁式儲存管理技術試圖結合分段儲存管理在邏輯上的優點以及分頁儲存管理在物理上的優點,它是採用分段方法來分配和管理使用者的作業位址空間,採用分頁的方法來分配和管理主存 的儲存空間。即把作業分段,段內再分成也,主存分配以頁為單位。在段頁式儲存管理系統中,作業的位址空間被劃分...
段頁式儲存管理
分段式和分頁式管理都有他們各自的優缺點 優點缺點 分段式很方便按照邏輯模組實現資訊的共享和保護 如果段長過大,分配空間不方便,其次,會產生外部碎片 分頁式記憶體利用率高,不會產生外部碎片,只有少量的頁內碎片 不方便按照邏輯模組實現資訊的共享和保護 分段式管理中,產生的外部碎片當然有其解決的方法 緊湊...