內(nèi)存管理主要包括內(nèi)存分配和回收、地址變換、內(nèi)存擴(kuò)充、內(nèi)存共享和保護(hù)等功能。
下面主要介紹連續(xù)分配存儲(chǔ)管理、覆蓋與交換技術(shù)以及頁(yè)式與段式存儲(chǔ)管理等基本概念和原理。
連續(xù)分配是指為一個(gè)用戶程序分配連續(xù)的內(nèi)存空間。連續(xù)分配有單一連續(xù)存儲(chǔ)管理和分區(qū)式儲(chǔ)管理兩種方式。
在這種管理方式中,內(nèi)存被分為兩個(gè)區(qū)域:系統(tǒng)區(qū)和用戶區(qū)。應(yīng)用程序裝入到用戶區(qū),可使用用戶區(qū)全部空間。其特點(diǎn)是,最簡(jiǎn)單,適用于單用戶、單任務(wù)的操作系統(tǒng)。 CP / M 和 DOS 2 . 0 以下就是采用此種方式。這種方式的最大優(yōu)點(diǎn)就是易于管理。但也存在著一些問(wèn)題和不足之處,例如對(duì)要求內(nèi)存空間少的程序,造成內(nèi)存浪費(fèi);程序全部裝入,使得很少使用的程序部分也占用 — 定數(shù)量的內(nèi)存。
為了支持多道程序系統(tǒng)和分時(shí)系統(tǒng),支持多個(gè)程序并發(fā)執(zhí)行,引入了分區(qū)式存儲(chǔ)管理。分區(qū)式存儲(chǔ)管理是把內(nèi)存分為一些大小相等或不等的分區(qū),操作系統(tǒng)占用其中一個(gè)分區(qū),其余的分區(qū)由應(yīng)用程序使用,每個(gè)應(yīng)用程序占用一個(gè)或幾個(gè)分區(qū)。分區(qū)式存儲(chǔ)管理雖然可以支持并發(fā),但難以進(jìn)行內(nèi)存分區(qū)的共享。
分區(qū)式存儲(chǔ)管理引人了兩個(gè)新的問(wèn)題:內(nèi)碎片和外碎片。前者是占用分區(qū)內(nèi)未被利用的空間,后者是占用分區(qū)之間難以利用的空閑分區(qū) ( 通常是小空閑分區(qū) ) 。為實(shí)現(xiàn)分區(qū)式存儲(chǔ)管理,操作系統(tǒng)應(yīng)維護(hù)的數(shù)據(jù)結(jié)構(gòu)為分區(qū)表或分區(qū)鏈表。表中各表項(xiàng)一般包括每個(gè)分區(qū)的起始地址、大小及狀態(tài) ( 是否已分配 ) 。
分區(qū)式存儲(chǔ)管理常采用的一項(xiàng)技術(shù)就是內(nèi)存緊縮 (compaction) :將各個(gè)占用分區(qū)向內(nèi)存一端移動(dòng),然后將各個(gè)空閑分區(qū)合并成為一個(gè)空閑分區(qū)。這種技術(shù)在提供了某種程度上的靈活性的同時(shí),也存在著一些弊端,例如:對(duì)占用分區(qū)進(jìn)行內(nèi)存數(shù)據(jù)搬移占用 CPU~t 寸間;如果對(duì)占用分區(qū)中的程序進(jìn)行 “ 浮動(dòng) ” ,則其重定位需要硬件支持。
1) 固定分區(qū) (nxedpartitioning) 。
固定式分區(qū)的特點(diǎn)是把內(nèi)存劃分為若干個(gè)固定大小的連續(xù)分區(qū)。分區(qū)大小可以相等:這種作法只適合于多個(gè)相同程序的并發(fā)執(zhí)行 ( 處理多個(gè)類型相同的對(duì)象 ) 。分區(qū)大小也可以不等:有多個(gè)小分區(qū)、適量的中等分區(qū)以及少量的大分區(qū)。根據(jù)程序的大小,分配當(dāng)前空閑的、適當(dāng)大小的分區(qū)。這種技術(shù)的優(yōu)點(diǎn)在于,易于實(shí)現(xiàn),開銷小。缺點(diǎn)主要有兩個(gè):內(nèi)碎片造成浪費(fèi);分區(qū)總數(shù)固定,限制了并發(fā)執(zhí)行的程序數(shù)目。
2) 動(dòng)態(tài)分區(qū) (dynamic partitioning) 。
動(dòng)態(tài)分區(qū)的特點(diǎn)是動(dòng)態(tài)創(chuàng)建分區(qū):在裝入程序時(shí)按其初始要求分配,或在其執(zhí)行過(guò)程中通過(guò)系統(tǒng)調(diào)用進(jìn)行分配或改變分區(qū)大小。與固定分區(qū)相比較其優(yōu)點(diǎn)是:沒(méi)有內(nèi)碎片。但它卻引入了另一種碎片 —— 外碎片。動(dòng)態(tài)分區(qū)的分區(qū)分配就是尋找某個(gè)空閑分區(qū),其大小需大于或等于程序的要求。若是大于要求,則將該分區(qū)分割成兩個(gè)分區(qū),其中一個(gè)分區(qū)為要求的大小并標(biāo)記為 “ 占用 ” ,而另一個(gè)分區(qū)為余下部分并標(biāo)記為 “ 空閑 ” 。分區(qū)分配的先后次序通常是從內(nèi)存低端到高端。動(dòng)態(tài)分區(qū)的分區(qū)釋放過(guò)程中有一個(gè)要注意的問(wèn)題是,將相鄰的空閑分區(qū)合并成一個(gè)大的空閑分區(qū)。
下面列出了幾種常用的分區(qū)分配算法:
首先適配法 (nrst-fit) :按分區(qū)在內(nèi)存的先后次序從頭查找,找到符合要求的第一個(gè)分區(qū)進(jìn)行分配。該算法的分配和釋放的時(shí)間性能較好,較大的空閑分區(qū)可以被保留在內(nèi)存高端。但隨著低端分區(qū)不斷劃分會(huì)產(chǎn)生較多小分區(qū),每次分配時(shí)查找時(shí)間開銷便會(huì)增大。
下次適配法 (next-fit) :按分區(qū)在內(nèi)存的先后次序,從上次分配的分區(qū)起查找 ( 到最后 { 區(qū)時(shí)再?gòu)念^開始 } ,找到符合要求的第一個(gè)分區(qū)進(jìn)行分配。該算法的分配和釋放的時(shí)間性能較好,使空閑分區(qū)分布得更均勻,但較大空閑分區(qū)不易保留。
最佳適配法 (best-fit) :按分區(qū)在內(nèi)存的先后次序從頭查找,找到其大小與要求相差最小的空閑分區(qū)進(jìn)行分配。從個(gè)別來(lái)看,外碎片較小;但從整體來(lái)看,會(huì)形成較多外碎片優(yōu)點(diǎn)是較大的空閑分區(qū)可以被保留。
最壞適配法 (worst- fit) :按分區(qū)在內(nèi)存的先后次序從頭查找,找到最大的空閑分區(qū)進(jìn)行分配?;静涣粝滦】臻e分區(qū),不易形成外碎片。但由于較大的空閑分區(qū)不被保留,當(dāng)對(duì)內(nèi)存需求較大的進(jìn)程需要運(yùn)行時(shí),其要求不易被滿足。
引入覆蓋 (overlay) 技術(shù)的目標(biāo)是在較小的可用內(nèi)存中運(yùn)行較大的程序。這種技術(shù)常用于多道程序系統(tǒng)之中,與分區(qū)式存儲(chǔ)管理配合使用。覆蓋技術(shù)的原理很簡(jiǎn)單,一個(gè)程序的幾個(gè)代碼段或數(shù)據(jù)段,按照時(shí)間先后來(lái)占用公共的內(nèi)存空間。將程序必要部分 ( 常用功能 ) 的代碼和數(shù)據(jù)常駐內(nèi)存;可選部分 ( 不常用功能 ) 平時(shí)存放在外存 ( 覆蓋文件 ) 中,在需要時(shí)才裝入內(nèi)存。不存在調(diào)用關(guān)系的模塊不必同時(shí)裝入到內(nèi)存,從而可以相互覆蓋。覆蓋技術(shù)的缺點(diǎn)是編程時(shí)必須劃分程序模塊和確定程序模塊之間的覆蓋關(guān)系,增加編程復(fù)雜度;從外存裝入覆蓋文件,以時(shí)間延長(zhǎng)換取空間節(jié)省。覆蓋的實(shí)現(xiàn)方式有兩種:以函數(shù)庫(kù)方式實(shí)現(xiàn)或操作系統(tǒng)支持。
交換 (swapping) 技術(shù)在多個(gè)程序并發(fā)執(zhí)行時(shí),可以將暫時(shí)不能執(zhí)行的程序送到外存中,從而獲得空閑內(nèi)存空間來(lái)裝入新程序,或讀人保存在外存中而處于就緒狀態(tài)的程序。交換單位為整個(gè)進(jìn)程的地址空間。交換技術(shù)常用于多道程序系統(tǒng)或小型分時(shí)系統(tǒng)中,與分區(qū)式存儲(chǔ)管理配合使用又稱作 “ 對(duì)換 ” 或 “ 滾進(jìn)/滾出 ”(roll-in / roll-out) 。其優(yōu)點(diǎn)之一是增加并發(fā)運(yùn)行的程序數(shù)目,并給用戶提供適當(dāng)?shù)捻憫?yīng)時(shí)間;與覆蓋技術(shù)相比交換技術(shù)另一個(gè)顯著的優(yōu)點(diǎn)是不影響程序結(jié)構(gòu)。交換技術(shù)本身也存在著不足,例如:對(duì)換人和換出的控制增加處理器開銷;程序整個(gè)地址空間都進(jìn)行對(duì)換,沒(méi)有考慮執(zhí)行過(guò)程中地址訪問(wèn)的統(tǒng)計(jì)特性。
在前面的幾種存儲(chǔ)管理方法中,為進(jìn)程分配的空間是連續(xù)的,使用的地址都是物理地址。如果允許將一個(gè)進(jìn)程分散到許多不連續(xù)的空間,就可以避免內(nèi)存緊縮,減少碎片?;谶@一思想,通過(guò)引入進(jìn)程的邏輯地址,把進(jìn)程地址空間與實(shí)際存儲(chǔ)空間分離,增加存儲(chǔ)管理的靈活性。地址空間和存儲(chǔ)空間兩個(gè)基本概念的定義如下:
地址空間:將源程序經(jīng)過(guò)編譯后得到的目標(biāo)程序,存在于它所限定的地址范圍內(nèi),這個(gè)范圍稱為地址空間。地址空間是邏輯地址的集合。
存儲(chǔ)空間:指主存中一系列存儲(chǔ)信息的物理單元的集合,這些單元的編號(hào)稱為物理地址存儲(chǔ)空間是物理地址的集合。
根據(jù)分配時(shí)所采用的基本單位不同,可將離散分配的管理方式分為以下三種
段式存儲(chǔ)管理和段頁(yè)式存儲(chǔ)管理。其中段頁(yè)式存儲(chǔ)管理是前兩種結(jié)合的產(chǎn)物。
1) 基本原理。將程序的邏輯地址空間劃分為固定大小的頁(yè) (page) ,而物理內(nèi)存劃分為同樣大小的頁(yè)框 (pageframe) 。程序加載時(shí),可將任意一頁(yè)放人內(nèi)存中任意一個(gè)頁(yè)框,這些頁(yè)框不必連續(xù),從而實(shí)現(xiàn)了離散分配。該方法需要 CPU 的硬件支持,來(lái)實(shí)現(xiàn)邏輯地址和物理地址之間的映射。在頁(yè)式存儲(chǔ)管理方式中地址結(jié)構(gòu)由兩部構(gòu)成,前一部分是頁(yè)號(hào),后一部分為頁(yè)內(nèi)地址,如圖 4-2 所示。
這種管理方式的優(yōu)點(diǎn)是,沒(méi)有外碎片,每個(gè)內(nèi)碎片不超過(guò)頁(yè)大比前面所討論的幾種管理方式的最大進(jìn)步是,一個(gè)程序不必連續(xù)存放。這樣就便于改變程序占用空間的大小 ( 主要指隨著程序運(yùn)行,動(dòng)態(tài)生成的數(shù)據(jù)增多,所要求的地址空間相應(yīng)增長(zhǎng) ) 。缺點(diǎn)是仍舊要求程序全部裝入內(nèi)存,沒(méi)有足夠的內(nèi)存,程序就不能執(zhí)行。
2)
頁(yè)式管理的數(shù)據(jù)結(jié)構(gòu)。在頁(yè)式系統(tǒng)中進(jìn)程建立時(shí),操作系統(tǒng)為進(jìn)程中所有的頁(yè)分配頁(yè)框。當(dāng)進(jìn)程撤銷時(shí)收回所有分配給它的頁(yè)框。在程序的運(yùn)行期間,如果允許進(jìn)程動(dòng)態(tài)地申請(qǐng)空間,操作系統(tǒng)還要為進(jìn)程申請(qǐng)的空間分配物理頁(yè)框。操作系統(tǒng)為了完成這些功能,必須記錄系統(tǒng)內(nèi)存中
實(shí)際的頁(yè)框使用情況。操作系統(tǒng)還要在進(jìn)程切換時(shí),正確地切換兩個(gè)不同的進(jìn)程地址空間到物理內(nèi)存空間的映射。這就要求操作系統(tǒng)要記錄每個(gè)進(jìn)程頁(yè)表的相關(guān)信息。為了完成上述的功能,
—
個(gè)頁(yè)式系統(tǒng)中,一般要采用如下的數(shù)據(jù)結(jié)構(gòu)。
進(jìn)程頁(yè)表:完成邏輯頁(yè)號(hào)
(
本進(jìn)程的地址空間
)
到物理頁(yè)面號(hào)
(
實(shí)際內(nèi)存空間
)
的映射。
每個(gè)進(jìn)程有一個(gè)頁(yè)表,描述該進(jìn)程占用的物理頁(yè)面及邏輯排列順序。
物理頁(yè)面表:整個(gè)系統(tǒng)有一個(gè)物理頁(yè)面表,描述物理內(nèi)存空間的分配使用狀況,其數(shù)據(jù)結(jié)構(gòu)可采用位示圖和空閑頁(yè)鏈表。
請(qǐng)求表:整個(gè)系統(tǒng)有一個(gè)請(qǐng)求表,描述系統(tǒng)內(nèi)各個(gè)進(jìn)程頁(yè)表的位置和大小,用于地址轉(zhuǎn)換也可以結(jié)合到各進(jìn)程的 PCB( 進(jìn)程控制塊 ) 里。
3 )頁(yè)式管理地址變換
在頁(yè)式系統(tǒng)中,指令所給出的地址分為兩部分:邏輯頁(yè)號(hào)和頁(yè)內(nèi)地址。 CPU 中的內(nèi)存管理單元 (MMU) 按邏輯頁(yè)號(hào)通過(guò)查進(jìn)程頁(yè)表得到物理頁(yè)框號(hào),將物理頁(yè)框號(hào)與頁(yè)內(nèi)地址相加形成物理地址 ( 見圖 4-3) 。上述過(guò)程通常由處理器的硬件直接完成,不需要軟件參與。通常,操作系統(tǒng)只需在進(jìn)程切換時(shí),把進(jìn)程頁(yè)表的首地址裝入處理器特定的寄存器中即可。一般來(lái)說(shuō),頁(yè)表存儲(chǔ)在主存之中。這樣處理器每訪問(wèn)一個(gè)在內(nèi)存中的操作數(shù),就要訪問(wèn)兩次內(nèi)存。第一次用來(lái)查找頁(yè)表將操作數(shù)的邏輯地址變換為物理地址;第二次完成真正的讀寫操作。這樣做時(shí)間上耗費(fèi)嚴(yán)重。為縮短查找時(shí)間,可以將頁(yè)表從內(nèi)存裝入 CPU 內(nèi)部的關(guān)聯(lián)存儲(chǔ)器 ( 例如,快表 ) 中,實(shí)現(xiàn)按內(nèi)容查找。此時(shí)的地址變換過(guò)程是:在 CPU 給出有效地址后,由地址變換機(jī)構(gòu)自動(dòng)將頁(yè)號(hào)送人快表,并將此頁(yè)號(hào)與快表中的所有頁(yè)號(hào)進(jìn)行比較,而且這種比較是同時(shí)進(jìn)行的。若其中有與此相匹配的頁(yè)號(hào),表示要訪問(wèn)的頁(yè)的頁(yè)表項(xiàng)在快表中。于是可直接讀出該頁(yè)所對(duì)應(yīng)的物理頁(yè)號(hào),這樣就無(wú)需訪問(wèn)內(nèi)存中的頁(yè)表。由于關(guān)聯(lián)存儲(chǔ)器的訪問(wèn)速度比內(nèi)存的訪問(wèn)速度快得多。
1) 基本原理。
在段式存儲(chǔ)管理中,將程序的地址空間劃分為若干個(gè)段 (segment) ,這樣每個(gè)進(jìn)程有一個(gè)二維的地址空間。在前面所介紹的動(dòng)態(tài)分區(qū)分配方式中,系統(tǒng)為整個(gè)進(jìn)程分配一個(gè)連續(xù)的內(nèi)存空間。而在段式存儲(chǔ)管理系統(tǒng)中,則為每個(gè)段分配一個(gè)連續(xù)的分區(qū),而進(jìn)程中的各個(gè)段可以不連續(xù)地存放在內(nèi)存的不同分區(qū)中。程序加載時(shí),操作系統(tǒng)為所有段分配其所需內(nèi)存,這些段不必連續(xù),物理內(nèi)存的管理采用動(dòng)態(tài)分區(qū)的管理方法。在為某個(gè)段分配物理內(nèi)存時(shí),可以采用首先適配法、下次適配法、最佳適配法等方法。在回收某個(gè)段所占用的空間時(shí),要注意將收回的空間與其相鄰的空間合并。段式存儲(chǔ)管理也需要硬件支持,實(shí)現(xiàn)邏輯地址到物理地址的映射。程序通過(guò)分段劃分為多個(gè)模塊,如代碼段、數(shù)據(jù)段、共享段。這樣做的優(yōu)點(diǎn)是:可以分別編寫和編譯源程序的一個(gè)文件,并且可以針對(duì)不同類型的段采取不同的保護(hù),也可以按段為單位來(lái)進(jìn)行共享。總的來(lái)說(shuō),段式存儲(chǔ)管理的優(yōu)點(diǎn)是:沒(méi)有內(nèi)碎片,外碎片可以通過(guò)內(nèi)存緊縮來(lái)消除;便于實(shí)現(xiàn)內(nèi)存共享。缺點(diǎn)與頁(yè)式存儲(chǔ)管理的缺點(diǎn)相同,進(jìn)程必須全部裝入內(nèi)存。
2) 段式管理的數(shù)據(jù)結(jié)構(gòu)。
為了實(shí)現(xiàn)段式管理,操作系統(tǒng)需要如下的數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)進(jìn)程的地址空間到物理內(nèi)存空間的映射,并跟蹤物理內(nèi)存的使用情況,以便在裝入新的段的時(shí)候,合理地分配內(nèi)存空間。
· 進(jìn)程段表:描述組成進(jìn)程地址空間的各段,可以是指向系統(tǒng)段表中表項(xiàng)的索引。每段有段基址 (baseaddress) 。
· 系統(tǒng)段表:系統(tǒng)所有占用段。
· 空閑段表:內(nèi)存中所有空閑段,可以結(jié)合到系統(tǒng)段表中。
3) 段式管理的地址變換。
在段式管理系統(tǒng)中,整個(gè)進(jìn)程的地址空間是二維的,即其邏輯地址由段號(hào)和段內(nèi)地址兩部分組成。為了完成進(jìn)程邏輯地址到物理地址的映射,處理器會(huì)查找內(nèi)存中的段表,由段號(hào)得到段的首地址,加上段內(nèi)地址,得到實(shí)際的物理地址 ( 見圖 4—4) 。這個(gè)過(guò)程也是由處理器的硬件直接完成的,操作系統(tǒng)只需在進(jìn)程切換時(shí),將進(jìn)程段表的首地址裝入處理器的特定寄存器當(dāng)中。這個(gè)寄存器一般被稱作段表地址寄存器。
4 .頁(yè)式和段式系統(tǒng)的區(qū)別
頁(yè)式和段式系統(tǒng)有許多相似之處。比如,兩者都采用離散分配方式,且都通過(guò)地址映射機(jī)構(gòu)來(lái)實(shí)現(xiàn)地址變換。但概念上兩者也有很多區(qū)別,主要表現(xiàn)在:
· 頁(yè)是信息的物理單位,分頁(yè)是為了實(shí)現(xiàn)離散分配方式,以減少內(nèi)存的外零頭,提高內(nèi)存的利用率。或者說(shuō),分頁(yè)僅僅是由于系統(tǒng)管理的需要,而不是用戶的需要。段是信息的邏輯單位,它含有一組其意義相對(duì)完整的信息。分段的目的是為了更好地滿足用戶的需要。
· 頁(yè)的大小固定且由系統(tǒng)決定,把邏輯地址劃分為頁(yè)號(hào)和頁(yè)內(nèi)地址兩部分,是由機(jī)器硬件實(shí)現(xiàn)的。段的長(zhǎng)度不固定,且決定于用戶所編寫的程序,通常由編譯系統(tǒng)在對(duì)源程序進(jìn)行編譯時(shí)根據(jù)信息的性質(zhì)來(lái)劃分。
· 頁(yè)式系統(tǒng)地址空間是一維的,即單一的線性地址空間,程序員只需利用一個(gè)標(biāo)識(shí)符,即可表示一個(gè)地址。分段的作業(yè)地址空間是二維的,程序員在標(biāo)識(shí)一個(gè)地址時(shí),既需給出段名,又需給出段內(nèi)地址。
答:頁(yè)式管理的基本思想是:為了更好地利用分區(qū)存儲(chǔ)管理中
??? ? 所產(chǎn)生的 " 零頭 " 問(wèn)題,允許把一個(gè)作業(yè)存放在不連續(xù)的內(nèi)存塊中,
???? 又可以連續(xù)運(yùn)行,它允許只調(diào)入用戶作業(yè)中常用部分,不常用部分
???? 不長(zhǎng)期駐留內(nèi)存,有效提高了內(nèi)存的利用率。
?
? 頁(yè)式存儲(chǔ)管理的工作原理:
? A 、劃分實(shí)頁(yè):將物理內(nèi)存劃分成位置固定、大小相同的 " 塊 " (實(shí)頁(yè)
??????? 面)。
? B 、劃分虛頁(yè):將用戶邏輯地址空間也分成同樣大小的頁(yè)面,成為虛
??????? 擬空間的虛頁(yè)面。
? C 、建立頁(yè)表:有時(shí)稱為頁(yè)面表或頁(yè)面映射表( PMT )。每個(gè)作業(yè)一
??????? 張,按虛頁(yè)號(hào)進(jìn)行登記,其基本的內(nèi)容有特征位(表示該頁(yè)是否
??????? 在內(nèi)存、實(shí)頁(yè)號(hào)以及對(duì)應(yīng)外存的地址。 ?
? D 、地址變換:將虛頁(yè)面的邏輯地址轉(zhuǎn)化為實(shí)頁(yè)面的物理地址,在程
??????? 序執(zhí)行時(shí)改變?yōu)槲锢淼刂?,屬于作業(yè)的動(dòng)態(tài)重定位,一般由地址
??????? 轉(zhuǎn)換機(jī)構(gòu)(硬件)完成。
?
? 特點(diǎn):
? 允許一個(gè)作業(yè)存放在不連續(xù)的內(nèi)存塊中而又能保證作業(yè)連續(xù)得以運(yùn)行
????? ,既不需要移動(dòng)內(nèi)存中的信息,又可較好地解決零頭。
?
? 優(yōu)點(diǎn):
? a 、不要求作業(yè)存放在連續(xù)的內(nèi)存塊中,有效地解決零頭。
? b 、允許用戶作業(yè)不是一次集中裝入內(nèi)存而是根據(jù)需要調(diào)入,作業(yè)中
??????? 不常用部分不長(zhǎng)期駐留內(nèi)存,而本次運(yùn)行的不用部分根本就不裝
??????? 入內(nèi)存。
? c 、提供了虛存,使用戶作業(yè)地址空間不再受內(nèi)存可用空間大小的限
??????? 制。
?
???? 缺點(diǎn):
???? a 、頁(yè)式管理在內(nèi)存的共享和保護(hù)方面還欠完善。
???? b 、頁(yè)面大小相同,位置不能動(dòng)態(tài)增加。
???? c 、往往需要多次缺頁(yè)中斷才能把所需的信息完整地調(diào)入內(nèi)存。
?
???????? 段式存儲(chǔ)管理的基本思想是:把程序按內(nèi)容或過(guò)程(函數(shù))關(guān)系
???? 分成段,每段有自己的名字。一個(gè)用戶作業(yè)或進(jìn)程所包含的段對(duì)應(yīng)于
???? 一個(gè)二維線性虛擬空間,也就是一個(gè)二維虛擬存儲(chǔ)器。段式管理程序
???? 以段為單位分配內(nèi)存,然后通過(guò)地址映射機(jī)構(gòu)把段式虛擬存儲(chǔ)地址轉(zhuǎn)
???? 化為內(nèi)存中的實(shí)際地址。和頁(yè)式管理一樣,段式管理也采用只把那些
???? 經(jīng)常訪問(wèn)的段駐留內(nèi)存,而把那些在將來(lái)一段時(shí)間內(nèi)不被訪問(wèn)的段放
???? 在外存,待需要時(shí)自動(dòng)調(diào)入內(nèi)存的方法實(shí)現(xiàn)二維虛擬存儲(chǔ)器。按照作
???? 業(yè)的邏輯單位 -- 段,來(lái)分配內(nèi)存,適合程序的邏輯結(jié)構(gòu),方便用戶設(shè)
???? 計(jì)程序。
?
???? 段式存儲(chǔ)管理的工作原理:
???? A 、采用二維地址空間,如段號(hào)( S )、頁(yè)號(hào)( P )和頁(yè)內(nèi)單元號(hào)( D );
???? B 、系統(tǒng)建兩張表格每一作業(yè)一張段表,每一段建立一張頁(yè)表,段表
??????? 指出該段的頁(yè)表在內(nèi)存中的位置;
???? C 、地址變換機(jī)構(gòu)類似頁(yè)式機(jī)制,只是前面增加一項(xiàng)段號(hào)。
?
???? 特點(diǎn):
???? a 、每一段分成若干頁(yè),再按頁(yè)式管理,頁(yè)間不要求連續(xù);
???? b 、用分段方法分配管理作業(yè),用分頁(yè)方法分配管理內(nèi)存;
?
???? 優(yōu)點(diǎn):
???? 便于段的共享和保護(hù)、段的動(dòng)態(tài)增長(zhǎng)以及動(dòng)態(tài)連接。
?
???? 缺點(diǎn):
???? 為了消除零頭和允許段的動(dòng)態(tài)增長(zhǎng),需要花費(fèi) CPU 的大量時(shí)間在內(nèi)存
???? 中移動(dòng)作業(yè)的分段,而且段的大小也給外存管理帶來(lái)困難。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
