




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、1第第5章章 存儲管理(二)存儲管理(二)2第第5 5章章 存儲管理存儲管理n5.1 5.1 存儲器管理的功能存儲器管理的功能n5.2 5.2 實存管理實存管理n5.3 5.3 虛存管理虛存管理n5.4 5.4 碎片與抖動問題碎片與抖動問題3存儲器簡介存儲器簡介n存儲器是計算機中最重要的資源之一,是用來存儲器是計算機中最重要的資源之一,是用來存放程序和數(shù)據(jù)的地方。存放程序和數(shù)據(jù)的地方。n現(xiàn)代計算機系統(tǒng)一般采用多級存儲器系統(tǒng)包括:現(xiàn)代計算機系統(tǒng)一般采用多級存儲器系統(tǒng)包括: 高速緩沖存儲器(高速緩存)高速緩沖存儲器(高速緩存) 主存儲器(物理存儲器,主存或內(nèi)存)主存儲器(物理存儲器,主存或內(nèi)存)
2、輔助存儲器(輔存或外存)輔助存儲器(輔存或外存)4n高速緩存的存取速度與中央處理器速度相適應(yīng),高速緩存的存取速度與中央處理器速度相適應(yīng),速度快,但成本高,容量?。◣浊凰俣瓤?,但成本高,容量?。◣浊? -幾百千幾百千位),主要用來存放少量使用頻度高的信息位),主要用來存放少量使用頻度高的信息n主存儲器一般用來存放用戶正在執(zhí)行的程序和主存儲器一般用來存放用戶正在執(zhí)行的程序和數(shù)據(jù),中央處理器可直接訪問,隨機存取其中數(shù)據(jù),中央處理器可直接訪問,隨機存取其中的數(shù)據(jù)。存取速度比高速緩存慢一點兒,容量的數(shù)據(jù)。存取速度比高速緩存慢一點兒,容量比高速緩存大得多(幾十兆位比高速緩存大得多(幾十兆位- -幾百兆
3、位)幾百兆位)5n輔助存儲器是中央處理器不能直接訪問的,一輔助存儲器是中央處理器不能直接訪問的,一般用來存放大量的、暫時不用的數(shù)據(jù)信息,其般用來存放大量的、暫時不用的數(shù)據(jù)信息,其中的程序和數(shù)據(jù)需要移到主存才能運行。其存中的程序和數(shù)據(jù)需要移到主存才能運行。其存取速度低,但容量大(幾百兆位取速度低,但容量大(幾百兆位- -幾十千兆幾十千兆位)。位)。n三種存儲器由高速緩存到輔助存儲器,容量是三種存儲器由高速緩存到輔助存儲器,容量是遞增的,存取速度是遞減的。遞增的,存取速度是遞減的。6n操作系統(tǒng)所謂的存儲管理,主要是針對主存儲操作系統(tǒng)所謂的存儲管理,主要是針對主存儲器的管理。器的管理。n隨著現(xiàn)代技術(shù)
4、的發(fā)展,主存容量越來越大,但隨著現(xiàn)代技術(shù)的發(fā)展,主存容量越來越大,但它仍是一個關(guān)鍵性的緊缺的資源,尤其對于多它仍是一個關(guān)鍵性的緊缺的資源,尤其對于多道程序的情況下,多個作業(yè)要共享主存,對主道程序的情況下,多個作業(yè)要共享主存,對主存的管理和保護就顯得尤其重要存的管理和保護就顯得尤其重要 75.1 5.1 存儲器管理的功能存儲器管理的功能n在多道程序的環(huán)境中,在多道程序的環(huán)境中,存儲管理的目的存儲管理的目的主要有主要有兩個:兩個:一是提高資源的利用率,盡量滿足多個用戶對主一是提高資源的利用率,盡量滿足多個用戶對主存的要求;存的要求;二是能方便用戶使用主存儲器,使用戶不必考慮二是能方便用戶使用主存儲
5、器,使用戶不必考慮作業(yè)存放在哪塊區(qū)域,如何實現(xiàn)正確運行等問作業(yè)存放在哪塊區(qū)域,如何實現(xiàn)正確運行等問題題 。85.1 5.1 存儲器管理的功能存儲器管理的功能n存儲管理一般應(yīng)能完成如下功能:存儲管理一般應(yīng)能完成如下功能:(1 1)按作業(yè)要求進行內(nèi)存的分配并進行實時回收;)按作業(yè)要求進行內(nèi)存的分配并進行實時回收;(2 2)實現(xiàn)程序中的邏輯地址到物理地址的重定位;)實現(xiàn)程序中的邏輯地址到物理地址的重定位;(3 3)對操作系統(tǒng)及其用戶的信息提供存儲保護;)對操作系統(tǒng)及其用戶的信息提供存儲保護;(4 4)實現(xiàn)主存的邏輯擴充,提供給用戶更大的存)實現(xiàn)主存的邏輯擴充,提供給用戶更大的存儲空間儲空間95.1.
6、1 5.1.1 內(nèi)存的分配與回收內(nèi)存的分配與回收n在多道程序設(shè)計的環(huán)境中,當(dāng)有作業(yè)在多道程序設(shè)計的環(huán)境中,當(dāng)有作業(yè)進入進入計算計算機系統(tǒng)時,存儲管理模塊應(yīng)能根據(jù)當(dāng)時的內(nèi)存機系統(tǒng)時,存儲管理模塊應(yīng)能根據(jù)當(dāng)時的內(nèi)存分配情況,按作業(yè)要求,分配給它適當(dāng)?shù)膬?nèi)存。分配情況,按作業(yè)要求,分配給它適當(dāng)?shù)膬?nèi)存。當(dāng)某個作業(yè)當(dāng)某個作業(yè)完成完成之后不再使用內(nèi)存時,應(yīng)回收之后不再使用內(nèi)存時,應(yīng)回收其占用的內(nèi)存空間。其占用的內(nèi)存空間。n按照分配時機的不同,有兩種內(nèi)存分配形式:按照分配時機的不同,有兩種內(nèi)存分配形式: 靜態(tài)存儲分配和動態(tài)存儲分配靜態(tài)存儲分配和動態(tài)存儲分配105.1.1 5.1.1 內(nèi)存的分配與回收內(nèi)存的分配
7、與回收n(1) 靜態(tài)存儲分配:靜態(tài)存儲分配: 指內(nèi)存分配是在作業(yè)運行之前,各目標(biāo)模塊連指內(nèi)存分配是在作業(yè)運行之前,各目標(biāo)模塊連接后,把整個作業(yè)一次性全部轉(zhuǎn)入內(nèi)存,并規(guī)接后,把整個作業(yè)一次性全部轉(zhuǎn)入內(nèi)存,并規(guī)定在作業(yè)的整個運行過程中,不允許再申請其定在作業(yè)的整個運行過程中,不允許再申請其它內(nèi)存或在內(nèi)存中移動位置。它內(nèi)存或在內(nèi)存中移動位置。 也就是說,內(nèi)存分配是在作業(yè)運行前一次也就是說,內(nèi)存分配是在作業(yè)運行前一次性完成的。性完成的。115.1.1 5.1.1 內(nèi)存的分配與回收內(nèi)存的分配與回收n(2) 動態(tài)存儲分配:動態(tài)存儲分配: 作業(yè)要求的基本內(nèi)存空間是在目標(biāo)模塊裝作業(yè)要求的基本內(nèi)存空間是在目標(biāo)模
8、塊裝入內(nèi)存時分配的,但在作業(yè)運行過程中,允許入內(nèi)存時分配的,但在作業(yè)運行過程中,允許作業(yè)再申請附加的內(nèi)存空間或者在內(nèi)存中移動。作業(yè)再申請附加的內(nèi)存空間或者在內(nèi)存中移動。 即分配工作可以在作業(yè)運行前及運行過程中即分配工作可以在作業(yè)運行前及運行過程中逐步完成逐步完成125.1.1 5.1.1 內(nèi)存的分配與回收內(nèi)存的分配與回收n顯然,動態(tài)存儲分配具有較大的靈活性。它不顯然,動態(tài)存儲分配具有較大的靈活性。它不要求一個作業(yè)把要求一個作業(yè)把全部信息全部信息裝入內(nèi)存才開始運行,裝入內(nèi)存才開始運行,而是在作業(yè)運行期間需要某些信息時,系統(tǒng)才而是在作業(yè)運行期間需要某些信息時,系統(tǒng)才將其調(diào)入內(nèi)存,作業(yè)中暫不使用的信
9、息可放在將其調(diào)入內(nèi)存,作業(yè)中暫不使用的信息可放在輔存中,不必進入內(nèi)存,從而大大提高了內(nèi)存輔存中,不必進入內(nèi)存,從而大大提高了內(nèi)存的利用率。的利用率。13內(nèi)存分配與回收時,設(shè)計者必須考慮這些問題:內(nèi)存分配與回收時,設(shè)計者必須考慮這些問題:(1 1)作業(yè)調(diào)入內(nèi)存時,如有多個空閑區(qū),應(yīng)將)作業(yè)調(diào)入內(nèi)存時,如有多個空閑區(qū),應(yīng)將其放在什么位置?其放在什么位置?(2 2)作業(yè)調(diào)入內(nèi)存時,若內(nèi)存中沒有足夠的空)作業(yè)調(diào)入內(nèi)存時,若內(nèi)存中沒有足夠的空閑區(qū),應(yīng)考慮把哪些不用的信息從內(nèi)存中移走?閑區(qū),應(yīng)考慮把哪些不用的信息從內(nèi)存中移走?(3 3)當(dāng)作業(yè)完成后,應(yīng)怎樣將作業(yè)占用的內(nèi)存)當(dāng)作業(yè)完成后,應(yīng)怎樣將作業(yè)占用的
10、內(nèi)存進行回收進行回收14n因此,內(nèi)存中所有的空閑區(qū)和已分配的區(qū)域應(yīng)因此,內(nèi)存中所有的空閑區(qū)和已分配的區(qū)域應(yīng)當(dāng)被合理地組織,通??捎卯?dāng)被合理地組織,通??捎梅謪^(qū)說明表分區(qū)說明表、空閑空閑區(qū)鏈表區(qū)鏈表、存儲分塊表存儲分塊表等組織內(nèi)存區(qū)域。等組織內(nèi)存區(qū)域。154.1.2 4.1.2 地址重定位地址重定位1.1.內(nèi)存空間(物理空間)內(nèi)存空間(物理空間) 內(nèi)存是由若干個存儲單元組成的,每個存儲單元都內(nèi)存是由若干個存儲單元組成的,每個存儲單元都有一個編號,該編號能唯一地確定一個存儲單元,稱有一個編號,該編號能唯一地確定一個存儲單元,稱為內(nèi)存地址(物理地址)為內(nèi)存地址(物理地址) 內(nèi)存地址的集合稱為內(nèi)存地址
11、的集合稱為內(nèi)存地址空間(物理地址空內(nèi)存地址空間(物理地址空間),簡稱內(nèi)存空間間),簡稱內(nèi)存空間。它是一個線性空間,其編址順。它是一個線性空間,其編址順序為序為0 0,1 1,2 2,3 3,,n-1,n-1,n n的大小由實際組成存儲的大小由實際組成存儲器的存儲單元的個數(shù)決定。器的存儲單元的個數(shù)決定。如,某個系統(tǒng)有如,某個系統(tǒng)有64K64K內(nèi)存,則其內(nèi)存空間編號為內(nèi)存,則其內(nèi)存空間編號為0 0,1 1,2 2,,65535,65535164.1.2 4.1.2 地址重定位地址重定位2.2.邏輯空間邏輯空間用匯編語言或高級語言編寫程序時,通常用符號名來訪用匯編語言或高級語言編寫程序時,通常用符號
12、名來訪問某一單元。把程序中由符號名組成的程序空間稱為問某一單元。把程序中由符號名組成的程序空間稱為符號名空間,簡稱符號名空間,簡稱名空間名空間源程序經(jīng)過匯編或編譯后形成目標(biāo)程序,每個目標(biāo)程序源程序經(jīng)過匯編或編譯后形成目標(biāo)程序,每個目標(biāo)程序都是以都是以0 0為基址順序進行編址的,原來用符號名訪問的為基址順序進行編址的,原來用符號名訪問的單元用具體的數(shù)據(jù)單元用具體的數(shù)據(jù)單元號取代。這樣生成的目標(biāo)單元號取代。這樣生成的目標(biāo)程序占據(jù)一定的地址空間,稱為作業(yè)的邏輯地址空間,程序占據(jù)一定的地址空間,稱為作業(yè)的邏輯地址空間,簡稱簡稱邏輯空間。邏輯空間。在邏輯空間中每條指令的地址和指令中要訪問的操作數(shù)在邏輯空
13、間中每條指令的地址和指令中要訪問的操作數(shù)地址統(tǒng)稱為地址統(tǒng)稱為邏輯地址邏輯地址174.1.2 4.1.2 地址重定位地址重定位3.3.地址重定位地址重定位把用戶程序裝入內(nèi)存時,對有關(guān)指令的邏輯地址把用戶程序裝入內(nèi)存時,對有關(guān)指令的邏輯地址的修改叫做地址重定位,即地址重定位就是建的修改叫做地址重定位,即地址重定位就是建立用戶程序的邏輯地址和物理地址的對應(yīng)關(guān)系。立用戶程序的邏輯地址和物理地址的對應(yīng)關(guān)系。按重定位的時機不同,地址重定位又分為按重定位的時機不同,地址重定位又分為靜態(tài)地靜態(tài)地址重定位和動態(tài)地址重定位址重定位和動態(tài)地址重定位184.1.2 4.1.2 地址重定位地址重定位n靜態(tài)地址重定位靜態(tài)
14、地址重定位靜態(tài)地址重定位是在程序執(zhí)行之前由操作系統(tǒng)的靜態(tài)地址重定位是在程序執(zhí)行之前由操作系統(tǒng)的重定位裝入程序完成的。它根據(jù)要裝入的內(nèi)存重定位裝入程序完成的。它根據(jù)要裝入的內(nèi)存起始地址,直接修改所有涉及到的邏輯地址,起始地址,直接修改所有涉及到的邏輯地址,將內(nèi)存起始地址加上邏輯地址得到正確的內(nèi)存將內(nèi)存起始地址加上邏輯地址得到正確的內(nèi)存地址。地址。194.1.2 4.1.2 地址重定位地址重定位l靜態(tài)地址重定位的優(yōu)點靜態(tài)地址重定位的優(yōu)點是通過重定位裝入程序,是通過重定位裝入程序,實現(xiàn)邏輯地址向物理地址的轉(zhuǎn)化,不需要硬件實現(xiàn)邏輯地址向物理地址的轉(zhuǎn)化,不需要硬件的支持,可在任何機器上實現(xiàn)。早期的操作系
15、的支持,可在任何機器上實現(xiàn)。早期的操作系統(tǒng)大多采用這種方法。統(tǒng)大多采用這種方法。l缺點缺點是程序必須占據(jù)連續(xù)的內(nèi)存空間,且一旦是程序必須占據(jù)連續(xù)的內(nèi)存空間,且一旦裝入內(nèi)存后,因為邏輯地址已被改變,就不便裝入內(nèi)存后,因為邏輯地址已被改變,就不便被移動,不利于內(nèi)存空間的利用被移動,不利于內(nèi)存空間的利用l所以靜態(tài)重定位只適用于靜態(tài)的內(nèi)存分配方式所以靜態(tài)重定位只適用于靜態(tài)的內(nèi)存分配方式204.1.2 4.1.2 地址重定位地址重定位n動態(tài)地址重定位動態(tài)地址重定位動態(tài)地址重定位是在程序執(zhí)行期間進行的。一般動態(tài)地址重定位是在程序執(zhí)行期間進行的。一般這種轉(zhuǎn)換這種轉(zhuǎn)換由專門的硬件機構(gòu)來完成由專門的硬件機構(gòu)來完
16、成,通常采用,通常采用一個重定位寄存器,在每次進行存儲訪問時,一個重定位寄存器,在每次進行存儲訪問時,對取出的邏輯地址加上重定位寄存器的內(nèi)容,對取出的邏輯地址加上重定位寄存器的內(nèi)容,形成正確的內(nèi)存地址,重定位寄存器的內(nèi)容就形成正確的內(nèi)存地址,重定位寄存器的內(nèi)容就是程序裝入內(nèi)存的是程序裝入內(nèi)存的起始地址起始地址。214.1.2 4.1.2 地址重定位地址重定位n動態(tài)地址重定位的優(yōu)點是動態(tài)地址重定位的優(yōu)點是不要求程序裝入連續(xù)不要求程序裝入連續(xù)的內(nèi)存空間,在內(nèi)存中允許程序再次移動位置,的內(nèi)存空間,在內(nèi)存中允許程序再次移動位置,而且可以部分地裝入程序運行,也便于作業(yè)共而且可以部分地裝入程序運行,也便于
17、作業(yè)共享同一程序的副本。享同一程序的副本。因此現(xiàn)代計算機系統(tǒng)廣泛因此現(xiàn)代計算機系統(tǒng)廣泛采用動態(tài)地址重定位技術(shù)。采用動態(tài)地址重定位技術(shù)。n動態(tài)地址重定位的缺點是動態(tài)地址重定位的缺點是需要硬件的支持,而需要硬件的支持,而且實現(xiàn)存儲管理的軟件算法也比較復(fù)雜且實現(xiàn)存儲管理的軟件算法也比較復(fù)雜224.1.3 4.1.3 存儲保護存儲保護n在多道程序設(shè)計環(huán)境中,要保證各道程序只能在多道程序設(shè)計環(huán)境中,要保證各道程序只能在自己的存儲區(qū)中活動,不能對在自己的存儲區(qū)中活動,不能對別的程序別的程序尤其尤其是是操作系統(tǒng)操作系統(tǒng)產(chǎn)生干擾和破壞,就必須對存儲信產(chǎn)生干擾和破壞,就必須對存儲信息采取各種保護措施,這也是存儲
18、器管理的一息采取各種保護措施,這也是存儲器管理的一個重要功能。個重要功能。n存儲信息的保護體現(xiàn)在不能越界訪問,破壞操存儲信息的保護體現(xiàn)在不能越界訪問,破壞操作系統(tǒng)或其它用戶的程序。作系統(tǒng)或其它用戶的程序。實現(xiàn)這種存儲保護實現(xiàn)這種存儲保護可以采用硬件的方法,也可以采用軟硬件結(jié)合可以采用硬件的方法,也可以采用軟硬件結(jié)合的方法。通常采用硬件的的方法。通常采用硬件的界限寄存器保護法。界限寄存器保護法。234.1.3 4.1.3 存儲保護存儲保護n界限寄存器保護的技術(shù)有界限寄存器保護的技術(shù)有2 2種:種:上下界存儲保護:一種簡單的存儲保護技術(shù)。上下界存儲保護:一種簡單的存儲保護技術(shù)。系統(tǒng)為每個作業(yè)設(shè)置一
19、對上、下界寄存器,分系統(tǒng)為每個作業(yè)設(shè)置一對上、下界寄存器,分別用來存放當(dāng)前運行作業(yè)在內(nèi)存空間上的上、別用來存放當(dāng)前運行作業(yè)在內(nèi)存空間上的上、下界地址,用它們來限制用戶程序的活動范圍。下界地址,用它們來限制用戶程序的活動范圍。 在作業(yè)運行中,每當(dāng)要訪問內(nèi)存某單元的時候,在作業(yè)運行中,每當(dāng)要訪問內(nèi)存某單元的時候,就檢查經(jīng)過重定位以后產(chǎn)生的內(nèi)存地址是否在就檢查經(jīng)過重定位以后產(chǎn)生的內(nèi)存地址是否在上、下界寄存器規(guī)定的范圍內(nèi)。若在,訪問合上、下界寄存器規(guī)定的范圍內(nèi)。若在,訪問合法;否則產(chǎn)生越界中斷,通知系統(tǒng)進行越界處法;否則產(chǎn)生越界中斷,通知系統(tǒng)進行越界處理理244.1.3 4.1.3 存儲保護存儲保護基
20、址基址-限長存儲保護:是上、下界保護的一個限長存儲保護:是上、下界保護的一個變種。變種。系統(tǒng)為每個作業(yè)設(shè)置一個基址寄存器和系統(tǒng)為每個作業(yè)設(shè)置一個基址寄存器和一個限長寄存器,一個限長寄存器,基址寄存器存放該作業(yè)在內(nèi)基址寄存器存放該作業(yè)在內(nèi)存中的首地址,限長寄存器存放該作業(yè)的長度。存中的首地址,限長寄存器存放該作業(yè)的長度?;坊?限長存儲保護通??山Y(jié)合動態(tài)地址重定位限長存儲保護通常可結(jié)合動態(tài)地址重定位實現(xiàn),基址寄存器相當(dāng)于重定位寄存器實現(xiàn),基址寄存器相當(dāng)于重定位寄存器254.1.3 4.1.3 存儲保護存儲保護n對于存儲保護,除了防止越界外,還可對某一對于存儲保護,除了防止越界外,還可對某一區(qū)域
21、指定專門的保護機制。常用的保護方式有:區(qū)域指定專門的保護機制。常用的保護方式有: 禁止做任何操作;禁止做任何操作; 只能執(zhí)行;只能執(zhí)行; 只能讀;只能讀; 能讀、寫能讀、寫如對許多用戶可共享的程序,一般設(shè)為只能執(zhí)行;如對許多用戶可共享的程序,一般設(shè)為只能執(zhí)行;而對用戶可共享的數(shù)據(jù),則設(shè)為只能讀。一般而對用戶可共享的數(shù)據(jù),則設(shè)為只能讀。一般的用戶作業(yè)則是可讀、寫的。的用戶作業(yè)則是可讀、寫的。264.1.4 4.1.4 虛擬存儲器虛擬存儲器n隨著計算機技術(shù)的發(fā)展,需要計算機解決的問隨著計算機技術(shù)的發(fā)展,需要計算機解決的問題越來越復(fù)雜,有許多作業(yè)的大小超出了內(nèi)存題越來越復(fù)雜,有許多作業(yè)的大小超出了內(nèi)
22、存的實際容量。盡管人們對內(nèi)存的容量作了大量的實際容量。盡管人們對內(nèi)存的容量作了大量的擴充,但大作業(yè)、小內(nèi)存的矛盾依然突出,的擴充,但大作業(yè)、小內(nèi)存的矛盾依然突出,加上多道程序?qū)?nèi)存的共享,使得內(nèi)存更加緊加上多道程序?qū)?nèi)存的共享,使得內(nèi)存更加緊張,因此要求操作系統(tǒng)能張,因此要求操作系統(tǒng)能對內(nèi)存作邏輯上的擴對內(nèi)存作邏輯上的擴充充,這也是存儲管理的一個重要功能。,這也是存儲管理的一個重要功能。n對內(nèi)存進行邏輯上的擴充,目前普遍采用對內(nèi)存進行邏輯上的擴充,目前普遍采用虛擬虛擬存儲管理技術(shù)存儲管理技術(shù)274.1.4 4.1.4 虛擬存儲器虛擬存儲器n虛擬存儲管理技術(shù):虛擬存儲管理技術(shù):虛擬存儲管理技術(shù)的
23、基本思想是把有限的內(nèi)存空虛擬存儲管理技術(shù)的基本思想是把有限的內(nèi)存空間與大容量的外存統(tǒng)一管理起來,構(gòu)成一個遠(yuǎn)間與大容量的外存統(tǒng)一管理起來,構(gòu)成一個遠(yuǎn)大于實際內(nèi)存的、虛擬的存儲器。此時外存是大于實際內(nèi)存的、虛擬的存儲器。此時外存是作為內(nèi)存的直接延伸,用戶并不會感覺到內(nèi)外作為內(nèi)存的直接延伸,用戶并不會感覺到內(nèi)外存的區(qū)別,即把兩級存儲器當(dāng)作一級存儲器來存的區(qū)別,即把兩級存儲器當(dāng)作一級存儲器來看待??创?84.1.4 4.1.4 虛擬存儲器虛擬存儲器n一個作業(yè)運行時其全部作業(yè)裝入虛存,實際上一個作業(yè)運行時其全部作業(yè)裝入虛存,實際上可能只有可能只有當(dāng)前運行必須的一部分信息當(dāng)前運行必須的一部分信息裝入內(nèi)存
24、,裝入內(nèi)存,其它則存于外存,當(dāng)所訪問的信息不在內(nèi)存中其它則存于外存,當(dāng)所訪問的信息不在內(nèi)存中時,系統(tǒng)自動將其從外存調(diào)入內(nèi)存。時,系統(tǒng)自動將其從外存調(diào)入內(nèi)存。n當(dāng)然操作系統(tǒng)也可以把暫時不用的信息調(diào)致外當(dāng)然操作系統(tǒng)也可以把暫時不用的信息調(diào)致外存,以騰出內(nèi)存空間供必須之用。這些都由存存,以騰出內(nèi)存空間供必須之用。這些都由存儲管理系統(tǒng)自動實現(xiàn),不須用戶干預(yù)。儲管理系統(tǒng)自動實現(xiàn),不須用戶干預(yù)。n對用戶而言,感覺到系統(tǒng)提供了一個大容量的對用戶而言,感覺到系統(tǒng)提供了一個大容量的內(nèi)存,供用戶使用,而實際上這樣大的內(nèi)存并內(nèi)存,供用戶使用,而實際上這樣大的內(nèi)存并不存在,是一種虛擬的存儲器。把具有這種功不存在,是一
25、種虛擬的存儲器。把具有這種功能的存儲管理技術(shù)叫做能的存儲管理技術(shù)叫做虛擬存儲管理虛擬存儲管理294.1.4 4.1.4 虛擬存儲器虛擬存儲器n請求分頁式存儲管理和請求分段式存儲管理請求分頁式存儲管理和請求分段式存儲管理都都是利用虛擬存儲管理技術(shù)實現(xiàn)內(nèi)存擴充的實例。是利用虛擬存儲管理技術(shù)實現(xiàn)內(nèi)存擴充的實例。n為了實現(xiàn)存儲管理的諸功能,人們研究總結(jié)出為了實現(xiàn)存儲管理的諸功能,人們研究總結(jié)出多種存儲管理方案。根據(jù)能否實現(xiàn)虛擬存儲,多種存儲管理方案。根據(jù)能否實現(xiàn)虛擬存儲,我們把存儲方案分為兩類:我們把存儲方案分為兩類:實存管理和虛存管實存管理和虛存管理理304.2 4.2 實存管理實存管理n實存管理的
26、特點是作業(yè)運行時整個作業(yè)的邏輯實存管理的特點是作業(yè)運行時整個作業(yè)的邏輯地址空間必須全部裝入內(nèi)存,當(dāng)作業(yè)尺寸大于地址空間必須全部裝入內(nèi)存,當(dāng)作業(yè)尺寸大于主存可用空間時,該作業(yè)就無法運行,即實存主存可用空間時,該作業(yè)就無法運行,即實存管理無法實現(xiàn)虛擬存儲技術(shù)。管理無法實現(xiàn)虛擬存儲技術(shù)。n常用的實存管理技術(shù)有常用的實存管理技術(shù)有固定分區(qū)存儲管理、可固定分區(qū)存儲管理、可變式分區(qū)存儲管理和純分頁式存儲管理變式分區(qū)存儲管理和純分頁式存儲管理314.2.1 4.2.1 固定分區(qū)存儲管理固定分區(qū)存儲管理n是實現(xiàn)多道程序設(shè)計的一種最簡單的存儲管理是實現(xiàn)多道程序設(shè)計的一種最簡單的存儲管理技術(shù)。技術(shù)。基本思想是:基
27、本思想是:作業(yè)未進入內(nèi)存之前就由作業(yè)未進入內(nèi)存之前就由操作員或操作系統(tǒng),把內(nèi)存可用空間劃分成若操作員或操作系統(tǒng),把內(nèi)存可用空間劃分成若干個固定大小的存儲區(qū),除操作系統(tǒng)占據(jù)一個干個固定大小的存儲區(qū),除操作系統(tǒng)占據(jù)一個區(qū)域外,其余區(qū)域為系統(tǒng)中多個用戶共享。區(qū)域外,其余區(qū)域為系統(tǒng)中多個用戶共享。n因為在系統(tǒng)運行期間,分區(qū)大小、數(shù)目都不變,因為在系統(tǒng)運行期間,分區(qū)大小、數(shù)目都不變,所以也稱為所以也稱為靜態(tài)分區(qū)靜態(tài)分區(qū)324.2.1 4.2.1 固定分區(qū)存儲管理固定分區(qū)存儲管理n在在固定分區(qū)存儲管理系統(tǒng)中,每個作業(yè)在運行固定分區(qū)存儲管理系統(tǒng)中,每個作業(yè)在運行時可分到一塊足夠大的區(qū)域,用戶作業(yè)一次整時可分
28、到一塊足夠大的區(qū)域,用戶作業(yè)一次整體裝入到分配區(qū),并限制只能在這個區(qū)域中運體裝入到分配區(qū),并限制只能在這個區(qū)域中運行。行。n由于分區(qū)一般不可能剛好等于作業(yè)大小,所以由于分區(qū)一般不可能剛好等于作業(yè)大小,所以分區(qū)中常有已分配給作業(yè)但未被使用的空閑部分區(qū)中常有已分配給作業(yè)但未被使用的空閑部分。該空閑部分稱為分區(qū)的分。該空閑部分稱為分區(qū)的內(nèi)碎片。內(nèi)碎片。334.2.1 4.2.1 固定分區(qū)存儲管理固定分區(qū)存儲管理n假定系統(tǒng)有假定系統(tǒng)有256K256K內(nèi)存,系統(tǒng)被劃分為內(nèi)存,系統(tǒng)被劃分為5 5個個大小大小不等不等的的分區(qū),操作系統(tǒng)占據(jù)低地址部分的的的分區(qū),操作系統(tǒng)占據(jù)低地址部分的40K40K外,假定其它
29、外,假定其它4 4個分區(qū)按區(qū)域從小到大排列:個分區(qū)按區(qū)域從小到大排列:第第1 1個分區(qū)個分區(qū)8K8K,第,第2 2個分區(qū)個分區(qū)32K32K,第,第3 3個分區(qū)個分區(qū)64K64K,第第4 4個個112K.112K.剛開始運行時剛開始運行時n為了進行分區(qū)的分配和回收,在固定分區(qū)管理為了進行分區(qū)的分配和回收,在固定分區(qū)管理中應(yīng)該有一個中應(yīng)該有一個說明表說明表,用來記錄各個內(nèi)存分區(qū),用來記錄各個內(nèi)存分區(qū)的使用情況的使用情況34固定式分區(qū)內(nèi)存分配示意圖:固定式分區(qū)內(nèi)存分配示意圖: 0K 40K 48K 80K 256K-1操作系統(tǒng)(操作系統(tǒng)(40K)空閑分區(qū)(空閑分區(qū)(8K)作業(yè)作業(yè)2(共(共32K)碎
30、片(碎片(2K)空閑分區(qū)(空閑分區(qū)(64K)作業(yè)作業(yè)1(112K)35固定式分區(qū)說明表:固定式分區(qū)說明表:分區(qū)號分區(qū)號起始地址起始地址分區(qū)大小分區(qū)大小狀態(tài)狀態(tài)140K8K0248K32K1380K64K04114K112K136固定分區(qū)內(nèi)存的分配與回收固定分區(qū)內(nèi)存的分配與回收n當(dāng)某個作業(yè)要求裝入內(nèi)存運行時,系統(tǒng)首先查當(dāng)某個作業(yè)要求裝入內(nèi)存運行時,系統(tǒng)首先查詢詢分區(qū)說明表分區(qū)說明表,找到一個滿足條件的空閑分區(qū),找到一個滿足條件的空閑分區(qū),將相應(yīng)表目的狀態(tài)位置將相應(yīng)表目的狀態(tài)位置1 1,然后,然后向用戶返回分向用戶返回分區(qū)號或分區(qū)起始地址區(qū)號或分區(qū)起始地址,完成內(nèi)存的分配工作;,完成內(nèi)存的分配工作
31、;n當(dāng)一個作業(yè)完成后,釋放其內(nèi)存分區(qū),系統(tǒng)根當(dāng)一個作業(yè)完成后,釋放其內(nèi)存分區(qū),系統(tǒng)根據(jù)分區(qū)號或起始地址找到分區(qū)說明表相應(yīng)表目,據(jù)分區(qū)號或起始地址找到分區(qū)說明表相應(yīng)表目,將其狀態(tài)置將其狀態(tài)置0 0,表示該分區(qū)空閑,表示該分區(qū)空閑37固定分區(qū)內(nèi)存的分配與回收固定分區(qū)內(nèi)存的分配與回收n 固定分區(qū)存儲管理的最大優(yōu)點固定分區(qū)存儲管理的最大優(yōu)點是簡單,要求是簡單,要求的硬件支持少,軟件算法簡單。的硬件支持少,軟件算法簡單。n缺點缺點是容易產(chǎn)生內(nèi)部碎片,主存利用率不高是容易產(chǎn)生內(nèi)部碎片,主存利用率不高n早期早期IBMIBM公司的公司的OS/360MFTOS/360MFT(具有固定任務(wù)數(shù)的(具有固定任務(wù)數(shù)的多
32、道程序系統(tǒng))就采用了固定式分區(qū)存儲管理多道程序系統(tǒng))就采用了固定式分區(qū)存儲管理方法方法384.2.2 4.2.2 可變式分區(qū)存儲管理可變式分區(qū)存儲管理n1.1.空閑分區(qū)的組織形式空閑分區(qū)的組織形式n2.2.內(nèi)存的分配與回收內(nèi)存的分配與回收n3.3.常用的分配算法常用的分配算法n4.4.可變式分區(qū)的地址重定位可變式分區(qū)的地址重定位394.2.2 4.2.2 可變式分區(qū)存儲管理可變式分區(qū)存儲管理n可變式分區(qū)是指在作業(yè)裝入時,依據(jù)它對內(nèi)存可變式分區(qū)是指在作業(yè)裝入時,依據(jù)它對內(nèi)存空間的實際需求來劃分主存的分區(qū),因此,空間的實際需求來劃分主存的分區(qū),因此,每每個分區(qū)的大小與進入它的作業(yè)大小相同。個分區(qū)的
33、大小與進入它的作業(yè)大小相同。n它能有效解決固定分區(qū)的內(nèi)碎片問題它能有效解決固定分區(qū)的內(nèi)碎片問題,是一種,是一種較為實用的存儲管理方法。較為實用的存儲管理方法。n因為在系統(tǒng)運行過程中,內(nèi)存中分區(qū)的大小和因為在系統(tǒng)運行過程中,內(nèi)存中分區(qū)的大小和數(shù)目都是可變的,數(shù)目都是可變的,所以這種可變式分區(qū)也稱為所以這種可變式分區(qū)也稱為動態(tài)分區(qū)動態(tài)分區(qū)404.2.2 4.2.2 可變式分區(qū)存儲管理可變式分區(qū)存儲管理n系統(tǒng)開始運行的時候,存儲器被分為操作系統(tǒng)系統(tǒng)開始運行的時候,存儲器被分為操作系統(tǒng)分區(qū)(假定為分區(qū)(假定為40K40K)和用戶分區(qū)()和用戶分區(qū)(216K216K)。)。n當(dāng)作業(yè)當(dāng)作業(yè)1 1(46K4
34、6K)進入內(nèi)存后,分給它)進入內(nèi)存后,分給它46K46K,隨,隨著作業(yè)著作業(yè)2 2、3 3、4 4的進入,分別分配的進入,分別分配32K32K、38K38K、40K40K。n經(jīng)過一段時間的運行后,作業(yè)經(jīng)過一段時間的運行后,作業(yè)1 1、3 3運行完畢,運行完畢,釋放所占內(nèi)存。此時作業(yè)釋放所占內(nèi)存。此時作業(yè)5 5進入系統(tǒng),要求分進入系統(tǒng),要求分配配36K36K內(nèi)存,那么該如何為作業(yè)內(nèi)存,那么該如何為作業(yè)5 5分配內(nèi)存?分配內(nèi)存?n這時這時應(yīng)考慮空閑分區(qū)的組織形式和內(nèi)存分配算應(yīng)考慮空閑分區(qū)的組織形式和內(nèi)存分配算法法414.2.2 4.2.2 可變式分區(qū)存儲管理可變式分區(qū)存儲管理1.1.空閑分區(qū)的組織
35、形式空閑分區(qū)的組織形式n在可變式分區(qū)管理中,常把空閑區(qū)組織成空閑分在可變式分區(qū)管理中,常把空閑區(qū)組織成空閑分區(qū)表或空閑分區(qū)鏈表的形式區(qū)表或空閑分區(qū)鏈表的形式n空閑分區(qū)表空閑分區(qū)表類似于固定分區(qū)的分區(qū)說明表,包含類似于固定分區(qū)的分區(qū)說明表,包含空閑分區(qū)的起始位置和大小,因分區(qū)的數(shù)目不定,空閑分區(qū)的起始位置和大小,因分區(qū)的數(shù)目不定,故空閑分區(qū)表長度不定。故空閑分區(qū)表長度不定。n采用空閑分區(qū)表要占用一定數(shù)量的存儲單元來存采用空閑分區(qū)表要占用一定數(shù)量的存儲單元來存放表,增加了系統(tǒng)的開銷,所以使用比較廣泛的放表,增加了系統(tǒng)的開銷,所以使用比較廣泛的是空閑分區(qū)的鏈表組織形式是空閑分區(qū)的鏈表組織形式424.
36、2.2 4.2.2 可變式分區(qū)存儲管理可變式分區(qū)存儲管理n空閑分區(qū)鏈空閑分區(qū)鏈?zhǔn)窃诿總€空閑分區(qū)的頭部開辟一個是在每個空閑分區(qū)的頭部開辟一個單元,存放一個鏈表指針和分區(qū)的大小信息,單元,存放一個鏈表指針和分區(qū)的大小信息,鏈表指針指向下一個空閑分區(qū)的首地址鏈表指針指向下一個空閑分區(qū)的首地址n鏈表按空閑分區(qū)在內(nèi)存中的鏈表按空閑分區(qū)在內(nèi)存中的位置順序位置順序由小到大由小到大排列排列n空閑分區(qū)用鏈表組織時,空閑區(qū)的信息存儲在空閑分區(qū)用鏈表組織時,空閑區(qū)的信息存儲在空閑區(qū)內(nèi),因此不會給系統(tǒng)造成額外負(fù)擔(dān)空閑區(qū)內(nèi),因此不會給系統(tǒng)造成額外負(fù)擔(dān)432.2.內(nèi)存的分配與回收內(nèi)存的分配與回收n在可變式分區(qū)存儲管理中,
37、當(dāng)作業(yè)要求一個在可變式分區(qū)存儲管理中,當(dāng)作業(yè)要求一個XkXk大小的存儲空間時,系統(tǒng)從鏈表頭指針開始依大小的存儲空間時,系統(tǒng)從鏈表頭指針開始依次檢索空閑區(qū),找到第一個大于等于次檢索空閑區(qū),找到第一個大于等于XkXk的空閑的空閑區(qū)。若系統(tǒng)中所有的空閑區(qū)都小于區(qū)。若系統(tǒng)中所有的空閑區(qū)都小于XKXK,則分配,則分配失敗。失敗。n若該空閑區(qū)大于若該空閑區(qū)大于XkXk,則將空閑區(qū)分為兩部分,則將空閑區(qū)分為兩部分,一個大小為一個大小為XkXk,分配給用戶,另一個為余下的,分配給用戶,另一個為余下的部分,仍留在空閑區(qū)鏈表中。修改相應(yīng)鏈表指部分,仍留在空閑區(qū)鏈表中。修改相應(yīng)鏈表指針?biāo)赶虻牡刂泛涂臻e區(qū)大小針?biāo)?/p>
38、向的地址和空閑區(qū)大小442.2.內(nèi)存的分配與回收內(nèi)存的分配與回收n當(dāng)一個作業(yè)完成釋放所占分區(qū)時,系統(tǒng)應(yīng)進行當(dāng)一個作業(yè)完成釋放所占分區(qū)時,系統(tǒng)應(yīng)進行回收?;厥?。n在可變分區(qū)中,應(yīng)檢查回收區(qū)與內(nèi)存中前后空在可變分區(qū)中,應(yīng)檢查回收區(qū)與內(nèi)存中前后空閑區(qū)是否相鄰,若相鄰則進行合并,形成一個閑區(qū)是否相鄰,若相鄰則進行合并,形成一個較大的空閑區(qū),并對相應(yīng)的鏈表指針進行修改;較大的空閑區(qū),并對相應(yīng)的鏈表指針進行修改;若不相鄰,則應(yīng)將空閑區(qū)插入到空閑區(qū)鏈表的若不相鄰,則應(yīng)將空閑區(qū)插入到空閑區(qū)鏈表的適當(dāng)位置適當(dāng)位置453.3.常用的分配算法常用的分配算法n在可變式分區(qū)中,對空閑區(qū)鏈表采用不同的組在可變式分區(qū)中,對
39、空閑區(qū)鏈表采用不同的組織形式,就會對應(yīng)不同的分配和回收算法。??椥问?,就會對應(yīng)不同的分配和回收算法。常用的分配算法有三種:用的分配算法有三種: 首次適應(yīng)算法首次適應(yīng)算法 最佳適應(yīng)算法最佳適應(yīng)算法 最差適應(yīng)算法最差適應(yīng)算法46首次適應(yīng)算法:首次適應(yīng)算法:n這種算法把空閑分區(qū)這種算法把空閑分區(qū)按其在內(nèi)存空間中地址遞按其在內(nèi)存空間中地址遞增的順序增的順序鏈接在一起。鏈接在一起。n當(dāng)用戶申請一內(nèi)存空間的時候,從空閑區(qū)鏈表當(dāng)用戶申請一內(nèi)存空間的時候,從空閑區(qū)鏈表的頭指針開始查找,選擇第一個滿足要求的空的頭指針開始查找,選擇第一個滿足要求的空閑分區(qū)。閑分區(qū)。n如果它不等于作業(yè)的大小,就將作業(yè)分成兩部如果它
40、不等于作業(yè)的大小,就將作業(yè)分成兩部分,一部分給作業(yè),另一部分仍留在空閑區(qū)鏈分,一部分給作業(yè),另一部分仍留在空閑區(qū)鏈表中。表中。47首次適應(yīng)算法:首次適應(yīng)算法:n當(dāng)系統(tǒng)回收一個分區(qū)的時候,首先檢查是否有當(dāng)系統(tǒng)回收一個分區(qū)的時候,首先檢查是否有前、后相鄰的空閑區(qū)。如有,則進行合并,合前、后相鄰的空閑區(qū)。如有,則進行合并,合并后的空閑區(qū)仍留在鏈表的原位置上,但應(yīng)修并后的空閑區(qū)仍留在鏈表的原位置上,但應(yīng)修改相應(yīng)的鏈表指針和分區(qū)大小。改相應(yīng)的鏈表指針和分區(qū)大小。n首次適應(yīng)算法的優(yōu)點首次適應(yīng)算法的優(yōu)點是分配和回收算法都很簡是分配和回收算法都很簡單,查找速度快。因這個算法總是從低地址開單,查找速度快。因這個
41、算法總是從低地址開始查找,因此留在高地址部分的大空閑區(qū)被劃始查找,因此留在高地址部分的大空閑區(qū)被劃分的機會少,在大作業(yè)到來時容易滿足。分的機會少,在大作業(yè)到來時容易滿足。48最佳適應(yīng)算法最佳適應(yīng)算法n該算法把空閑分區(qū)鏈表該算法把空閑分區(qū)鏈表按分區(qū)的大小由小到大按分區(qū)的大小由小到大進行組織進行組織。當(dāng)有作業(yè)申請內(nèi)存空間時,總是首。當(dāng)有作業(yè)申請內(nèi)存空間時,總是首先找到滿足要求的最接近于作業(yè)大小的空閑分先找到滿足要求的最接近于作業(yè)大小的空閑分區(qū)。區(qū)。 n因分區(qū)的大小與作業(yè)相近,從而避免了將較大因分區(qū)的大小與作業(yè)相近,從而避免了將較大的分區(qū)分成兩部分,當(dāng)有較大的作業(yè)要求內(nèi)存的分區(qū)分成兩部分,當(dāng)有較大的
42、作業(yè)要求內(nèi)存時,容易得到滿足。時,容易得到滿足。49最佳適應(yīng)算法最佳適應(yīng)算法n最佳適應(yīng)算法從理論上看來很完美,但每次分最佳適應(yīng)算法從理論上看來很完美,但每次分配時總會產(chǎn)生最小的空閑分區(qū)。經(jīng)過一段時間配時總會產(chǎn)生最小的空閑分區(qū)。經(jīng)過一段時間運行后,內(nèi)存中可能有多個這樣的小分區(qū),因運行后,內(nèi)存中可能有多個這樣的小分區(qū),因太小而無法分配給別的作業(yè)使用。這些小分區(qū)太小而無法分配給別的作業(yè)使用。這些小分區(qū)稱為稱為外部碎片外部碎片。外部碎片的增多會影響空閑區(qū)。外部碎片的增多會影響空閑區(qū)鏈表的查找速度。鏈表的查找速度。n為此人們又在此算法中設(shè)定一個參數(shù)為此人們又在此算法中設(shè)定一個參數(shù)G G,當(dāng)分,當(dāng)分配給一
43、個作業(yè)配給一個作業(yè)XkXk大小的內(nèi)存空間后,若剩余部大小的內(nèi)存空間后,若剩余部分小于分小于G G,就把該分區(qū)全部分給該作業(yè),不再,就把該分區(qū)全部分給該作業(yè),不再劃分為兩部分劃分為兩部分50最佳適應(yīng)算法最佳適應(yīng)算法n采用最佳適應(yīng)算法的另一個問題是,當(dāng)回收一采用最佳適應(yīng)算法的另一個問題是,當(dāng)回收一個分區(qū)的時候,為了把它插入到空閑區(qū)鏈表的個分區(qū)的時候,為了把它插入到空閑區(qū)鏈表的合適位置,也是比較費時的。合適位置,也是比較費時的。51最差適應(yīng)算法最差適應(yīng)算法n這種算法要求這種算法要求把空閑區(qū)按大小遞減的順序組織把空閑區(qū)按大小遞減的順序組織成空閑區(qū)鏈表。成空閑區(qū)鏈表。當(dāng)用戶申請一個存儲區(qū)時,總當(dāng)用戶申請
44、一個存儲區(qū)時,總是從頭檢查空閑區(qū)鏈表的空閑區(qū),若找不到滿是從頭檢查空閑區(qū)鏈表的空閑區(qū),若找不到滿足要求的,分配失??;若找到第一個滿足要求足要求的,分配失?。蝗粽业降谝粋€滿足要求的,則將該空閑區(qū)分配給用戶,然后修改和調(diào)的,則將該空閑區(qū)分配給用戶,然后修改和調(diào)整空閑區(qū)鏈表。整空閑區(qū)鏈表。52最差適應(yīng)算法最差適應(yīng)算法n最差適應(yīng)算法的優(yōu)點最差適應(yīng)算法的優(yōu)點是查詢簡單,而且每次分配總是是查詢簡單,而且每次分配總是選最大的空閑區(qū),除給用戶分配的空間外,剩余的空選最大的空閑區(qū),除給用戶分配的空間外,剩余的空間還可能相當(dāng)大,還能裝入較大的程序。間還可能相當(dāng)大,還能裝入較大的程序。n缺點是,缺點是,每次從最大的
45、空閑分區(qū)分配,當(dāng)有大的作業(yè)每次從最大的空閑分區(qū)分配,當(dāng)有大的作業(yè)到來時,其存儲分配的請求往往得不到滿足。到來時,其存儲分配的請求往往得不到滿足。n三種算法各有利弊,三種算法各有利弊,到底選用哪一種算法,應(yīng)針對具到底選用哪一種算法,應(yīng)針對具體的作業(yè)序列來分析。如果對于某一作業(yè)序列來說,體的作業(yè)序列來分析。如果對于某一作業(yè)序列來說,這種算法能將作業(yè)序列中的所有作業(yè)都安置完畢,那這種算法能將作業(yè)序列中的所有作業(yè)都安置完畢,那么就認(rèn)為該算法對這一作業(yè)序列是合適的。么就認(rèn)為該算法對這一作業(yè)序列是合適的。53n實際應(yīng)用時,考慮到分配時內(nèi)存空閑區(qū)的選擇實際應(yīng)用時,考慮到分配時內(nèi)存空閑區(qū)的選擇以及回收時,空閑
46、區(qū)的插入、合并,首次適應(yīng)以及回收時,空閑區(qū)的插入、合并,首次適應(yīng)算法比較簡單,因此,首次適應(yīng)算法用得多一算法比較簡單,因此,首次適應(yīng)算法用得多一些。些。544.4.可變式分區(qū)的地址重定位可變式分區(qū)的地址重定位n可變式分區(qū)的地址重定位可采用靜態(tài)重定位,也可以可變式分區(qū)的地址重定位可采用靜態(tài)重定位,也可以采用動態(tài)重定位。采用動態(tài)重定位。如果采用如果采用靜態(tài)重定位靜態(tài)重定位,因用戶作業(yè),因用戶作業(yè)進入內(nèi)存后,程序的邏輯地址實現(xiàn)了重定位,不能在進入內(nèi)存后,程序的邏輯地址實現(xiàn)了重定位,不能在內(nèi)存中再進行移動。內(nèi)存中再進行移動。n經(jīng)過一段時間的運行,內(nèi)存中不能再利用分配的小碎經(jīng)過一段時間的運行,內(nèi)存中不能
47、再利用分配的小碎片會越來越多。有時可能會出現(xiàn)這樣的情況:當(dāng)一個片會越來越多。有時可能會出現(xiàn)這樣的情況:當(dāng)一個作業(yè)申請一個一定量的內(nèi)存空間的時候,雖然此時空作業(yè)申請一個一定量的內(nèi)存空間的時候,雖然此時空閑區(qū)的總和大于新作業(yè)的內(nèi)存要求,但卻沒有單個的閑區(qū)的總和大于新作業(yè)的內(nèi)存要求,但卻沒有單個的空閑區(qū)足以裝下該作業(yè)??臻e區(qū)足以裝下該作業(yè)。554.4.可變式分區(qū)的地址重定位可變式分區(qū)的地址重定位n解決前述問題的方法之一是采用解決前述問題的方法之一是采用緊湊技術(shù)緊湊技術(shù)。即。即把小碎片集中起來使之成為一個大分區(qū)。把小碎片集中起來使之成為一個大分區(qū)。n實現(xiàn)的方法是移動各用戶分區(qū)中的程序,使它實現(xiàn)的方法是
48、移動各用戶分區(qū)中的程序,使它們集中于內(nèi)存的一端,使碎片集中于另一端,們集中于內(nèi)存的一端,使碎片集中于另一端,從而將空閑的碎片連成一個較大的分區(qū)。為此從而將空閑的碎片連成一個較大的分區(qū)。為此必須采用必須采用動態(tài)重定位技術(shù)動態(tài)重定位技術(shù),才能使用戶程序在,才能使用戶程序在內(nèi)存中移動。內(nèi)存中移動。564.4.可變式分區(qū)的地址重定位可變式分區(qū)的地址重定位n采用動態(tài)重定位的可變分區(qū)管理技術(shù),在執(zhí)行采用動態(tài)重定位的可變分區(qū)管理技術(shù),在執(zhí)行內(nèi)存分配時,如無足夠大的空閑塊,應(yīng)考慮實內(nèi)存分配時,如無足夠大的空閑塊,應(yīng)考慮實現(xiàn)現(xiàn)緊湊技術(shù)緊湊技術(shù)n可變式分區(qū)的存儲保護可采用基址可變式分區(qū)的存儲保護可采用基址限長存限
49、長存儲保護方式。儲保護方式。n可變式分區(qū)存儲管理的優(yōu)點是可變式分區(qū)存儲管理的優(yōu)點是可以有效解決固可以有效解決固定式分區(qū)的內(nèi)部碎片問題,能有效利用主存空定式分區(qū)的內(nèi)部碎片問題,能有效利用主存空間,提高了多道程序?qū)τ趦?nèi)存的共享。間,提高了多道程序?qū)τ趦?nèi)存的共享。n缺點是缺點是容易產(chǎn)生外部碎片。為了解決這個問題,容易產(chǎn)生外部碎片。為了解決這個問題,要采用動態(tài)重定位,增加了計算機硬件成本,要采用動態(tài)重定位,增加了計算機硬件成本,而緊湊工作也要花費處理機的時間。而緊湊工作也要花費處理機的時間。574.2.3 4.2.3 純分頁存儲管理純分頁存儲管理n在可變式分區(qū)存儲管理系統(tǒng)中,要求一個作業(yè)必須裝在可變式
50、分區(qū)存儲管理系統(tǒng)中,要求一個作業(yè)必須裝入內(nèi)存的某一連續(xù)區(qū)域內(nèi)。這樣,經(jīng)過一段時間的運入內(nèi)存的某一連續(xù)區(qū)域內(nèi)。這樣,經(jīng)過一段時間的運行,隨著多個作業(yè)的進入與完成,內(nèi)存中容易產(chǎn)生多行,隨著多個作業(yè)的進入與完成,內(nèi)存中容易產(chǎn)生多個分散的比較小的碎片。解決這一問題的一個方法是個分散的比較小的碎片。解決這一問題的一個方法是采用采用緊湊技術(shù)緊湊技術(shù),但緊湊技術(shù)要占用處理機的時間。,但緊湊技術(shù)要占用處理機的時間。n為此人們考慮另外一種思路:打破一個作業(yè)必須裝入為此人們考慮另外一種思路:打破一個作業(yè)必須裝入一個連續(xù)空間的限制,把一個作業(yè)分配到幾個不連續(xù)一個連續(xù)空間的限制,把一個作業(yè)分配到幾個不連續(xù)的區(qū)域內(nèi),從
51、而不需要移動主存中原有的信息,就可的區(qū)域內(nèi),從而不需要移動主存中原有的信息,就可以解決碎片問題。以解決碎片問題。n這一思想的應(yīng)用就是這一思想的應(yīng)用就是分頁存儲管理。分頁存儲管理。分頁存儲管理是分頁存儲管理是在大型機操作系統(tǒng)中廣泛采用的一種存儲管理方案。在大型機操作系統(tǒng)中廣泛采用的一種存儲管理方案。584.2.3 4.2.3 純分頁存儲管理純分頁存儲管理n分頁存儲管理的基本思想是,把分頁存儲管理的基本思想是,把內(nèi)存空間內(nèi)存空間劃分劃分成大小相等、位置固定的若干小分區(qū),每個小成大小相等、位置固定的若干小分區(qū),每個小分區(qū)稱為一個分區(qū)稱為一個存儲塊存儲塊,簡稱為,簡稱為“塊塊”,并依次,并依次編號為編
52、號為0 0,1 1,2 2,n n塊,每個存儲塊的大小塊,每個存儲塊的大小由不同的系統(tǒng)決定,一般為由不同的系統(tǒng)決定,一般為2 2的的n n次冪,如次冪,如1K1K,2K2K,4K4K等,一般不超過等,一般不超過4K4K。594.2.3 4.2.3 純分頁存儲管理純分頁存儲管理n把用戶的邏輯地址空間分成與存儲塊大小相等把用戶的邏輯地址空間分成與存儲塊大小相等的的若干頁若干頁,依次為,依次為0 0,1 1,2 2,m m頁。頁。n當(dāng)用戶提出存儲分配請求時,系統(tǒng)首先根據(jù)存當(dāng)用戶提出存儲分配請求時,系統(tǒng)首先根據(jù)存儲塊的大小,把作業(yè)分為若干頁,每一頁可存儲塊的大小,把作業(yè)分為若干頁,每一頁可存儲在內(nèi)存中
53、的任一個空閑塊內(nèi)。儲在內(nèi)存中的任一個空閑塊內(nèi)。n此時,只要建立起此時,只要建立起程序的邏輯頁和內(nèi)存的存儲程序的邏輯頁和內(nèi)存的存儲塊之間的對應(yīng)關(guān)系塊之間的對應(yīng)關(guān)系,借助動態(tài)地址變換,原本,借助動態(tài)地址變換,原本連續(xù)的用戶作業(yè)就可以被分配進不連續(xù)的存儲連續(xù)的用戶作業(yè)就可以被分配進不連續(xù)的存儲塊中塊中604.2.3 4.2.3 純分頁存儲管理純分頁存儲管理n如果把一個作業(yè)的所有頁面一次全部裝入到內(nèi)如果把一個作業(yè)的所有頁面一次全部裝入到內(nèi)存塊中,這種分頁稱為存塊中,這種分頁稱為純分頁存儲管理純分頁存儲管理。n如果作業(yè)的所有頁面并不是一次性全部裝入,如果作業(yè)的所有頁面并不是一次性全部裝入,而是根據(jù)作業(yè)運
54、行時的實際要求裝入,則把這而是根據(jù)作業(yè)運行時的實際要求裝入,則把這種分頁稱為種分頁稱為請求式分頁存儲管理請求式分頁存儲管理。先討論純分。先討論純分頁存儲管理頁存儲管理61純分頁存儲管理純分頁存儲管理幾個方面的問題:幾個方面的問題:n存儲塊的分配與回收存儲塊的分配與回收n地址重定位問題地址重定位問題n聯(lián)想存儲器聯(lián)想存儲器n存儲保護存儲保護621.1.純分頁存儲管理中存儲塊的分配與回收純分頁存儲管理中存儲塊的分配與回收n當(dāng)有作業(yè)請求分配內(nèi)存時,可根據(jù)邏輯地址的當(dāng)有作業(yè)請求分配內(nèi)存時,可根據(jù)邏輯地址的大小計算出需要多少存儲塊,然后將空閑塊分大小計算出需要多少存儲塊,然后將空閑塊分配給它們使用。配給它
55、們使用。n通常有兩種記錄空閑塊的方法:通常有兩種記錄空閑塊的方法:位圖法和鏈表位圖法和鏈表法法63位圖法位圖法查找空閑塊比較費時,但回收比較簡單,只需將查找空閑塊比較費時,但回收比較簡單,只需將位圖中該塊對應(yīng)的二進制位置位圖中該塊對應(yīng)的二進制位置0即可。即可。操作系統(tǒng)操作系統(tǒng)操作系統(tǒng)操作系統(tǒng)作業(yè)作業(yè)1作業(yè)作業(yè)2作業(yè)作業(yè)2作業(yè)作業(yè)1作業(yè)作業(yè)2作業(yè)作業(yè)1作業(yè)作業(yè)21110100 11010101 064鏈表法鏈表法n分頁存儲管理同樣可以采用前面分區(qū)管理中的分頁存儲管理同樣可以采用前面分區(qū)管理中的鏈表法,鏈表法,即也可以用鏈表來組織空閑分區(qū)。即也可以用鏈表來組織空閑分區(qū)。n在分頁管理中,由于每個塊的
56、大小相同,在每在分頁管理中,由于每個塊的大小相同,在每個空閑塊中只需要包含下一個空閑塊的指針即個空閑塊中只需要包含下一個空閑塊的指針即可。可。n系統(tǒng)設(shè)定一個空閑塊鏈表頭指針指向鏈表的第系統(tǒng)設(shè)定一個空閑塊鏈表頭指針指向鏈表的第一個空閑塊。當(dāng)用戶申請內(nèi)存時,根據(jù)鏈表頭一個空閑塊。當(dāng)用戶申請內(nèi)存時,根據(jù)鏈表頭指針順序分配即可;回收時,只需將該塊指針順序分配即可;回收時,只需將該塊插入插入表頭表頭即可。即可。652.2.純分頁存儲管理的地址重定位問題純分頁存儲管理的地址重定位問題n要使分散的、不連續(xù)的用戶程序能正常運行,必要使分散的、不連續(xù)的用戶程序能正常運行,必須采用須采用動態(tài)地址重定位動態(tài)地址重定
57、位。此時可采用重定位寄存。此時可采用重定位寄存器方式,但如分頁太多,則重定位寄存器就會用器方式,但如分頁太多,則重定位寄存器就會用得太多。得太多。n通??稍趦?nèi)存中為每個作業(yè)開辟一塊特定區(qū)域,通常可在內(nèi)存中為每個作業(yè)開辟一塊特定區(qū)域,建立起作業(yè)的邏輯頁與存儲塊之間的對應(yīng)表格關(guān)建立起作業(yè)的邏輯頁與存儲塊之間的對應(yīng)表格關(guān)系,這種表稱為系,這種表稱為頁面映像表,簡稱頁表頁面映像表,簡稱頁表。n最簡單的頁表只包含頁號、塊號兩個內(nèi)容最簡單的頁表只包含頁號、塊號兩個內(nèi)容662.2.純分頁存儲管理的地址重定位問題純分頁存儲管理的地址重定位問題n頁表的起始地址、長度,放在該作業(yè)的進程控頁表的起始地址、長度,放在
58、該作業(yè)的進程控制塊制塊PCBPCB中。中。n對當(dāng)前運行作業(yè)的頁表由一個專用的控制寄存對當(dāng)前運行作業(yè)的頁表由一個專用的控制寄存器器頁表始址寄存器來指向。頁表始址寄存器來指向。n每當(dāng)運行一個新作業(yè)就將該作業(yè)的頁表首址、每當(dāng)運行一個新作業(yè)就將該作業(yè)的頁表首址、長度從進程控制塊中取出長度從進程控制塊中取出672.2.純分頁存儲管理的地址重定位問題純分頁存儲管理的地址重定位問題n在作業(yè)執(zhí)行過程中,由硬件地址分頁結(jié)構(gòu)自動在作業(yè)執(zhí)行過程中,由硬件地址分頁結(jié)構(gòu)自動將每條程序指令中的將每條程序指令中的邏輯地址邏輯地址解釋成兩部分:解釋成兩部分:頁號頁號P P和頁內(nèi)地址和頁內(nèi)地址W W。n通過頁號查找頁表得到存儲
59、塊號通過頁號查找頁表得到存儲塊號b b,與頁內(nèi)地,與頁內(nèi)地址址W W合成,形成物理地址,從而訪問內(nèi)存,得合成,形成物理地址,從而訪問內(nèi)存,得到操作數(shù)據(jù)。到操作數(shù)據(jù)。n邏輯地址由硬件分成的兩部分頁號邏輯地址由硬件分成的兩部分頁號P P和頁內(nèi)地和頁內(nèi)地址址W W是系統(tǒng)自動進行的,用戶察覺不到。頁內(nèi)是系統(tǒng)自動進行的,用戶察覺不到。頁內(nèi)地址的長度由頁長決定。邏輯地址中除去頁內(nèi)地址的長度由頁長決定。邏輯地址中除去頁內(nèi)地址所占的低位部分外,其余高位部分為頁號。地址所占的低位部分外,其余高位部分為頁號。683.3.聯(lián)想寄存器聯(lián)想寄存器n從上面介紹的地址變換過程可以看出:如果把從上面介紹的地址變換過程可以看出
60、:如果把頁表全部放在內(nèi)存,頁表全部放在內(nèi)存,那么存取一個數(shù)據(jù)時,至那么存取一個數(shù)據(jù)時,至少要訪問兩次內(nèi)存。少要訪問兩次內(nèi)存。一次是訪問頁表,形成實一次是訪問頁表,形成實際內(nèi)存地址;另一次是根據(jù)形成的內(nèi)存地址存際內(nèi)存地址;另一次是根據(jù)形成的內(nèi)存地址存取數(shù)據(jù)。顯然,比起通常的執(zhí)行指令,計算機取數(shù)據(jù)。顯然,比起通常的執(zhí)行指令,計算機的運行速度要減小一半。的運行速度要減小一半。693.3.聯(lián)想寄存器聯(lián)想寄存器n為了提高查表的速度,人們在分頁地址變換機為了提高查表的速度,人們在分頁地址變換機構(gòu)中,加入了構(gòu)中,加入了一組高速緩沖存儲器一組高速緩沖存儲器,用來存放,用來存放當(dāng)前作業(yè)的最常用的頁號和與之相應(yīng)的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商場消防工程施工合同5篇
- 《6.2垂直關(guān)系的性質(zhì)》講義
- 2023年高考全國乙卷理科綜合真題(原卷版)
- 避震山地車市場分析及競爭策略分析報告
- 《天然藥物學(xué)》課程標(biāo)準(zhǔn)
- 第五章 生活中的軸對稱單元練習(xí) 2024-2025學(xué)年北師大版七年級數(shù)學(xué)下冊
- 合伙人項目合作合同范本
- 衛(wèi)浴工程購銷合同范例
- 個性簡歷自我評價簡短
- 個人簡歷幼師自薦信
- 2024年世界職業(yè)院校技能大賽高職組“聲樂、器樂表演組”賽項參考試題庫(含答案)
- 2024年共青團入團考試題庫及答案
- 2024解析:第十二章機械效率-講核心(原卷版)
- 2023年國家公務(wù)員錄用考試《申論》真題(副省卷)及答案解析
- 2023年海南省公務(wù)員錄用考試《行測》真題卷及答案解析
- 2024-2030年中國語言培訓(xùn)行業(yè)競爭分析及發(fā)展策略建議報告版
- 2024-2030年中國醫(yī)療器械維修設(shè)備行業(yè)供需狀況及發(fā)展策略分析報告
- 中國心力衰竭診斷和治療指南2024解讀(完整版)
- 女性健康知識講座課件
- DB11T 1787-2020 二氧化碳排放核算和報告要求 其他行業(yè)
- 企業(yè)網(wǎng)絡(luò)安全管理規(guī)范作業(yè)指導(dǎo)書
評論
0/150
提交評論