內(nèi)容程序的裝入和鏈接連續(xù)分配存儲(chǔ)管理方式覆蓋與交換分頁(yè)課件_第1頁(yè)
內(nèi)容程序的裝入和鏈接連續(xù)分配存儲(chǔ)管理方式覆蓋與交換分頁(yè)課件_第2頁(yè)
內(nèi)容程序的裝入和鏈接連續(xù)分配存儲(chǔ)管理方式覆蓋與交換分頁(yè)課件_第3頁(yè)
內(nèi)容程序的裝入和鏈接連續(xù)分配存儲(chǔ)管理方式覆蓋與交換分頁(yè)課件_第4頁(yè)
內(nèi)容程序的裝入和鏈接連續(xù)分配存儲(chǔ)管理方式覆蓋與交換分頁(yè)課件_第5頁(yè)
已閱讀5頁(yè),還剩116頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、華北電力大學(xué)計(jì)算機(jī)系目的及要求了解程序裝入的方式和實(shí)現(xiàn)鏈接的方法;領(lǐng)會(huì)單一連續(xù)分配和固定分區(qū)分配機(jī)制的地址轉(zhuǎn)換;理解并掌握動(dòng)態(tài)分區(qū)分配的分配和回收算法,領(lǐng)會(huì)動(dòng)態(tài)重定位分區(qū)分配算法;了解并領(lǐng)會(huì)對(duì)換技術(shù);理解并掌握分頁(yè)存儲(chǔ)管理的基本方法、地址變換機(jī)構(gòu)和頁(yè)表機(jī)制;理解并掌握分段存儲(chǔ)管理的基本原理,領(lǐng)會(huì)分頁(yè)與分段的主要區(qū)別;了解并領(lǐng)會(huì)段頁(yè)式存儲(chǔ)管理方式;第五章存儲(chǔ)器管理華北電力大學(xué)計(jì)算機(jī)系重點(diǎn)動(dòng)態(tài)分區(qū)分配;分頁(yè)存儲(chǔ)管理的基本方法;分頁(yè)存儲(chǔ)管理方式的地址變換機(jī)構(gòu);分頁(yè)存儲(chǔ)管理方式的頁(yè)表機(jī)制;分段存儲(chǔ)管理的基本原理。難點(diǎn)動(dòng)態(tài)分區(qū)分配算法;動(dòng)態(tài)重定位分區(qū)分配算法;分頁(yè)存儲(chǔ)管理具有快表的地址變換機(jī)構(gòu);段頁(yè)式存

2、儲(chǔ)管理的地址變換過(guò)程。第五章存儲(chǔ)器管理華北電力大學(xué)計(jì)算機(jī)系5.1.1 程序的裝入5.1.2 程序的鏈接5.1 程序的裝入和鏈接華北電力大學(xué)計(jì)算機(jī)系程序在成為進(jìn)程前的準(zhǔn)備工作編輯:形成源文件編譯:形成目標(biāo)模塊鏈接:由多個(gè)目標(biāo)模塊或程序庫(kù)生成裝入模塊裝入:將裝入模塊裝入內(nèi)存5.1.1 程序的裝入庫(kù)編譯程序編輯程序鏈接程序裝入程序內(nèi)存源文件目標(biāo)模塊目標(biāo)模塊裝入模塊.華北電力大學(xué)計(jì)算機(jī)系名字空間、地址空間、重定位和存儲(chǔ)空間名字空間在源程序中,是通過(guò)符號(hào)名來(lái)訪問(wèn)子程序和數(shù)據(jù)的,我們把程序中符號(hào)名的集合稱(chēng)為“名字空間”。地址空間目標(biāo)程序是以“0”作為參考地址的模塊,我們把目標(biāo)模塊中的地址稱(chēng)為相對(duì)地址(或稱(chēng)

3、為“邏輯地址”、“虛地址”),而把相對(duì)地址的集合稱(chēng)為“相對(duì)地址空間”或簡(jiǎn)稱(chēng)為“地址空間”。5.1.1 程序的裝入華北電力大學(xué)計(jì)算機(jī)系3. 存儲(chǔ)空間我們把這一內(nèi)存中存儲(chǔ)單元的地址稱(chēng)為物理地址(絕對(duì)地址,實(shí)地址),其集合稱(chēng)為“絕對(duì)地址空間”或“存儲(chǔ)空間”。4. 重定位裝配模塊雖然具有統(tǒng)一的地址空間,但是仍是以“0”作為參考地址。要把它裝入內(nèi)存執(zhí)行,就要確定裝入內(nèi)存的實(shí)際物理地址,并修改程序中與地址有關(guān)的代碼,這一過(guò)程稱(chēng)為地址重定位。所謂地址重定位是指把地址空間中的邏輯地址轉(zhuǎn)換為存儲(chǔ)空間的物理地址的過(guò)程又稱(chēng)為地址映射。由操作系統(tǒng)中的裝入程序loader來(lái)完成。地址重定位的方式有靜態(tài)重定位和動(dòng)態(tài)重定位

4、。5.1.1 程序的裝入華北電力大學(xué)計(jì)算機(jī)系5.1.1 程序的裝入存儲(chǔ)空間(絕對(duì)地址/物理地址/虛地址)名字空間(符號(hào)地址) 符 號(hào)源 程 序相對(duì)目標(biāo)程序(裝配模塊)絕對(duì)目標(biāo)程序 編譯鏈接 地址重定位 裝 入地址空間(相對(duì)地址/邏輯地址/虛地址)華北電力大學(xué)計(jì)算機(jī)系絕對(duì)裝入方式(Absolute Loading Mode)在可執(zhí)行文件中記錄內(nèi)存地址,裝入時(shí)直接定位在上述(即文件中記錄的地址)內(nèi)存地址。優(yōu)點(diǎn):裝入過(guò)程簡(jiǎn)單。缺點(diǎn):過(guò)于依賴(lài)于硬件結(jié)構(gòu),不適于多道程序系統(tǒng)。5.1.1 程序的裝入華北電力大學(xué)計(jì)算機(jī)系可重定位裝入方式(Relocatable Loading Mode)即靜態(tài)重定位,裝人程

5、序把目標(biāo)模塊中的邏輯地址與本程序在內(nèi)存中的起始地址相加得到正確的物理地址。0: 10000: 1000: LOAD 1,2500 11000: LOAD 1,12500 2500: 365 12500: 365 2600: 12600: 地址空間 存儲(chǔ)空間優(yōu)點(diǎn):不需硬件支持,可以裝入多道程序缺點(diǎn):一個(gè)程序通常需要占用連續(xù)的內(nèi)存空間,程序裝入內(nèi)存后不能移動(dòng)。不易實(shí)現(xiàn)共享。5.1.1 程序的裝入華北電力大學(xué)計(jì)算機(jī)系動(dòng)態(tài)運(yùn)行時(shí)裝入方式(Dynamic Run-Tme Loading Mode) 即動(dòng)態(tài)重定位,是在程序運(yùn)行時(shí)完成的,靠硬件地址變換機(jī)構(gòu)實(shí)現(xiàn)。裝入內(nèi)存的地址仍是相對(duì)地址。最簡(jiǎn)單的辦法是利用

6、一個(gè)重定位寄存器。在程序?qū)嶋H運(yùn)行前,由操作系統(tǒng)把程序在內(nèi)存的起始地址送入重定位寄存器。在程序運(yùn)行期間,凡遇到訪問(wèn)內(nèi)存的操作,就由硬件機(jī)制自動(dòng)地把用戶程序的相對(duì)地址與重定位寄存器的內(nèi)容相加,其和就是實(shí)際訪問(wèn)內(nèi)存的有效地址。5.1.1 程序的裝入華北電力大學(xué)計(jì)算機(jī)系 重定位寄存器 0: 10000: 100: LOAD 1,2500 10100: LOAD 1,2500 + 2500:365 12500: 365 5000: 15000: 地址空間 存儲(chǔ)空間優(yōu)點(diǎn):OS可以將一個(gè)程序分散存放于不連續(xù)的內(nèi)存空間,可以移動(dòng)程序,有利用實(shí)現(xiàn)共享。缺點(diǎn):需要硬件支持,OS實(shí)現(xiàn)較復(fù)雜。5.1.1 程序的裝入1

7、00002500華北電力大學(xué)計(jì)算機(jī)系程序的目標(biāo)模塊在裝入內(nèi)存時(shí),與地址有關(guān)的指令都無(wú)須進(jìn)行修改,如在圖中LOAD 1,2500這條指令中仍保持相對(duì)地址2500。當(dāng)該模塊被操作系統(tǒng)調(diào)度到處理機(jī)上執(zhí)行時(shí),操作系統(tǒng)首先把該模塊裝入的實(shí)際起始地址減去目標(biāo)模塊的相對(duì)基地址(圖中該模塊的基地址為0),然后將其差值裝入重定位寄存器。當(dāng)CPU取一條訪問(wèn)內(nèi)存的指令時(shí),地址變換硬件邏輯自動(dòng)將指令中的相對(duì)地址與重定位寄存器中的值相加,再根據(jù)和值作為內(nèi)存的絕對(duì)地址去訪問(wèn)該單元的數(shù)據(jù)。5.1.1 程序的裝入華北電力大學(xué)計(jì)算機(jī)系鏈接程序的功能是將經(jīng)過(guò)編譯或匯編得到的一組目標(biāo)模塊以及它們所需的庫(kù)函數(shù),裝配成一個(gè)完整的裝入模

8、塊,實(shí)現(xiàn)鏈接的方法有三種:靜態(tài)鏈接、裝入時(shí)動(dòng)態(tài)鏈接和運(yùn)行時(shí)動(dòng)態(tài)鏈接。5.1.2 程序的鏈接華北電力大學(xué)計(jì)算機(jī)系5.1.2 程序的鏈接靜態(tài)鏈接(Static Linking)事先進(jìn)行鏈接,形成一個(gè)完整的裝入模塊,即可執(zhí)行模塊,以后不再拆開(kāi),要運(yùn)行時(shí)可直接調(diào)入內(nèi)存。對(duì)相對(duì)地址進(jìn)行修改變換外部調(diào)用符號(hào)華北電力大學(xué)計(jì)算機(jī)系5.1.2 程序的鏈接裝入時(shí)動(dòng)態(tài)鏈接(Load-Time Dynamic Linking)目標(biāo)模塊在裝入內(nèi)存時(shí),邊裝入邊鏈接,即在裝入一個(gè)目標(biāo)模塊時(shí),若發(fā)生一個(gè)外部模塊調(diào)用,將引起裝入程序去找出相應(yīng)的外部目標(biāo)模塊,并將之裝入內(nèi)存。優(yōu)點(diǎn)便于軟件版本的修改和更新便于實(shí)現(xiàn)目標(biāo)模塊的共享缺點(diǎn)

9、進(jìn)程執(zhí)行期間,裝入模塊是不改變的每次運(yùn)行時(shí),裝入模塊都是相同的運(yùn)行時(shí)動(dòng)態(tài)鏈接(Run-Time Dynamic Linking)將某些目標(biāo)模塊的鏈接,推遲到執(zhí)行時(shí)在進(jìn)行,即在執(zhí)行過(guò)程中,若發(fā)現(xiàn)一個(gè)被調(diào)用模塊尚未裝入內(nèi)存,由OS去找到該模塊,將它裝入內(nèi)存,并把它鏈接到調(diào)用模塊上。華北電力大學(xué)計(jì)算機(jī)系5.1.2 程序的鏈接Windows NT動(dòng)態(tài)鏈接庫(kù)構(gòu)造動(dòng)態(tài)鏈接庫(kù)DLL是包含函數(shù)和數(shù)據(jù)的模塊,它的調(diào)用模塊可為EXE或DLL,它由調(diào)用模塊在運(yùn)行時(shí)加載;加載時(shí),它被映射到調(diào)用進(jìn)程的地址空間。在VC中有一類(lèi)工程用于創(chuàng)建DLL。庫(kù)程序文件 .C:相當(dāng)于給出一組函數(shù)定義的源代碼;模塊定義文件 .DEF:相

10、當(dāng)于定義鏈接選項(xiàng),也可在源代碼中定義;如:DLL中函數(shù)的引入和引出(dllimport和dllexport)。編譯程序利用 .C文件生成目標(biāo)模塊 .OBJ庫(kù)管理程序利用 .DEF文件生成DLL輸入庫(kù) .LIB和輸出文件 .EXP鏈接程序利用 .OBJ和 .EXP文件生成動(dòng)態(tài)鏈接庫(kù) .DLL。華北電力大學(xué)計(jì)算機(jī)系5.1.2 程序的鏈接DLL的裝入方法裝入時(shí)動(dòng)態(tài)鏈接在編程時(shí)顯式調(diào)用某個(gè)DLL函數(shù),該DLL函數(shù)在可執(zhí)行文件中稱(chēng)為引入(import)函數(shù)。鏈接時(shí)需利用 .LIB文件。在可執(zhí)行文件中為引入的每個(gè)DLL建立一個(gè)IMAGE_IMPORT_DESCRIPTOR結(jié)構(gòu)。在裝入時(shí)由系統(tǒng)根據(jù)該DLL映

11、射在進(jìn)程中的地址改寫(xiě)Import Address Table中的各項(xiàng)函數(shù)指針。Hint是DLL函數(shù)在DLL文件中的序號(hào),當(dāng)DLL文件修改后,就未必指向原先的DLL函數(shù)。在裝入時(shí),系統(tǒng)會(huì)查找相應(yīng)DLL,并把它映射到進(jìn)程地址空間,獲得DLL中各函數(shù)的入口地址,定位本進(jìn)程中對(duì)這些函數(shù)的引用;華北電力大學(xué)計(jì)算機(jī)系5.1.2 程序的鏈接裝入時(shí)動(dòng)態(tài)鏈接過(guò)程注:Import Address Table是在裝入時(shí)依據(jù)DLL模塊的加載位置確定。華北電力大學(xué)計(jì)算機(jī)系5.1.2 程序的鏈接 DLL函數(shù)的調(diào)用過(guò)程華北電力大學(xué)計(jì)算機(jī)系5.1.2 程序的鏈接運(yùn)行時(shí)動(dòng)態(tài)鏈接(run-time):在編程時(shí)通過(guò)LoadLibr

12、ary(給出DLL名稱(chēng),返回裝入和鏈接之后該DLL的句柄), FreeLibrary, GetProcAddress(其參數(shù)包括函數(shù)的符號(hào)名稱(chēng),返回該函數(shù)的入口指針)等API來(lái)使用DLL函數(shù)。這時(shí)不再需要引入庫(kù)(import library)。LoadLibrary或LoadLibraryEx把可執(zhí)行模塊映射到調(diào)用進(jìn)程的地址空間,返回模塊句柄;GetProcAddress獲得DLL中特定函數(shù)的指針,返回函數(shù)指針;FreeLibrary把DLL模塊的引用計(jì)數(shù)減1;當(dāng)引用計(jì)數(shù)為0時(shí),拆除DLL模塊到進(jìn)程地址空間的映射;華北電力大學(xué)計(jì)算機(jī)系5.1.2 程序的鏈接運(yùn)行時(shí)動(dòng)態(tài)鏈接的例子HINSTANCE

13、 hInstLibrary;/模塊句柄定義DWORD (WINAPI *InstallStatusMIF)(char*, char*, char*, char*, char*, char*, char*, BOOL);/函數(shù)指針定義if (hInstLibrary = LoadLibrary(ismif32.dll)/映射 InstallStatusMIF = (DWORD (WINAPI *)(char*,char*,char*, char*, char*, char*, char*, BOOL) GetProcAddress(hInstLibrary, InstallStatusMIF);

14、/獲得函數(shù)指針if (InstallStatusMIF) if (InstallStatusMIF(“office97”, “Microsoft”, “Office 97”, “999.999”, “ENU”, “1234”, ”Completed successfully”, TRUE) !=0)/調(diào)用DLL模塊中的函數(shù)FreeLibrary(hInstLibrary);/拆除映射 華北電力大學(xué)計(jì)算機(jī)系連續(xù)分配是指為一個(gè)用戶程序分配一個(gè)連續(xù)的內(nèi)存空間,有兩種方式,即單一連續(xù)分配方式和分區(qū)分配方式。其中,分區(qū)分配方式是一種可用于多道程序的較簡(jiǎn)單的存儲(chǔ)管理方式,它又可以進(jìn)一步細(xì)分為固定分區(qū)方式和

15、可變(動(dòng)態(tài))分區(qū)方式。5.2.1 單一連續(xù)分配5.2.2 固定分區(qū)分配5.2.3 動(dòng)態(tài)分區(qū)分配5.2.4 動(dòng)態(tài)重定向分區(qū)分配5.2.5 MS DOS中的分區(qū)存儲(chǔ)管理5.2 連續(xù)分配存儲(chǔ)管理方式華北電力大學(xué)計(jì)算機(jī)系這是一種最簡(jiǎn)單的存儲(chǔ)管理方式,但只能用于單用戶、單任務(wù)的操作系統(tǒng),如在8位和16位微機(jī)上CP/M和MS-DOS操作系統(tǒng)。它將內(nèi)存分為兩個(gè)區(qū): 系統(tǒng)區(qū):僅供操作系統(tǒng)使用,通常設(shè)置在內(nèi)存的低段; 用戶區(qū):指除系統(tǒng)區(qū)以外的全部?jī)?nèi)存空間,提供給用戶使用。地址重定位時(shí),只要將指令或數(shù)據(jù)的邏輯地址加上用戶區(qū)基地址,就可以形成物理地址。為了防止操作系統(tǒng)程序受到用戶程序有意或無(wú)意的破壞,需要設(shè)置內(nèi)存保

16、護(hù)機(jī)構(gòu),如采用基址寄存器和界限寄存器機(jī)制。5.2.1 單一連續(xù)分配華北電力大學(xué)計(jì)算機(jī)系5.2.1 單一連續(xù)分配界限寄存器重定位寄存器 (基址)+CPU內(nèi)存地址錯(cuò)邏輯地址YN物理地址u.size m.size-u.sizesize?從該分區(qū)中劃出u.size大小的分區(qū)繼續(xù)檢索下一個(gè)表項(xiàng)將該表目以上的所有表目下移一格將該分區(qū)分配給申請(qǐng)者修改有關(guān)的數(shù)據(jù)結(jié)構(gòu) 返 回YNNYNY 返 回華北電力大學(xué)計(jì)算機(jī)系回收內(nèi)存當(dāng)一個(gè)作業(yè)運(yùn)行完畢釋放內(nèi)存時(shí),系統(tǒng)根據(jù)釋放區(qū)的首地址,從空閑區(qū)說(shuō)明表中找到相應(yīng)的插入點(diǎn),此時(shí)可能出現(xiàn)下列四種情況(如下圖所示,其中F1,F(xiàn)2表示回收區(qū)的前、后空閑區(qū)):當(dāng)回收區(qū)只與插入點(diǎn)的前一

17、個(gè)分區(qū)F1相領(lǐng)接時(shí),應(yīng)將回收區(qū)與插入點(diǎn)的前一個(gè)分區(qū)合并,不再為回收區(qū)分配新的表目,而只需修改F1分區(qū)表目的大小m_size即可。5.2.3 動(dòng)態(tài)分區(qū)分配 F1回收區(qū)華北電力大學(xué)計(jì)算機(jī)系當(dāng)回收區(qū)只與插入點(diǎn)的后一個(gè)分區(qū)F2相領(lǐng)接時(shí),將把兩個(gè)空閑區(qū)合并,修改F2分區(qū)的表目,把回收區(qū)的起址作為新空閑區(qū)的起址,大小為兩個(gè)分區(qū)之和。5.2.3 動(dòng)態(tài)分區(qū)分配 回收區(qū) F2華北電力大學(xué)計(jì)算機(jī)系回收區(qū)與插入點(diǎn)的前、后兩個(gè)分區(qū)(F1和F2)都相領(lǐng)接時(shí)(如D),合并三個(gè)分區(qū),用F1表目的起址作為新空閑區(qū)的起址,修改其大小為三塊分區(qū)之和,最后取消F2的表目。5.2.3 動(dòng)態(tài)分區(qū)分配 F1回收區(qū) F2華北電力大學(xué)計(jì)算機(jī)

18、系當(dāng)回收區(qū)既不與F1領(lǐng)接,又不與F2領(lǐng)接時(shí)(如A),應(yīng)為回收區(qū)單獨(dú)建立一項(xiàng)新表目,填寫(xiě)回收區(qū)的起址和大小,并根據(jù)其起址,插入到空閑區(qū)說(shuō)明表的適當(dāng)位置。5.2.3 動(dòng)態(tài)分區(qū)分配 回收區(qū) 華北電力大學(xué)計(jì)算機(jī)系回收流程5.2.3 動(dòng)態(tài)分區(qū)分配是否否是是否將該表目以上的所有表目上移一格,并插入新釋放的可用區(qū)表目順序地檢索可用資源表直至找到某表目的m.addraa或m.size=0不是第一個(gè)表目且與前一可用區(qū) 相鄰?與后一可用分區(qū)相鄰且不為空表 目? 把所釋放的可用區(qū) 與前一分區(qū)合并所釋放的可用區(qū)與后一可用區(qū)合并所釋放可用區(qū)的size=0 ?與后一可用 區(qū) 相鄰? 與后一可用區(qū)合并將該表目以上的所有表目

19、下移一格 返 回mfree是否華北電力大學(xué)計(jì)算機(jī)系拼接/緊湊雖然可能所有零頭的總和超過(guò)某一個(gè)作業(yè)的要求,但是由于不連續(xù)而無(wú)法分配。解決零頭的方法是拼接(或稱(chēng)緊湊),即向一個(gè)方向(例如向低地址端)移動(dòng)已分配的作業(yè),使那些零散的小空閑區(qū)在另一方向連成一片。分區(qū)的拼接技術(shù),一方面是要求能夠?qū)ψ鳂I(yè)進(jìn)行重定位,另一方面系統(tǒng)在拼接時(shí)要耗費(fèi)較多的時(shí)間5.2.4 動(dòng)態(tài)重定向分區(qū)分配華北電力大學(xué)計(jì)算機(jī)系5.2.4 動(dòng)態(tài)重定向分區(qū)分配操作系統(tǒng)用戶程序110KB用戶程序330KB用戶程序614KB用戶程序926KB操作系統(tǒng)用戶程序1用戶程序3用戶程序6用戶程序980KB緊湊前緊湊后華北電力大學(xué)計(jì)算機(jī)系重定位寄存器

20、0: 10000: 100: LOAD 1,2500 10100: LOAD 1,2500 + 2500:365 12500: 365 5000: 15000: 地址空間 存儲(chǔ)空間5.2.4 動(dòng)態(tài)重定向分區(qū)分配100002500動(dòng)態(tài)重定位華北電力大學(xué)計(jì)算機(jī)系動(dòng)態(tài)重定位分區(qū)分配算法 動(dòng)態(tài)重定位分區(qū)管理中何時(shí)進(jìn)行存儲(chǔ)器緊縮有二種不同的解決辦法:在某個(gè)分區(qū)被釋放后立即進(jìn)行緊縮,系統(tǒng)總是只有一個(gè)連續(xù)的分區(qū)而無(wú)碎片,此法很花費(fèi)機(jī)時(shí)。當(dāng)“請(qǐng)求分配模塊”找不到足夠大的自由分區(qū)分給用戶時(shí)再進(jìn)行緊縮,這樣緊縮的次數(shù)比上種方法少得多,但管理復(fù)雜。采用此法的動(dòng)態(tài)重定位分區(qū)分配算法流程如下:5.2.4 動(dòng)態(tài)重定向分區(qū)

21、分配華北電力大學(xué)計(jì)算機(jī)系動(dòng)態(tài)重定位分區(qū)分配算法流程5.2.4 動(dòng)態(tài)重定向分區(qū)分配請(qǐng)求分配u.size分區(qū)檢索空閑分區(qū)鏈(表)無(wú)法分配 返回空閑分區(qū)總和u.size找到大于u.size的可用 區(qū)否? 進(jìn)行緊湊形成 連續(xù)空閑區(qū)修改有關(guān)的數(shù)據(jù)結(jié)構(gòu) 按動(dòng)態(tài)分區(qū)方式 進(jìn)行分配修改有關(guān)的 數(shù)據(jù)結(jié)構(gòu)返回分區(qū)號(hào) 及首址是否否是華北電力大學(xué)計(jì)算機(jī)系DOS提供動(dòng)態(tài)分區(qū)管理;通過(guò)DOS功能調(diào)用int 21h,支持分區(qū)的創(chuàng)建(48h)、釋放(49h)和改變分區(qū)大小(4Ah)設(shè)置或查詢(xún)分區(qū)的分配策略(58h):最先匹配法、最佳匹配法、最后匹配法(last-fit,從內(nèi)存高端向低端查找)5.2.5 MS DOS中的分區(qū)存

22、儲(chǔ)管理華北電力大學(xué)計(jì)算機(jī)系數(shù)據(jù)結(jié)構(gòu)為單向鏈表。每個(gè)分區(qū)以一個(gè)MCB(Memory Control Block)結(jié)構(gòu)開(kāi)始,MCB占16個(gè)字節(jié),按段邊界對(duì)齊(起始地址可被16整除)PSP(Program Segment Prefix):起進(jìn)程控制塊的作用,其起始地址可作為進(jìn)程IDtypedef struct BYTE type;/* M = in chain; Z = at end*/ WORD owner;/* PSP of the owner process, 0 = free */ WORD size;/* in 16-byte paragraphs */ BYTE unused3; BYT

23、E dos48;/* program name(DOS 4.x)*/ MCB;5.2.5 MS DOS中的分區(qū)存儲(chǔ)管理華北電力大學(xué)計(jì)算機(jī)系5.3.1 覆蓋(overlay)5.3.2 交換(swapping)5.3 覆蓋與交換華北電力大學(xué)計(jì)算機(jī)系引入:其目標(biāo)是在較小的可用內(nèi)存中運(yùn)行較大的程序。常用于多道程序系統(tǒng),與分區(qū)存儲(chǔ)管理配合使用。原理:一個(gè)程序的幾個(gè)代碼段或數(shù)據(jù)段,按照時(shí)間先后來(lái)占用公共的內(nèi)存空間。將程序的必要部分(常用功能)的代碼和數(shù)據(jù)常駐內(nèi)存;可選部分(不常用功能)在其他程序模塊中實(shí)現(xiàn),平時(shí)存放在外存中(覆蓋文件),在需要用到時(shí)才裝入到內(nèi)存;不存在調(diào)用關(guān)系的模塊不必同時(shí)裝入到內(nèi)存,從

24、而可以相互覆蓋。(即不同時(shí)用的模塊可共用一個(gè)分區(qū))5.3.1 覆蓋華北電力大學(xué)計(jì)算機(jī)系5.3.1 覆蓋華北電力大學(xué)計(jì)算機(jī)系缺點(diǎn):編程時(shí)必須劃分程序模塊和確定程序模塊之間的覆蓋關(guān)系,增加編程復(fù)雜度。從外存裝入覆蓋文件,以時(shí)間延長(zhǎng)來(lái)?yè)Q取空間節(jié)省。5.3.1 覆蓋華北電力大學(xué)計(jì)算機(jī)系交換技術(shù)最早用在麻省理工學(xué)院的兼容分時(shí)系統(tǒng)CTSS中,該系統(tǒng)是單用戶系統(tǒng),所有用戶都駐留在外存的后備隊(duì)列中,每次只調(diào)入一個(gè)作業(yè)進(jìn)入內(nèi)存運(yùn)行,此作業(yè)的時(shí)間的時(shí)間片用完時(shí),又將該作業(yè)調(diào)至外存,再將后備隊(duì)列中的一個(gè)作業(yè)調(diào)入內(nèi)存運(yùn)行一個(gè)時(shí)間片。這是早期的簡(jiǎn)單分時(shí)系統(tǒng),它采用早期的交換(調(diào)進(jìn)凋出)來(lái)滿足多個(gè)程序共享主存的需要。5.

25、3.2 交換華北電力大學(xué)計(jì)算機(jī)系5.3.2 交換華北電力大學(xué)計(jì)算機(jī)系多道程序環(huán)境下的對(duì)換 在多道程序環(huán)境下為了提高內(nèi)存和CPU的利用率,增加系統(tǒng)吞吐量,系統(tǒng)中增設(shè)了對(duì)換,把內(nèi)存中暫不能運(yùn)行的進(jìn)程調(diào)出到外存上,以騰出足夠的內(nèi)存空間,把已具備運(yùn)行條件的進(jìn)程換入內(nèi)存。 UNIX早期已引入對(duì)換功能并一直保留至今,UNIX系統(tǒng)設(shè)置一個(gè)對(duì)換進(jìn)程完成以上功能。為了實(shí)現(xiàn)進(jìn)程對(duì)換,系統(tǒng)必須能實(shí)現(xiàn)對(duì)對(duì)換空間的管理,進(jìn)程換入和進(jìn)程換出等三項(xiàng)功能。 5.3.2 交換華北電力大學(xué)計(jì)算機(jī)系對(duì)換空間的管理外存分為文件區(qū)和對(duì)換區(qū)。文件區(qū)用于存放文件,對(duì)文件區(qū)管理目標(biāo)是提高文件存儲(chǔ)空間的利用率,為此系統(tǒng)采用離散分散方式;對(duì)換區(qū)

26、用于存放從內(nèi)存頻繁換出的進(jìn)程,它的管理目標(biāo)是提高進(jìn)程換入換出速度,為此系統(tǒng)采用連續(xù)分配方式。UNIX對(duì)換區(qū)采用空閑分區(qū)表和首次適應(yīng)算法的動(dòng)態(tài)分區(qū)管理,類(lèi)同早期內(nèi)存管理。5.3.2 交換華北電力大學(xué)計(jì)算機(jī)系進(jìn)程的換出與換入當(dāng)內(nèi)核發(fā)現(xiàn)內(nèi)存不足時(shí)調(diào)用對(duì)換進(jìn)程,對(duì)換進(jìn)程檢查駐留在內(nèi)存的進(jìn)程,選擇處于阻塞狀態(tài)的進(jìn)程換出;如無(wú)則選擇優(yōu)先級(jí)低的駐留內(nèi)存時(shí)間長(zhǎng)的處于就緒狀態(tài)的進(jìn)程換出。而當(dāng)內(nèi)存又空時(shí)對(duì)換進(jìn)程在對(duì)換區(qū)中選擇換出時(shí)間長(zhǎng)的處于就緒態(tài)的進(jìn)程調(diào)入。5.3.2 交換華北電力大學(xué)計(jì)算機(jī)系優(yōu)點(diǎn)增加并發(fā)運(yùn)行的程序數(shù)目,并且給用戶提供適當(dāng)?shù)捻憫?yīng)時(shí)間;編寫(xiě)程序時(shí)不影響程序結(jié)構(gòu)缺點(diǎn)對(duì)換入和換出的控制增加處理機(jī)開(kāi)銷(xiāo);程

27、序整個(gè)地址空間都進(jìn)行傳送。5.3.2 交換華北電力大學(xué)計(jì)算機(jī)系5.4.1 分頁(yè)存儲(chǔ)管理的基本方法5.4.2 地址變換機(jī)構(gòu)5.4.3 兩級(jí)和多級(jí)頁(yè)表5.4.4 反置頁(yè)表5.4 分頁(yè)存儲(chǔ)管理方式華北電力大學(xué)計(jì)算機(jī)系5.4.1 分頁(yè)存儲(chǔ)管理的基本方法頁(yè)面和物理塊分頁(yè)存儲(chǔ)管理是將一個(gè)進(jìn)程的地址空間劃分成若干個(gè)大小相等的區(qū)域,稱(chēng)為頁(yè)或頁(yè)面相應(yīng)地,將內(nèi)存空間劃分成與頁(yè)相同大小的若干個(gè)存儲(chǔ)塊,稱(chēng)為物理塊或頁(yè)框。在為進(jìn)程分配內(nèi)存時(shí),將進(jìn)程中的若干頁(yè)分別裝入多個(gè)不相鄰接的塊中。華北電力大學(xué)計(jì)算機(jī)系5.4.1 分頁(yè)存儲(chǔ)管理的基本方法華北電力大學(xué)計(jì)算機(jī)系5.4.1 分頁(yè)存儲(chǔ)管理的基本方法華北電力大學(xué)計(jì)算機(jī)系優(yōu)點(diǎn):沒(méi)

28、有外碎片頁(yè)內(nèi)碎片(進(jìn)程的最后一頁(yè)經(jīng)常裝不滿一塊,形成的不可利用利用的碎片)不超過(guò)頁(yè)大小。一個(gè)程序不必連續(xù)存放。缺點(diǎn):程序全部裝入內(nèi)存。5.4.1 分頁(yè)存儲(chǔ)管理的基本方法華北電力大學(xué)計(jì)算機(jī)系5.4.1 分頁(yè)存儲(chǔ)管理的基本方法地址結(jié)構(gòu)分頁(yè)系統(tǒng)的地址結(jié)構(gòu)如下圖所示,它由兩部分組成:前部分為頁(yè)號(hào)P;后一部分為位移量W,即頁(yè)內(nèi)地址d。圖中的地址長(zhǎng)度為32位,其中011位為頁(yè)內(nèi)地址(每頁(yè)的大小為4KB),1231位為頁(yè)號(hào),所以允許地址空間的大小最多為1MB個(gè)頁(yè)。若給定邏輯地址A,頁(yè)面大小L,則例如:L=1kB,A=2170B,則,P=2,d=122 頁(yè)號(hào) P 位移量W31 12 11 0華北電力大學(xué)計(jì)算機(jī)

29、系頁(yè)表在將進(jìn)程的每一頁(yè)離散地分配到內(nèi)存的多個(gè)物理塊中后,系統(tǒng)應(yīng)能保證能在內(nèi)存中找到每個(gè)頁(yè)面所對(duì)應(yīng)的物理塊。為此,系統(tǒng)為每個(gè)進(jìn)程建立了一張頁(yè)面映射表,簡(jiǎn)稱(chēng)頁(yè)表(如下圖所示)。每個(gè)頁(yè)在頁(yè)表中占一個(gè)表項(xiàng),記錄該頁(yè)在內(nèi)存中對(duì)應(yīng)的物理塊號(hào)。進(jìn)程在執(zhí)行時(shí),通過(guò)查找頁(yè)表,就可以找到每頁(yè)所對(duì)應(yīng)的物理塊號(hào)??梢?jiàn),頁(yè)表的作用是實(shí)現(xiàn)從頁(yè)號(hào)到物理塊號(hào)的地址映射。5.4.1 分頁(yè)存儲(chǔ)管理的基本方法頁(yè)號(hào)塊號(hào)存儲(chǔ)控制0213華北電力大學(xué)計(jì)算機(jī)系5.4.1 分頁(yè)存儲(chǔ)管理的基本方法華北電力大學(xué)計(jì)算機(jī)系頁(yè)面大小的選擇由機(jī)器的地址結(jié)構(gòu)所決定的,即由硬件所決定。某一種機(jī)器只能采用一種大小的頁(yè)面。通常是:幾KB到幾十KB。小內(nèi)碎片小,

30、內(nèi)存利用率高,但頁(yè)面數(shù)目多,使頁(yè)表過(guò)長(zhǎng),占大量?jī)?nèi)存,管理開(kāi)銷(xiāo)大;大頁(yè)表短,管理開(kāi)銷(xiāo)小,內(nèi)碎片大,內(nèi)存利用率低5.4.1 分頁(yè)存儲(chǔ)管理的基本方法華北電力大學(xué)計(jì)算機(jī)系地址變換機(jī)構(gòu)的基本任務(wù)是利用頁(yè)表把用戶程序中的邏輯地址變換成內(nèi)存中的物理地址,實(shí)際上就要將用戶程序中的頁(yè)號(hào)變換成內(nèi)存中的物理塊號(hào)。5.4.2 地址變換機(jī)構(gòu)華北電力大學(xué)計(jì)算機(jī)系基本的地址變換機(jī)構(gòu)為了實(shí)現(xiàn)地址變換功能,在系統(tǒng)中設(shè)置頁(yè)表寄存器,用來(lái)存放頁(yè)表的始址和頁(yè)表的長(zhǎng)度。在進(jìn)程未執(zhí)行時(shí),每個(gè)進(jìn)程對(duì)應(yīng)的頁(yè)表的始址和長(zhǎng)度存放在進(jìn)程的PCB中,當(dāng)該進(jìn)程被調(diào)度時(shí),就將它們裝入頁(yè)表寄存器。當(dāng)進(jìn)程訪問(wèn)某個(gè)邏輯地址中的數(shù)據(jù)時(shí),分頁(yè)地址變換機(jī)構(gòu)自動(dòng)地將

31、邏輯地址分為頁(yè)號(hào)和頁(yè)內(nèi)地址兩部分,送入邏輯地址寄存器;將頁(yè)號(hào)與頁(yè)表長(zhǎng)度進(jìn)行比較,如果頁(yè)號(hào)大于頁(yè)表長(zhǎng)度,則訪問(wèn)越界,產(chǎn)生越界中斷。如未出現(xiàn)越界,則將頁(yè)表始址加上頁(yè)號(hào)與頁(yè)表項(xiàng)大小的乘積,計(jì)算出該頁(yè)在頁(yè)表中的位置,得到該頁(yè)的物理塊號(hào),將此物理塊號(hào)裝入物理地址寄存器中。與此同時(shí),將邏輯地址寄存器中頁(yè)內(nèi)地址直接裝入物理地址寄存器的塊內(nèi)地址字段中,這樣便完成了從邏輯地址到物理地址的變換。5.4.2 地址變換機(jī)構(gòu)華北電力大學(xué)計(jì)算機(jī)系 越界中斷 頁(yè)表寄存器 邏輯地址2500 頁(yè)號(hào) 塊 號(hào) 0 1 2 每頁(yè)1KB(1024) 物理地址5572 5*1024+452塊號(hào)5 塊內(nèi)地址452 頁(yè) 號(hào)2 頁(yè)內(nèi)地址452

32、頁(yè)表始址 頁(yè)表長(zhǎng)度2 4 55.4.2 地址變換機(jī)構(gòu)華北電力大學(xué)計(jì)算機(jī)系5.4.2 地址變換機(jī)構(gòu)華北電力大學(xué)計(jì)算機(jī)系5.4.2 地址變換機(jī)構(gòu)華北電力大學(xué)計(jì)算機(jī)系5.4.2 地址變換機(jī)構(gòu)華北電力大學(xué)計(jì)算機(jī)系具有快表的地址變換機(jī)構(gòu)如果頁(yè)表存放在內(nèi)存中,則每次訪問(wèn)內(nèi)存時(shí),都要先訪問(wèn)內(nèi)存中的頁(yè)表,然后根據(jù)所形成的物理地址再訪問(wèn)內(nèi)存。這樣CPU存取一個(gè)數(shù)據(jù)必須訪問(wèn)兩次內(nèi)存,從而使計(jì)算機(jī)的處理速度降低了1/2。為了提高地址變換的速度,在地址變換機(jī)構(gòu)中增設(shè)了一個(gè)具有并行查詢(xún)功能的特殊的高速緩沖存儲(chǔ)器,稱(chēng)為“聯(lián)想存儲(chǔ)器”或“快表”,用以存放當(dāng)前訪問(wèn)的那些頁(yè)表項(xiàng)。此時(shí)地址變換過(guò)程為:在CPU給出有效地址后,地址

33、變換機(jī)構(gòu)自動(dòng)地將頁(yè)號(hào)送入高速緩存,確定所需要的頁(yè)是否在快表中。若是,則直接讀出該頁(yè)所對(duì)應(yīng)的物理塊號(hào),送入物理地址寄存器;若在快表中未找到對(duì)應(yīng)的頁(yè)表項(xiàng),則需再訪問(wèn)內(nèi)存中的頁(yè)表,找到后,把從頁(yè)表中讀出的頁(yè)表項(xiàng)存入快表中的一個(gè)寄存器單元中,以取代一個(gè)舊的頁(yè)表項(xiàng)。5.4.2 地址變換機(jī)構(gòu)華北電力大學(xué)計(jì)算機(jī)系 越界中斷 頁(yè)表寄存器 邏輯地址頁(yè) 號(hào) 塊 號(hào)頁(yè)號(hào) 塊號(hào) 0 2 0 1 4 1 2 5 2 快 表 頁(yè) 表 物理地址 頁(yè) 號(hào) 頁(yè)內(nèi)地址頁(yè)表始址 頁(yè)表長(zhǎng)度 2 4 5塊號(hào) 塊內(nèi)地址 輸入寄存器5.4.2 地址變換機(jī)構(gòu)華北電力大學(xué)計(jì)算機(jī)系5.4.2 地址變換機(jī)構(gòu)華北電力大學(xué)計(jì)算機(jī)系5.4.2 地址變換

34、機(jī)構(gòu)華北電力大學(xué)計(jì)算機(jī)系5.4.2 地址變換機(jī)構(gòu)華北電力大學(xué)計(jì)算機(jī)系由于成本的原因,快表不可能做得很大,通常只能存放16512個(gè)頁(yè)表項(xiàng)。例如,在Intel80486中有32個(gè)。這對(duì)中、小型作業(yè)來(lái)說(shuō),已可能把全部頁(yè)表項(xiàng)放入快表中;但對(duì)于大型作業(yè)來(lái)說(shuō),則只能將一部分頁(yè)表放入快表中。通??毂淼拿新士梢赃_(dá)到80%90%。例如,假設(shè)檢索聯(lián)想存儲(chǔ)器的時(shí)間為20ns,訪問(wèn)內(nèi)存的時(shí)間為100ns,訪問(wèn)聯(lián)想存儲(chǔ)器的的命中率為85%,則CPU存取一個(gè)數(shù)據(jù)的平均時(shí)間為T(mén)=0.85*120+0.15*220=135ns,所以訪問(wèn)時(shí)間只增加35%。如果不引入聯(lián)想存儲(chǔ)器,其訪問(wèn)將延長(zhǎng)一倍(達(dá)200ns)。5.4.2 地

35、址變換機(jī)構(gòu)華北電力大學(xué)計(jì)算機(jī)系80386的邏輯地址有232B,如頁(yè)面大小為4KB(212B),則頁(yè)表項(xiàng)達(dá)1M個(gè),每個(gè)頁(yè)表項(xiàng)占用4B,故每個(gè)進(jìn)程的頁(yè)表占用4MB內(nèi)存空間,還要求是連續(xù)的,顯然這是不現(xiàn)實(shí)的。解決的辦法有兩種:一是只將當(dāng)前所需要的部分頁(yè)表項(xiàng)調(diào)入內(nèi)存,其余部分仍然駐留在磁盤(pán)上,需要時(shí)再將它們調(diào)入內(nèi)存。 二是對(duì)頁(yè)表所需的空間,采用離散分配方式,形成兩級(jí)(甚至多級(jí)頁(yè)表);5.4.3 兩級(jí)和多級(jí)頁(yè)表華北電力大學(xué)計(jì)算機(jī)系兩級(jí)頁(yè)表(Two-Level Page Table)基本方法是將頁(yè)表進(jìn)行分頁(yè),每個(gè)頁(yè)面的大小與內(nèi)存物理塊的大小相同,并為它們進(jìn)行編號(hào),可以離散地將各個(gè)頁(yè)面分別存放在不同的物理塊

36、中,為此再建立一張頁(yè)表,稱(chēng)為外層頁(yè)表(頁(yè)表目錄),即第一級(jí)頁(yè)表,其中的每個(gè)表目是頁(yè)表頁(yè)面的物理塊號(hào)。第二級(jí)才是頁(yè)表,其中的每個(gè)表目所存放的才是頁(yè)的物理塊號(hào)。5.4.3 兩級(jí)和多級(jí)頁(yè)表華北電力大學(xué)計(jì)算機(jī)系邏輯地址結(jié)構(gòu)兩級(jí)頁(yè)表系統(tǒng)將32位邏輯地址空間的地址分成三段:其中,頁(yè)表目錄號(hào)(外層頁(yè)號(hào)p1)和頁(yè)號(hào)(外層頁(yè)內(nèi)地址p2)兩項(xiàng)各占10位,偏移量(頁(yè)內(nèi)地址d)占12位。 31 22 21 12 11 05.4.3 兩級(jí)和多級(jí)頁(yè)表 外層頁(yè)號(hào)p1 外層頁(yè)內(nèi)地址p2 頁(yè)內(nèi)地址d華北電力大學(xué)計(jì)算機(jī)系兩級(jí)頁(yè)表結(jié)構(gòu) 第0頁(yè)頁(yè)表(物理塊號(hào)10) 內(nèi) 存 0 1 0 1 1023 2 第1頁(yè)頁(yè)表(物理塊號(hào)25) 0

37、 1 1023 第N頁(yè)頁(yè)表(物理塊號(hào)120) 0 1 1023 外層頁(yè)表 10235.4.3 兩級(jí)和多級(jí)頁(yè)表1025120121432351511520112131432333435151152華北電力大學(xué)計(jì)算機(jī)系兩級(jí)頁(yè)表地址變換機(jī)構(gòu) 外層頁(yè)表 頁(yè)表 物理地址 5.4.3 兩級(jí)和多級(jí)頁(yè)表 外層頁(yè)號(hào)p1 外層頁(yè)內(nèi)地址p2 頁(yè)內(nèi)地址d外層頁(yè)表寄存器+ b d華北電力大學(xué)計(jì)算機(jī)系多級(jí)頁(yè)表SUN SPARC 三級(jí)頁(yè)表5.4.3 兩級(jí)和多級(jí)頁(yè)表華北電力大學(xué)計(jì)算機(jī)系5.4.4 反置頁(yè)表反置頁(yè)表不是依據(jù)進(jìn)程的頁(yè)號(hào)來(lái)組織,而是依據(jù)該進(jìn)程在內(nèi)存中的物理塊號(hào)來(lái)組織(即:按物理塊號(hào)排列)。華北電力大學(xué)計(jì)算機(jī)系5.5

38、.1 分段存儲(chǔ)管理方式的引入5.5.2 分段系統(tǒng)的基本原理5.5.3 共享與保護(hù)5.5.4 段頁(yè)式存儲(chǔ)管理方式5.5 分段存儲(chǔ)管理方式華北電力大學(xué)計(jì)算機(jī)系便于編程 通常用戶常常把自己的作業(yè)按照邏輯關(guān)系劃分成若干個(gè)段,每個(gè)段都有自己的名字,且都從零開(kāi)始編址,這樣,用戶程序再執(zhí)行中可用段名和段內(nèi)地址進(jìn)行訪問(wèn)。例如:LOAD 1,A | 這條指令的含義是將分段A中的D單元內(nèi)的值讀入寄存器1。分段共享 在實(shí)現(xiàn)程序和數(shù)據(jù)的共享時(shí),常常以信息的邏輯單位為基礎(chǔ),而分頁(yè)系統(tǒng)中的每一頁(yè)只是存放信息的物理單位,其本身沒(méi)有完整的意義,因而不便于實(shí)現(xiàn)信息的共享,而段卻是信息的邏輯單位,有利于信息的共享。5.5.1 分

39、段存儲(chǔ)管理方式的引入華北電力大學(xué)計(jì)算機(jī)系分段保護(hù) 信息保護(hù)是對(duì)相對(duì)完整意義的邏輯單位(段)進(jìn)行保護(hù)。動(dòng)態(tài)連接當(dāng)運(yùn)行過(guò)程中又需要調(diào)用某段時(shí),再將該段(目標(biāo)程序)調(diào)入內(nèi)存并鏈接起來(lái)。所以,動(dòng)態(tài)鏈接是以段為基礎(chǔ)的。動(dòng)態(tài)增長(zhǎng) 在實(shí)際系統(tǒng)中,往往有些數(shù)據(jù)段會(huì)不斷地增長(zhǎng),而事先卻無(wú)法知道數(shù)據(jù)段會(huì)增長(zhǎng)到多大,分段存儲(chǔ)管理方式可以較好地解決這個(gè)問(wèn)題。5.5.1 分段存儲(chǔ)管理方式的引入華北電力大學(xué)計(jì)算機(jī)系分段在分段存儲(chǔ)管理方式中,作業(yè)的地址空間被劃分為若干個(gè)段,每個(gè)段是一組完整的邏輯信息,如有主程序段MAIN、子程序段X、數(shù)據(jù)段D及堆棧段S等,每個(gè)段都有自己的名字,都是從零開(kāi)始編址的一段連續(xù)的地址空間,各段長(zhǎng)度

40、是不等的。分段系統(tǒng)的地址結(jié)構(gòu)如下圖所示,邏輯地址由段號(hào)(名)和段內(nèi)地址兩部分組成。在該地址結(jié)構(gòu)中,允許一個(gè)作業(yè)最多有64 K個(gè)段,每個(gè)段的最大長(zhǎng)度為64 KB。31 16 15 05.5.2 分段系統(tǒng)的基本原理 段 號(hào) 段 內(nèi) 地 址華北電力大學(xué)計(jì)算機(jī)系段表在分段式存儲(chǔ)管理系統(tǒng)中,為每個(gè)段分配一個(gè)連續(xù)的分區(qū),而進(jìn)程中的各個(gè)段可以離散地分配到內(nèi)存中不同的分區(qū)中。在系統(tǒng)中為每個(gè)進(jìn)程建立一張段映射表,簡(jiǎn)稱(chēng)為“段表”。每個(gè)段在表中占有一表項(xiàng),在其中記錄了該段在內(nèi)存中的起始地址(又稱(chēng)為“基址”)和段的長(zhǎng)度,如下圖所示。進(jìn)程在執(zhí)行中,通過(guò)查段表來(lái)找到每個(gè)段所對(duì)應(yīng)的內(nèi)存區(qū)??梢?jiàn),段表實(shí)現(xiàn)了從邏輯段到物理內(nèi)存

41、區(qū)的映射。5.5.2 分段系統(tǒng)的基本原理華北電力大學(xué)計(jì)算機(jī)系 作業(yè)空間 (MAIN)=0 0 段 表 30K 段號(hào) 段長(zhǎng) 基址 (X)=1 0 0 20K 1 (D)=2 0 2 15K (S)=3 3 0 10K 內(nèi)存空間 0 40k:80k:120k:150k:30K 40K20K 80K15K 120K10K 150K(MAIN)=0 30K(X)=1 20K(D)=2 15K (S)=3 10K5.5.2 分段系統(tǒng)的基本原理華北電力大學(xué)計(jì)算機(jī)系地址變換機(jī)構(gòu)為了實(shí)現(xiàn)從邏輯地址到物理地址的變換功能,系統(tǒng)中設(shè)置了段表寄存器,用于存放段表始址和段表長(zhǎng)度。在進(jìn)行地址變換時(shí),系統(tǒng)將邏輯地址中的段號(hào)

42、S與段表長(zhǎng)度TL進(jìn)行比較。若 STL,表示段號(hào)太大,訪問(wèn)越界,于是產(chǎn)生越界中斷信號(hào);若未越界,則根據(jù)段表的始址和該段的段號(hào),計(jì)算出該段對(duì)應(yīng)段表項(xiàng)的位置,從中讀出該段在內(nèi)存中的起始地址,然后再檢查段內(nèi)地址d是否超過(guò)該段的段長(zhǎng)SL。若超過(guò),即 dSL,同樣發(fā)出越界中斷信號(hào);若未越界,則將該段的基址與段內(nèi)地址d相加,得要訪問(wèn)的內(nèi)存物理地址。5.5.2 分段系統(tǒng)的基本原理華北電力大學(xué)計(jì)算機(jī)系段表寄存器 越界中斷 邏輯地址 段號(hào) 段長(zhǎng)SL 基址 0 1 2 3 段表始址 段表長(zhǎng)度 TL段號(hào)S 位移量d 2 1001K 6K600 4K500 8K200 9200 物理地址 8k+1005.5.2 分段系

43、統(tǒng)的基本原理華北電力大學(xué)計(jì)算機(jī)系5.5.2 分段系統(tǒng)的基本原理華北電力大學(xué)計(jì)算機(jī)系5.5.2 分段系統(tǒng)的基本原理華北電力大學(xué)計(jì)算機(jī)系分頁(yè)和分段的主要區(qū)別分頁(yè)是出于系統(tǒng)管理的需要,分段是出于用戶應(yīng)用的需要。頁(yè)是信息的物理單位,段是信息的邏輯單位頁(yè)大小是系統(tǒng)固定的,而段大小則通常不固定。邏輯地址表示:分頁(yè)的程序地址空間是一維的,各個(gè)模塊在鏈接時(shí)必須組織成同一個(gè)地址空間;分段的程序地址空間是二維的,各個(gè)模塊在鏈接時(shí)可以每個(gè)段組織成一個(gè)地址空間。通常段比頁(yè)大,因而段表比頁(yè)表短,可以縮短查找時(shí)間,提高訪問(wèn)速度。5.5.2 分段系統(tǒng)的基本原理華北電力大學(xué)計(jì)算機(jī)系5.5.3 共享與保護(hù)段是信息的邏輯單位,因

44、此分段系統(tǒng)的一個(gè)突出的優(yōu)點(diǎn)是易于實(shí)現(xiàn)段的共享。即允許若干個(gè)進(jìn)程共享一個(gè)或多個(gè)段,而且對(duì)段的保護(hù)也十分簡(jiǎn)單。在分頁(yè)系統(tǒng)中,雖然也能實(shí)現(xiàn)程序和數(shù)據(jù)的共享,但遠(yuǎn)不如分段系統(tǒng)來(lái)得方便。圖是分段系統(tǒng)中共享 editor編輯程序的示意圖。華北電力大學(xué)計(jì)算機(jī)系5.5.3 共享與保護(hù)華北電力大學(xué)計(jì)算機(jī)系分頁(yè)和分段存儲(chǔ)管理方式都各有其優(yōu)缺點(diǎn)。如果對(duì)兩種存儲(chǔ)管理方式“各取所長(zhǎng)”后,則可以形成一種新的存儲(chǔ)管理方式的系統(tǒng)段頁(yè)式系統(tǒng)。這種新系統(tǒng)既具有分頁(yè)系統(tǒng)能有效地提高內(nèi)存利用率的優(yōu)點(diǎn),又具有分段系統(tǒng)能很好地滿足用戶需要的長(zhǎng)處,顯然是一種比較有效的存儲(chǔ)管理方式。5.5.4 段頁(yè)式存儲(chǔ)管理方式華北電力大學(xué)計(jì)算機(jī)系基本原理

45、段頁(yè)式系統(tǒng)的基本原理是先將整個(gè)主存劃分成大小相等的物理塊,把用戶程序按程序的邏輯關(guān)系分為若干個(gè)段,并為每個(gè)段賦予一個(gè)段名,再把每個(gè)段劃分成若干頁(yè),以頁(yè)為單位離散分配。在段頁(yè)式系統(tǒng)中,其地址結(jié)構(gòu)由段號(hào)、段內(nèi)頁(yè)號(hào)和頁(yè)內(nèi)地址三部分組成,作業(yè)地址空間的結(jié)構(gòu)如圖下所示。5.5.4 段頁(yè)式存儲(chǔ)管理方式 段號(hào)(S) 段內(nèi)頁(yè)號(hào)(P) 頁(yè)內(nèi)地址(W)華北電力大學(xué)計(jì)算機(jī)系 段表寄存器5.5.4 段頁(yè)式存儲(chǔ)管理方式段表大小段表始址華北電力大學(xué)計(jì)算機(jī)系地址變換過(guò)程在段頁(yè)式系統(tǒng)中,有一個(gè)段表寄存器,存放段表始址和段長(zhǎng)TL。在進(jìn)行地址變換時(shí),首先利用段號(hào)S,將它與段長(zhǎng)TL進(jìn)行比較。若STL,表示未越界,于是利用段表始址和

46、段號(hào)求出該段對(duì)應(yīng)的段表項(xiàng)在段表中的位置,從中得到該段的頁(yè)表始址,并利用邏輯地址中的段內(nèi)頁(yè)號(hào)P來(lái)獲得對(duì)應(yīng)頁(yè)的頁(yè)表項(xiàng)位置,從中讀出該頁(yè)所在的物理塊號(hào)b,再用塊號(hào) b和頁(yè)內(nèi)地址構(gòu)成物理地址。下圖說(shuō)明了段頁(yè)式系統(tǒng)中的地址變換機(jī)構(gòu)。5.5.4 段頁(yè)式存儲(chǔ)管理方式華北電力大學(xué)計(jì)算機(jī)系 段表寄存器 越界中斷 段表始址 段表長(zhǎng)度 +段號(hào)(S)段內(nèi)頁(yè)號(hào)(P)頁(yè)內(nèi)地址(W) +塊 號(hào)b 塊內(nèi)地址 段 表0123 頁(yè)表01235.5.4 段頁(yè)式存儲(chǔ)管理方式華北電力大學(xué)計(jì)算機(jī)系5.5.4 段頁(yè)式存儲(chǔ)管理方式華北電力大學(xué)計(jì)算機(jī)系5.5.4 段頁(yè)式存儲(chǔ)管理方式華北電力大學(xué)計(jì)算機(jī)系在段頁(yè)式系統(tǒng)中,為了獲得一條指令或數(shù)據(jù),需三次訪問(wèn)內(nèi)存:第一次訪問(wèn)內(nèi)存中的段表,從中取得頁(yè)表始址;第二次訪問(wèn)內(nèi)存中的頁(yè)表,從中取出該頁(yè)所在的物理塊號(hào),并將該塊號(hào)與頁(yè)內(nèi)地址一起形成指令或數(shù)據(jù)的物理地址;第三次訪問(wèn)才是真正根據(jù)所得的物理地址取出指令或數(shù)據(jù)。顯然,這使訪問(wèn)內(nèi)存的次數(shù)增加了近兩倍。為了提高執(zhí)行的速度,在地址變換機(jī)構(gòu)中增設(shè)一

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論