計算機操作系統第五章_第1頁
計算機操作系統第五章_第2頁
計算機操作系統第五章_第3頁
計算機操作系統第五章_第4頁
計算機操作系統第五章_第5頁
已閱讀5頁,還剩203頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

存儲器管理曲阜師范大學計算機科學學院本章書目3/8/20231高校課件5.1程序的裝入和鏈接5.2連續安排存儲管理方式5.3覆蓋和對換5.4分頁存儲管理方式(離散安排方式)5.5分段存儲管理方式作業本章主要目錄返回起先3/8/20232高校課件一個計算機系統由計算子系統、存儲子系統和I/O子系統組成。出于性能與價格的權衡考慮,存儲子系統通常由多種不同的存儲介質共同構成。3/8/20233高校課件寄存器內存外存粗層次圖寄存器Cache內存盤交換區(輔存)聯機外存海存(脫機外存)細層次圖Cache還可以再分三層:片內一級和二級,片外Cache外存自頂向下,存取速度越來越慢,成本越來越低,容量越來越大,存取頻度越來越低3/8/20234高校課件任一程序對計算機的運用,首先是對內存的運用(先裝入內存),然后是對處理機的運用,再后才是通過處理機實現對I/O設備與文件等其他資源的運用。3/8/20235高校課件內存是指用來存放當前正在運行的程序的代碼和數據及其數據的,是程序中指令本身地址所指的,亦即程序計數器所指的,亦即CPU取指時所用地址所隱含訪問的那個存儲層次。內存并不是確定不行缺少的,但內存的存在可以達到性能與價格的更好權衡操作系統內存管理功能的大部分內容,是為了解決內存速度與容量不足的問題。它實現的是與硬件相關和應用無關的內容。3/8/20236高校課件帕金森Parkinson定律:存儲器有多大,程序就會有多大。程序的增大正好填滿增大的存儲器。3/8/20237高校課件計算機領域,歷史總是在重復自身。當最簡潔的存儲管理方案不再用于臺式機時,這些方案仍被一些掌上電腦、嵌入式系統和智能卡系統所接受。3/8/20238高校課件內存管理的功能和任務

硬件相關和應用無關的內容1、如何才能運用戶和用戶程序不涉及內存物理細微環節:操作系統、編譯程序和硬件共同完成。2、如何為用戶程序完成程序裝入工作:操作系統在編譯程序的協作下完成。3、如何提高內存利用率和彌補用戶對內存容量要求與內存實際容量之間的差距。4、如何解決內存速度與CPU速度不匹配的問題。5、如何滿足系統和用戶的平安要求。內存愛護6、如何滿足用戶程序的動態擴縮要求7、共享8、代價3/8/20239高校課件5.1.1裝入方式一、確定裝入方式二、可重定位裝入方式三、動態運行時裝入方式5.1.2程序的鏈接程序的裝入一、靜態鏈接二、裝入時動態鏈接三、運行時動態鏈接5.1程序的裝入和鏈接返回本章書目3/8/202310高校課件存儲器管理主存儲器(又稱內部存儲器,處理機存儲器),存儲器管理,探討的主要對象就是主存儲器。BACK返回本節書目NEXT3/8/202311高校課件很多操作系統之間最明顯的區分特征之一是所運用的存儲管理方法不同。

主存儲器管理技術分為兩大類:實存儲器管理和虛擬存儲器管理。本章探討常用的幾種實存儲管理技術。下章將探討虛擬存儲管理技術BACK返回本節書目NEXT3/8/202312高校課件實存儲管理技術:分連續安排和離散安排。連續安排又分:單一連續、固定分區、可變分區和動態重定位可變分區。離散安排分:分頁、分段和段頁式。虛擬存儲管理技術:懇求分頁、懇求分段和段頁虛擬式。對每一種管理方式從以下五個方面來理解并駕馭:安排、去配(釋放或回收)、地址重定位、愛護(防止地址越界和限制正確存取)和共享。3/8/202313高校課件整個計算機系統的功能很大程度上取決于主存儲器的結構組織和實現方法,就主存的功能而言,首先是存放系統和用戶程序的指令和數據,每一項信息都存放在主存的特定位置上。BACK返回本節書目NEXT3/8/202314高校課件信息在主存是按“位”存放的。為了能對信息進行訪問,要對這些位置進行編號,這些編號稱為地址。以什么為單位進行編址呢?早期的計算機中,存儲器是按字組織,每個字安排一個地址。目前多數計算機以字節為單位進行編址。BACK返回本節書目NEXT3/8/202315高校課件為了更多的存放并更快地處理用戶信息,目前很多計算機把存儲器分為三級(高速緩沖存儲器、主存儲器和外部存儲器),用戶的程序在運行時應存放在主存中。所以把那些不立刻運用的程序、數據放在外部存儲器(又稱次級存儲)中。當用到時再把它們讀入主存。BACK返回本節書目NEXT3/8/202316高校課件主存儲器管理中的探討課題單道程序階段,人們探討了覆蓋技術來解決用戶作業空間大于實際的主存空間的沖突。多道程序系統出現后,主存容量不足的沖突更為突出。由于多道程序共享主存,所以對主存的管理工作又出現了如何在各程序間安排主存空間的問題。同時還要考慮如何防止各程序有意無意地相互干擾和破壞的問題。BACK返回本節書目NEXT3/8/202317高校課件再者,程序是相對編址的可浮動的程序,這些程序被裝入主存時就需重定位。綜上所述,目前關于主存儲器管理的主要探討課題歸納為四個方面:BACK返回本節書目NEXT3/8/202318高校課件(1)主存安排:是存儲管理探討的主要內容。本章將探討各種主存安排算法,以及每種算法所要求的數據結構,但不涉及某個具體的存儲管理系統的程序。讀者只要駕馭了算法,了解其數據結構,就可以編寫一個程序模塊了。BACK返回本節書目NEXT3/8/202319高校課件(2)地址映象或重定位:主要探討各種軟件和硬件的地址轉換技術和機構。(3)存儲愛護:探討如何愛護各程序區中信息不被破壞和偷竊。BACK返回本節書目NEXT3/8/202320高校課件(4)存儲器擴充:用存儲管理軟件來實現邏輯上的擴充即所謂的虛擬存儲技術。BACK返回本節書目NEXT3/8/202321高校課件如何使一個用戶程序到內存中去執行,分如下幾步:(1)編譯。Compile:轉換成機器指令,將符號地址轉換為內存地址。(2)鏈接。Link:將各模塊中的相對地址統一轉換成相對于該程序起址的位移。(3)裝入。Load本節,簡要地講解并描述了程序的鏈接和裝入過程。BACK返回本節書目NEXT3/8/202322高校課件庫鏈接程序裝入模塊裝入程序內存第一步編譯其次步鏈接第三步裝入編譯程序產生的目標模塊BACK返回本節書目NEXT3/8/202323高校課件5.1.1程序的裝入單個目標模塊,是如何裝入內存的。三種方式:(1)確定裝入方式。程序中運用確定地址,只適用于單道程序環境。(2)可重定位方式。依據內存當時的實際運用狀況,裝入到內存的適當位置(與目標模塊中的地址不一樣時,要進行轉換)。裝入時一次完成,又稱靜態重定位。不允許程序在運行時在內存中移動。(3)動態運行時裝入方式。裝入內存后,并不馬上轉換地址。而是到真正執行時才進行轉換。須要重定位寄存器。BACK返回本節書目NEXT3/8/202324高校課件一、確定裝入方式absoluteloadingmodeP119二、可重定位裝入方式relocatableloadingmodeBACK返回本節書目NEXT3/8/202325高校課件可重定位裝入程序,依據內存的當前運用狀況,將程序裝入到內存的某個位置,把有效地址(相對地址)與本程序在內存中的起始地址相加,得到正確的物理地址。BACK返回本節書目NEXT3/8/202326高校課件指令地址和數據地址同樣都要進行修改,我們把裝入時對程序中的指令和數據地址進行修改的過程稱為重定位(即進行地址轉換)。這種地址變換若只是在裝入時一次完成的,稱為靜態重定位(staticrelocatingaddress)。用在早期的單用戶單任務系統中。BACK返回本節書目NEXT3/8/202327高校課件三、動態運行時裝入方式dynamicrun-timeloading確定裝入方式,只能將程序裝入到內存中事先指定的地址。多道程序環境下,不行能事先知道每一道程序在內存中的位置,該方式只適合于單道程序環境。BACK返回本節書目NEXT3/8/202328高校課件可重定位裝入方式,可將程序裝入到內存中的任何允許的地方,可用于多道程序環境,但它不允許程序在運行時,在內存中移動。因為,程序在內存中移動,要求相應地變更它們的物理地址,必需對程序和數據的地址(確定地址)進行修改,才能正常運行。BACK返回本節書目NEXT3/8/202329高校課件但在多進程并發運行中,程序在內存中的位置,須要常常進行變更。這種狀況下,應接受動態運行時裝入方式。BACK返回本節書目NEXT3/8/202330高校課件動態運行時的裝入程序,將程序裝入內存后,并不馬上把程序中的相對地址轉換為確定地址,而是當程序真正執行時才進行轉換。這叫動態重定位(dynamicrelocatingaddress)。須要硬件支持。BACK返回本節書目NEXT3/8/202331高校課件5.1.2程序的鏈接鏈接是將一組目標模塊及它們所需的庫函數,裝配成一個裝入模塊。必需將目標模塊中的相對地址和外部調用符號轉換成裝入模塊中的統一的相對地址。方法有三種:靜態鏈接,裝入時動態鏈接和運行時動態鏈接。BACK返回本節書目NEXT3/8/202332高校課件靜態鏈接:程序運行前鏈接成裝配模塊,以后不再拆開。即事先進行鏈接。裝入時動態鏈接:目標模塊在裝入內存時,邊裝入邊鏈接。運行時動態鏈接:程序執行中須要該模塊時,才對它進行鏈接。3/8/202333高校課件一、靜態鏈接三個目標模塊A、B、C,長度分別為L、M和N,A中有語句CallB,B中有語句CallC。B和C都是外部調用符號。P120若將A、B、C鏈接裝配成一個目標模塊,應如下處理:BACK返回本節書目NEXT3/8/202334高校課件1、對相對地址進行修改一般,由編譯程序產生的目標模塊,其起始地址為0(A的地址為0),每個模塊中的地址是相對于0的。鏈接成一個目標程序后,B和C的起始地址不再是0,而是L和L+M。須修改B和C中的相對地址,即B中全部的相對地址加上L,C中的全部相對地址加上L+M。BACK返回本節書目NEXT3/8/202335高校課件2、變換外部調用符號將每個模塊中所用的外部調用符號,變換為相對地址。即把CallB中的B(起始地址)變換為L,把CallC中的C變換為L+M。BACK返回本節書目NEXTP1203/8/202336高校課件先進行鏈接而形成的一個完整的裝入模塊,稱為可執行文件,一般不再拆開它,運行時干脆裝入內存。這種事先進行鏈接,以后不再拆開的鏈接方式,稱為靜態鏈接方式。BACK返回本節書目NEXT3/8/202337高校課件二、裝入時動態鏈接load-timedynamiclinking是指,程序編譯形成若干個目標模塊,在裝入內存時,邊裝入邊鏈接。即在裝入一個目標模塊時,發生一個外部模塊調用,將引起裝入程序去找相應的外部目標模塊,并將它裝入內存。BACK返回本節書目NEXT3/8/202338高校課件它的優點:1、便于軟件版本的修改和更新接受裝入時動態鏈接方式,可比較簡潔的修改或更新各個目標模塊,而靜態鏈接方式下,形成的裝入模塊,要重新打開裝入模塊來修改,一般是不行能的。BACK返回本節書目NEXT3/8/202339高校課件2、便于實現目標模塊共享接受裝入時動態鏈接的方式,一個目標模塊可鏈接到幾個應用模塊。而接受靜態鏈接方式,每個應用模塊都必需含有該目標模塊的拷貝。BACK返回本節書目NEXT3/8/202340高校課件三、運行時動態鏈接run-timedynamiclinking動態裝入方式,可將一個程序裝入到內存的任何位置,但裝入模塊的結構是靜態的。表現在:一是在進程(程序)的整個運行期間,裝入模塊是不變更的,再者,每次運行時的裝入模塊是相同的。BACK返回本節書目NEXT3/8/202341高校課件事實上,每次要運行的模塊可能是不相同的,但事先無法知道本次要運行哪些模塊,只能把全部可能要運行的模塊,裝入時全部鏈接在一起,每次執行時的裝入模塊是相同的。這種方式是低效的。如:錯誤處理模塊,若在程序整個運行期間,始終不出現錯誤,便不會用到該模塊。BACK返回本節書目NEXT3/8/202342高校課件為避開上述狀況,出現了運行時動態鏈接方式,該方式將某些目標模塊的鏈接,延遲到執行時再進行。即在執行過程中,發覺一個被調用模塊尚未裝入內存中時,由OS找到該模塊,裝入內存,并鏈接到調用者模塊上。BACK返回本節書目NEXT3/8/202343高校課件5.2.1單一連續安排5.2.2固定分區安排一、劃分分區的方法二、內存安排5.2.3動態分區安排一、分區安排中的數據結構二、分區安排算法三、分區安排操作5.2.4動態重定位分區安排一、緊湊二、動態重定位三、動態重定位分區安排算法5.2連續分配存儲管理方式返回本章書目3/8/202344高校課件連續安排是指程序在內存中要占一個連續的內存空間。兩種方式:1、單一連續安排方式單道環境中,內存分為系統區和用戶區。適于單用戶、單任務OS中。BACK返回本節書目NEXT3/8/202345高校課件2、分區式安排方式進一步分為:(1)固定分區式。(2)動態分區,又稱可變分區。分區式要求將一個用戶程序安排到一個連續的內存空間中,可能會產生一些不行利用的內存零頭(碎片)。BACK返回本節書目NEXT3/8/202346高校課件5.2.1單一連續安排接受這種存儲管理方式,內存分為兩個分區:(1)系統區。低址部分,駐留OS。BACK返回本節書目NEXT3/8/202347高校課件(2)用戶區。系統區以外的全部內存空間,供應應用戶用的。為防止OS受到用戶程序的破壞,設置一個愛護機構。基址寄存器和界限寄存器,存放該程序的邏輯地址范圍,以此來實現數據愛護。BACK返回本節書目NEXT3/8/202348高校課件BACK返回本節書目NEXT用戶程序位于RAM中的操作系統位于ROM中的操作系統用戶程序早期的大型機和小型機,現在很少用了掌上計算機和嵌入式系統位于ROM中的設備驅動程序(bios)用戶程序位于RAM中的操作系統早期的個人計算機MSDOS3/8/202349高校課件5.2.2固定分區安排(fixedpartition,定長分區或靜態分區)固定分區式安排,最早用于多道程序環境的存儲管理方式(60年頭的IBM-360的MFT系統中),它將內存空間劃分為若干個固定大小的區域,每個分區中可裝入一道作業。BACK返回本節書目NEXT3/8/202350高校課件一、劃分分區的方法1、分區大小相等缺點:碎片,(hole,空洞)或稱零頭。該方式,主要用于利用一臺計算機去限制多個相同對象(所需的內存空間大小相等)的場合。BACK返回本節書目NEXT3/8/202351高校課件2、分區大小不等在內存中劃分多個較小的分區、適量的中等分區和少量的大分區。系統初次啟動時,系統操作員依據當天的作業狀況把主存儲器劃分成大小不等但數目固定的分區。BACK返回本節書目NEXT3/8/202352高校課件二、內存安排實現內存安排,由小到大建立一張分區運用表(主存安排表)。每個分區要登記一個表項,包含分區的起始地址、大小及狀態(是否已安排)。BACK返回本節書目NEXT3/8/202353高校課件固定分區存儲管理的主存安排表分區號起始地址長度占用標志18KB8KB0216KB16KBJob1332KB16KB0448KB16KB0564KB32KBJob2696KB32KB03/8/202354高校課件由內存安排程序檢索該表,找出一個滿足要求的、尚未安排的分區,將它安排該程序。修改分區運用表中該分區表項中的狀態,若找不到大小足夠的分區,則拒絕為該用戶程序安排內存。BACK返回本節書目NEXT3/8/202355高校課件分區號大小(KB)始址(K)狀態11530已分配23045已分配35075已分配4100125未分配操作系統作業A作業B作業C0304575125225固定分區安排表A:B:C=15:30:50(a)分區說明表(b)存儲空間安排狀況BACK返回本節書目NEXT3/8/202356高校課件固定分區的缺點無法裝入大作業,覆蓋技術有碎片3/8/202357高校課件********數據庫********在多道固定分區狀況下,操作系統的存儲安排模塊和存儲釋放模塊都要用到關于主存分區狀況的說明信息,以及這些存儲區的運用狀況信息即存儲管理的數據庫,常被稱為存儲分塊表,其中包含三項信息:BACK返回本節書目NEXT3/8/202358高校課件(1)大小:是指該存儲塊的大小,以字節為單位。(2)位置:指該存儲塊在主存中的起始地址。(3)狀態:表明該存儲塊是否已被運用。還有一項信息“區號”,起存儲鍵作用,未包含在表格中。BACK返回本節書目NEXT3/8/202359高校課件存儲分塊表是存儲安排和釋放這兩個模塊的數據庫。在程序中這個表用相應語言的數據類型來表示。在Pascal中用一維數組表示,數組元素是記錄結構,數組下標是分區的序號。描述如下:BACK返回本節書目NEXT3/8/202360高校課件typeN:integer;Entry=recordsize:integer;location:integer;status:boolean;endvarMBT:array[1..N]ofEntry;BACK返回本節書目NEXT3/8/202361高校課件固定分區的存儲安排算法和可變分區的安排算法是一樣,所運用的安排算法要求是查表時間要短,且分區內的碎片奢侈要最少。最好是最佳適應法和最先適應安排算法的結合。MBT中的各分區按分區大小排序,最小分區在表頭。BACK返回本節書目NEXT3/8/202362高校課件5.2.3動態分區安排(可變分區安排variablepartition)依據進程的實際須要,動態地為之安排連續的內存空間。要解決如下問題:(1)分區安排中所用的數據結構(2)分區的安排算法(3)分區的安排和回收操作BACK返回本節書目NEXT3/8/202363高校課件一、分區安排中的數據結構記錄內存的運用狀況,已安排區表和未安排區表,形式:1、空閑分區表---可用表為內存中每個尚未安排出去的分區登記一個表項,每個分區的表項包含分區序號、分區始址、分區大小及狀態等信息。缺點:表格自身要占用空間。BACK返回本節書目NEXT3/8/202364高校課件2、空閑分區(雙向)鏈自由鏈自由主存隊列在每個分區的起始部分,設置一些用于限制分區安排的信息,及通過,前、后向指針將全部的分區鏈接成一個雙向鏈。若某一分區被安排出去后,應把狀態位由0改為1,此時,前、后向指針失去意義。BACK返回本節書目NEXT3/8/202365高校課件序號分區大小(KB)分區始址(K)狀態16444可用224132可用340210可用430270可用5………空閑分區表空閑分區鏈BACK返回本節書目NEXT3/8/202366高校課件二、分區安排算法從空閑分區表或空閑分區鏈中,選擇一個分區安排給作業的算法。1、首次適應算法FF最先適應算法FirstFit以空閑分區鏈為例,FF要求空閑分區鏈以地址遞增的次序鏈接。BACK返回本節書目NEXT3/8/202367高校課件該算法,優先利用內存中低址部分的空閑分區,在高址部分的空閑分區很少被利用,保留了高址部分的大空閑區。為以后到達的大作業安排大的內存空間創建了條件。BACK返回本節書目NEXT3/8/202368高校課件缺點,是低址部分不斷被劃分,會留下很多碎片,每次查找又都從低址部分起先,增加了查找的時間開銷BACK返回本節書目NEXT3/8/202369高校課件2、循環首次適應算法(nextfit,NF)—下次適配算法該算法為進程安排內存空間時,從上次找到的空閑分區的下一個空閑分區起先查找,直至找到第一個滿足要求的空閑分區,并從中劃出一塊與懇求的大小相等的內存空間安排給作業。BACK返回本節書目NEXT3/8/202370高校課件需設置一個起始查尋指針,以指示下一次起先查尋的空閑分區,并接受循環查找方式。即若最終一個(鏈尾)空閑分區,其大小不能滿足要求時,返回到第一個空閑分區,從頭起先查尋,找到所需分區后,要相應調整起始查尋指針。BACK返回本節書目NEXT3/8/202371高校課件該算法,能使內存中的空閑分區更勻整,削減了查找的開銷,但不利于大作業的調入。Bays(1977)的仿真程序證明下次適配算法的性能略低于首次適配算法。BACK返回本節書目NEXT3/8/202372高校課件3、最佳適應算法(bestfit,BF)全部的空閑分區,按大小遞增的依次形成空閑分區鏈。缺點是,碎片會更小。4、最壞適應算法(worstfit,WF)空閑分區按大小遞減的次序排列。BACK返回本節書目NEXT3/8/202373高校課件特點:總選擇滿足作業要求的最大的分區安排給作業,使剩下的部分也比較大,可接著運用。缺點:當再有大作業時,可能得不到滿足。BACK返回本節書目NEXT3/8/202374高校課件5、快速適應算法(quickfit)又稱分類搜尋法,將分區依據常常用到的大小分類,相同容量的分區單獨成為一個空閑鏈。系統建立管理索引表。進行安排時分區不進行分割。合并分區時算法困難,安排時以進程為單位,一個分區只屬于一個進程。有碎片。是典型的以空間換時間的作法。3/8/202375高校課件模擬試驗表明:在削減時空代價上,最先適應和最佳適應都比最壞適應更好。在空間代價上,最先適應或最佳適應都不能明確說是最好,但最先適應一般更快。最先適應對某些系統更好,最佳適應對于另外一些系統更好。3/8/202376高校課件6、伙伴系統(Buddy,Knuth,1973年)每個分區大小均為2k次冪,1≤k≤m。最大空閑塊為2m個單位,最小空閑塊為20個單位。建立k個空閑鏈表。時間代價上比分類搜尋法差,比依次算法好空間代價上比分類搜尋法好,比依次算法差適用于多處理機系統。7、哈希算法3/8/202377高校課件三、分區安排操作1、安排內存設懇求的分區大小為u.size,分區的大小表示為m.size,若m.size-u.size<=size,將整個分區安排給懇求者,否則,從該分區中劃分出與懇求的大小相等的內存空間安排給懇求者,余下的部分留在空閑分區鏈或空閑分區表。最終,將安排區的首址返回調用者。流程圖:P125BACK返回本節書目NEXT3/8/202378高校課件2、回收內存有四種狀況:(1)回收區與插入點的前一個分區相鄰接。(2)回收分區與插入點后的一分區鄰接。(3)回收區同時與插入點的前、后兩個分區鄰接。(4)回收區前后沒有空閑分區與它相鄰時。流程圖示:P125BACK返回本節書目NEXT3/8/202379高校課件運用可變分區存儲管理的系統:IBM的OS/MVT3/8/202380高校課件5.2.4動態重定位分區安排一、緊湊(拼接、緊縮或澄清)連續安排中,會出現“外部碎片”或“外零頭”解決的方法是:“拼接”或“緊湊”。BACK返回本節書目NEXT3/8/202381高校課件時機:一、在某個分區回收時馬上進行拼接,系統中總只有一個連續的空閑區。頻率過大,開銷加大。二、當找不到足夠大的空閑區且空閑區的總容量可滿足作業要求時進行拼接。管理困難。圖示:P127BACK返回本節書目NEXT3/8/202382高校課件留意:緊湊后的用戶程序在內存中的位置發生了變更,必需對程序和數據的地址進行修改(變換),即進行重定位。二、動態重定位動態運行時裝入方式,程序中的相對地址轉換為物理地址的任務,要到程序執行時才進行。BACK返回本節書目NEXT3/8/202383高校課件系統中增加一個重定位寄存器,存放程序在內存中的起始地址,程序執行時,真正訪問的地址是相對地址與重定位寄存器中的地址相加得到的。BACK返回本節書目NEXT3/8/202384高校課件地址變換過程是在程序執行時,隨著對每條指令和數據的訪問而自動進行的,稱為動態重定位。當程序發生了移動,只需置換重定位寄存器中的起始地址。P128BACK返回本節書目NEXT3/8/202385高校課件三、動態重定位分區安排算法與動態分區安排算法相像,區分在于:該算法中,增加了“緊湊”功能。動態重定位分區安排算法框圖。P128BACK返回本節書目NEXT3/8/202386高校課件總結固定分區安排接受靜態地址重定位,運行時運用確定地址,由加載程序進行地址越界檢查。可變分區安排接受動態地址重定位,由硬件完成,硬件設置兩個專用限制寄存器:基址寄存器和限長寄存器。但都會出現碎片。3/8/202387高校課件練習3/8/202388高校課件四、分區的愛護連續安排方式中,為防止一個用戶作業破壞操作系統或其他用戶,常接受界限寄存器或愛護鍵的方法來進行分區的愛護。(1)界限寄存器。一對上、下限寄存器或一對基址、限長寄存器,存放正在執行的作業在內存中的結束地址和起始地址,或起始地址和長度,每當進行內存訪問時,硬件自動將所訪問的內存地址與界限寄存器的值進行比較,若發生地址越界,則產生越界中斷。3/8/202389高校課件(2)愛護鍵。每個分區安排一個單獨的愛護鍵,相當于一把鎖;同時為每個進程安排一個相應的愛護鍵,相當于一把鑰匙。每當進行內存訪問時,都要檢查鑰匙和被訪問單元的鎖是否匹配,若不匹配,則發生愛護性中斷。3/8/202390高校課件5.3覆蓋Overlay和對換(Swapping)5.3.0覆蓋技術(Overlay)5.3.1多道程序環境下的對換5.3.2對換空間的管理5.3.3進程的換出與換入

一、進程的換出

二、進程的換入返回本章書目BACK主存不足的存儲管理技術3/8/202391高校課件覆蓋技術覆蓋技術是針對大程序、小空間、裝不下的問題而提出的。其思想是對一個程序,僅將其中在執行期間的任何時刻都須要的過程和數據,在該程序起先執行時裝入并始終保存在內存,而該程序中的其他代碼和數據則只在須要時裝入,且不同時執行的代碼或數據相互覆蓋。須要事先設計并確定好全部代碼和數據的位置。主程序和覆蓋驅動程序常駐內存。程序員必需正確設計覆蓋結構和編程。覆蓋一般只用于不實行虛存技術的系統。3/8/202392高校課件5.3對換對換(交換)技術,最早是CTSS中實現的,該系統是單用戶系統,在內存中只允許一道作業運行,其它作業都在外存的后備隊列中。每次只調入一個作業到內存,運行一個時間片后,將它調出,再調入下一個作業。BACK返回本節書目NEXT3/8/202393高校課件5.3.1多道程序環境下的對換多道程序環境下,一方面,內存中的某些進程被堵塞,卻仍占據大量的空間,甚至全部進程都被堵塞,使CPU停止等待。另一方面,外存上有很多作業,因無內存而不能進入內存。BACK返回本節書目NEXT3/8/202394高校課件為解決這種問題,增設了對換設施。所謂“對換”或“交換”,是指:UNIX中,設置一對換進程,由它將內存中短暫不能運行的進程,調出到磁盤上,又將磁盤上具備運行條件的進程,調入內存。BACK返回本節書目NEXT3/8/202395高校課件WINDOWS中,若一個進程調入內存時,發覺內存不足時,由系統將老進程調出到磁盤上。這種不是完全的對換,因為對換本身是用戶的行為,由用戶確定是否進行對換及對換出哪個進程,不是系統的行為。BACK返回本節書目NEXT3/8/202396高校課件對換可以整個進程為單位,稱為“整體對換”或“進程對換”。一般用于分時系統中。對換以“頁”或“段”為單位進行,稱為“頁面對換”或“分段對換”,統稱“部分對換”。本節,介紹進程對換。第六章將主要介紹部分對換。要實現進程對換,應先實現如下三種功能:BACK返回本節書目NEXT3/8/202397高校課件5.3.2對換空間(外存空間)的管理具有對換功能的OS,一般把外存分為:文件區和盤對換區。前者存放文件,接受離散安排方式。后者存放從內存換出的進程,接受簡潔的連續安排方式。BACK返回本節書目NEXT3/8/202398高校課件要管理對換區的空閑塊,系統配置相應的數據結構,空閑分區表或空閑分區鏈,表中的每個表目包含:對換分區首址和對換區長度。以盤塊為單位。BACK返回本節書目NEXT3/8/202399高校課件對換區的安排,接受連續安排方式,安排算法可接受:首次適應算法,循環首次適應算法和最佳或最壞適應算法。其安排和回收操作同前。BACK返回本節書目NEXT3/8/2023100高校課件5.3.3進程的換出與換入系統內核發覺內存不足時,調用對換程序或喚醒對換進程,實現進程的換入與換出。一、進程的換出將內存中的某些進程調至對換區。步驟:BACK返回本節書目NEXT3/8/2023101高校課件1、選出被換出的進程首先選擇處于堵塞或睡眠狀態的進程,從中選擇優先級最低的進程換出。也可同時考慮進程在內存中的駐留時間。若已無堵塞進程,選擇優先級最低的就緒進程換出,同樣要考慮駐留時間。BACK返回本節書目NEXT3/8/2023102高校課件2、換出過程只能換出非共享的程序和數據段。對于共享的程序段和數據段,對每個段的引用計數執行減1操作。若其值不為0,表示有進程須要它,不能被換出。若值為0,表示該程序段或數據段,已不被其它進程須要,可將它們換出。BACK返回本節書目NEXT3/8/2023103高校課件要申請對換空間。對進程限制塊和內存安排表等進行修改。若此時,還有可換出的進程,接著上述過程,直到內存中無堵塞進程為止。BACK返回本節書目NEXT3/8/2023104高校課件二、進程的換入找出“就緒且換出”的進程,有多個時,選擇換出時間最長的進程作為換入進程,再依據進程的大小申請內存:(1)申請成功,干脆換入進程(2)申請失敗,先將內存中的某些進程換出,再將該進程換入。BACK返回本節書目NEXT3/8/2023105高校課件若還有可換入的進程,接著執行上述的過程,直到全部“就緒且換出”狀態的進程全部換入或已無法獲得足夠大的內存來換入進程為止。BACK返回本節書目NEXT3/8/2023106高校課件5.4分頁存儲管理方式5.4.1分頁存儲管理的基本方法

一、頁面和物理塊

二、頁表

三、頁面大小的選擇5.4.2地址變換機構

一、基本的地址變換機構

二、具有快表的地址變換機構5.4.3兩級和多級頁表

一、兩級頁表

二、多級頁表結構5.4.4反置頁表返回本章書目3/8/2023107高校課件若允許將一個進程干脆分散地安排到很多不相鄰的分區中基于這一思想產生了離散安排方式。依據離散安排時所用基本單位的不同,分為三種:BACK返回本節書目NEXT3/8/2023108高校課件1、分頁存儲管理該方式中,用戶程序的(邏輯)地址空間被劃分成若干個固定大小(一個系統中只能有一種大小的頁面)的區域,稱為“頁”或“頁面”。一般大小是1KB,同時,將內存空間(物理地址空間)也分成若干個物理塊,頁和塊的大小相等。BACK返回本節書目NEXT3/8/2023109高校課件這樣,可將用戶程序的任一頁放在內存中的任一塊中,實現了離散安排。內存中的碎片大小絕不會超過一頁。分頁是為實現離散安排方式,以提高內存利用率,僅僅是由于系統管理的須要,而不是用戶編程的須要BACK返回本節書目NEXT3/8/2023110高校課件2、分段存儲管理它把用戶程序的地址空間分成若干個大小不等的段(由編譯程序在對源程序進行編譯時,依據信息的性質來劃分),每段定義一組相對完整的邏輯信息(如:C程序中可為全局變量、函數的代碼部分、函數的局部變量等,分別建立各自的段)。存儲安排時,以段為單位,這些段在內存中是不相鄰接的。也實現了離散安排。BACK返回本節書目NEXT3/8/2023111高校課件3、段頁式存儲管理這是分頁和分段相結合的產物。兼備兩者的優點。BACK返回本節書目NEXT3/8/2023112高校課件5.4.1分頁存儲管理的基本原理一、頁面和物理塊分頁存儲管理方式中,將一個進程的邏輯地址空間分成若干個大小相等的片,稱為頁面或頁。BACK返回本節書目NEXT3/8/2023113高校課件內存空間也等分成與頁相同大小的若干個存儲塊,稱為物理塊或頁框frame,又稱頁幀。兩者都進行編號,都從0起先。進程調入內存時,以塊為單位將進程中的若干頁分別裝入多個可以不相鄰接的塊中。進程的最終一頁一般裝不滿一塊,形成了不行利用的碎片,稱為“頁內碎片”。BACK返回本節書目NEXT3/8/2023114高校課件系統建立一張主存物理塊表,記錄全部的物理塊,現代系統大多接受位示圖的方法。每次安排時,先檢查空閑塊數能否滿足用戶進程的要求。3/8/2023115高校課件分頁存儲管理方式中的(變換或物理)地址結構:含有兩部分:兩部分構成的地址為32位,0~11為頁內地址,即每頁大小為4KB,12~31位為頁號,地址空間最多允許有1MB頁。對某一機器,地址結構是確定的。BACK返回本節書目NEXT位移量W(頁內地址)頁號P01112313/8/2023116高校課件給定一個邏輯地址為A(,頁面大小為L,則頁號P和頁內地址d可按下式求得:(這一步是由機器硬件實現的)P=INT[A/L]。d=[A]modL如:若系統的頁面大小為1KB,設A=2170B,可求得:P=2,d=122BACK返回本節書目NEXT3/8/2023117高校課件這是用除的方法可將邏輯地址轉換成頁號和頁內地址,效率太低了。為此規定頁的大小必需是2的冪。可把地址從第幾位分開成兩部分:高位部分所表示的數是頁號,低位部分所代表的數是頁內地址。接受頁面大小是2的冪的優點是省去除法,由硬件自動把地址場中的數拆成兩部分來確定對應的頁號和頁內地址。3/8/2023118高校課件二、頁表分頁系統中,允許將進程的每頁離散地存儲在內存的任一物理塊中。系統要保證進程的正確運行,即能在內存中找到每個頁面所對應的物理塊,須要為每個進程建立一張頁面映射表PMT,簡稱頁表。BACK返回本節書目NEXT3/8/2023119高校課件進程地址空間內的全部頁(0~n-1),依次(0~n-1)在頁表中有一頁表項,記錄了相應頁在內存中對應的物理塊號。配置了頁表后,進程執行時,通過查找頁表,即可找到每頁在內存中的物理塊號。頁表是實現從頁號到物理塊號的地址映射。BACK返回本節書目NEXT3/8/2023120高校課件一般在頁表的表項設置一存取限制字段,對該存儲塊中的內容進行愛護,若存取限制字段僅一位時,表示該存儲塊的內容是允許:讀/寫,還是只讀。若存取限制位是二位,可表示:讀/寫,只讀和只執行等存取方式。BACK返回本節書目NEXT3/8/2023121高校課件三、頁面大小的選擇分頁系統中的頁面大小是由機器的地址結構確定的。確定地址結構時:若選擇的頁面小:若選擇的頁面大:可削減頁表長度,提高換進換出的效率,但會使頁內碎片增大。一般,頁面的大小選擇適中,大小是2的冪,在~間,即在512B~4(8)KB之間。BACK返回本節書目NEXT3/8/2023122高校課件5.4.2地址變換機構:這是與連續安排方式的根本區分將邏輯地址,變換為物理地址。頁內地址和物理地址是一一對應(因為是同樣大小的)的。所以,地址變換機構的任務是,將邏輯地址中的頁號,轉換為內存中的物理塊號。頁面映射表的作用就是用于實現從頁號到物理塊號的變換,所以,地址變換任務是借助于頁表完成的。BACK返回本節書目NEXT3/8/2023123高校課件一、基本的地址變換機構頁表由一組特地的寄存器來實現的。一個頁表項用一個寄存器。現代計算機的頁表都比較大,頁表項的總數可達幾千甚至幾十萬個,不行能用寄存器實現,所以,頁表都是駐留在內存中。BACK返回本節書目NEXT3/8/2023124高校課件系統設置一個頁表寄存器PTR(TableRegister),存放頁表在內存的始址和頁表的長度。未執行時,頁表的始址和長度是存放在PCB中的。當調度到該進程時,才將它們裝入到頁表寄存器中。所以,單處理機系統中,系統允許并發運行多個進程時,只需一個頁表寄存器即可。BACK返回本節書目NEXT3/8/2023125高校課件進程要訪問某邏輯地址中的數據時,分頁地址變換機構會自動地將有效地址(相對地址)分為頁號和頁內地址兩部分,再以頁號為索引去檢索頁表。

查找操作由硬件執行,在執行檢索之前,先將頁號與頁表長度進行比較,若頁號大于或等于頁表長度,表示越界錯誤,產生一中斷。BACK返回本節書目NEXT3/8/2023126高校課件若未出現越界錯誤,則將頁表始址(從0起先)與頁號和頁表項長度的乘積相加,得到該表項在頁表中的位置,于是,可從中得到該頁的物理塊號,將之裝入物理地址寄存器中。再將邏輯地址寄存器中的頁內地址干脆送入物理地址寄存器的塊內地址字段中。即完成了地址的變換。BACK返回本節書目NEXT3/8/2023127高校課件頁表始址頁表長度頁號(3)頁內地址>+1bb塊內地址頁表寄存器越界中斷邏輯地址L塊號頁號物理地址頁表0213分頁系統的地址變換機構BACK返回本節書目NEXT練習3/8/2023128高校課件二、具有快表的地址變換機構頁表是存放在內存中的,CPU每次存取一個數據時,要訪問兩次內存:第一次,訪問內存中的頁表,從中找到該頁的物理塊號,將此塊號與頁內偏移量W拼接形成物理地址。其次次,依據第一次所得數據物理地址,從中獲得數據或向此地址寫入數據。由此,計算機的處理速度降低近1/2。BACK返回本節書目NEXT3/8/2023129高校課件為了提高地址變換速度,可在地址變換機構中,增設一個具有并行查尋實力的特殊高速緩沖存儲器,又稱聯想存儲器(associativememory)或快表。IBM系統中又取名為TLB(translationlookasidebuffer)轉換檢測緩沖區。用來存放當前訪問的那些頁表項。BACK返回本節書目NEXT3/8/2023130高校課件地址變換:CPU給出有效地址后,由地址變換機構自動將頁號p送入高速緩沖存儲器,并將此頁號通過并行匹配與快表中的全部頁號進行比較。若其中有與此相匹配的頁號,則表示所要訪問的頁表項在快表中。可以干脆讀出該頁所對應的物理塊號,并送物理地址寄存器中。BACK返回本節書目NEXT3/8/2023131高校課件若在快表中未找到相應的頁表項,這時,還必需再訪問內存中的頁表,找到后,把從頁表項中讀出的物理塊號送地址寄存器,同時,將此頁表項存入快表中的一個寄存器單元中,要重新修改快表,此時,若快表已滿,OS將一個不再須要的頁表項將它換出。BACK返回本節書目NEXT3/8/2023132高校課件頁表始址頁表長度頁表寄存器>頁號頁內地址邏輯地址L越界中斷bb輸入寄存器頁號塊號頁號塊號+bd頁表快表物理地址具有快表的地址變換機構BACK返回本節書目NEXT3/8/2023133高校課件一般,聯想存儲器不能很大,通常只能存放16~512個頁表項,其數目也不能太多。對中、小型作業而言,有可能已經把全部頁表項都放在快表中了,對大型作業,只能將一部分頁表放入其中。配置聯想存儲器的效率,確定于對它訪問時的命中率,如:BACK返回本節書目NEXT3/8/2023134高校課件檢索聯想存儲器的時間為20ns,訪問內存的時間為100ns。若能在聯想存儲器中檢索到CPU給出的頁號,則CPU為了存取一個數據,總共須要的時間t1=120ns。若不能在聯想存儲器中找到該頁號,則總共須要時間t2=220ns。若假定訪問聯想存儲器的命中率分別為0%,50%,80%,90%,98%時,其有效訪問時間,分別如下表:BACK返回本節書目NEXT3/8/2023135高校課件一般的訪問聯想存儲器的命中率為80%~90%。所以,由于增設了聯想存儲器,而使訪問數據的時間,比單周期的訪問時間要延長40%~22%,但若不引入聯想存儲器,其時間要延長一倍。命中率(%)有效訪問時間T=h×t1+(1-h)×t2(ns)050809098T=0×120+1×220=220T=0.50×120+0.50×220=170T=0.80×120+0.2×220=140T=0.90×120+0.1×220=130T=0.98×120+0.02×220=122BACK返回本節書目NEXT3/8/2023136高校課件5.4.3兩級和多級頁表現代的大多數OS,都支持特別大的邏輯地址空間(232~264)。頁表要占用相當大的內存空間。如:32位邏輯地址空間的分頁系統中,規定頁面大小為4KB,每個頁表中的頁表項可達1MB,每個頁表項占用4個字節,頁表就要占用4MB的內存空間,而且還是連續的,是不行能滿足的。如何解決:BACK返回本節書目NEXT3/8/2023137高校課件(1)對頁表所需的內存空間,接受離散安排方式,來解決難以找到一塊連續的大內存空間的問題。(2)只將當前須要的部分頁表項調入內存,其余的頁表項仍留在磁盤上,須要時再將它們調入內存。BACK返回本節書目NEXT3/8/2023138高校課件一、兩級頁表Two-LevelPageTable針對難以找到大的連續空間的問題,用將頁表進行分頁的方法,將它們分別放在不同的物理塊中,要為離散安排的頁表再建立一張頁表,稱為外層頁表,在每個頁表項中記錄了頁表頁面的物理塊號。BACK返回本節書目NEXT3/8/2023139高校課件如:對32位邏輯地址空間。頁面大小為4KB時,接受一級頁表結構,有20位的頁號,頁表項有1兆個,接受兩級頁表結構,對頁表進行分頁,每頁中包含1024個頁表項,有1024個頁表分頁,即,外層頁表中的外層頁內地址p2為10位,外層頁號p1也為10位,此時的邏輯地址結構如下:BACK返回本節書目NEXT3/8/2023140高校課件p1p2d外層頁號外層頁內地址頁內地址0111211212231BACK返回本節書目NEXT3/8/2023141高校課件10111078…1742146…1468…114115…………外部頁表內存空間第0頁頁表第1頁頁表第n頁頁表0000011111n102310231023146811511464兩級頁表結構BACK返回本節書目NEXT3/8/2023142高校課件從上知,頁表的每個表項中存放的是進程的某頁在內存中的塊號,在外層頁表的每個頁表項中,存放的是某頁表分頁的首址。可用外層頁表和頁表兩級頁表,實現從進程的邏輯地址到物理地址的變換。BACK返回本節書目NEXT3/8/2023143高校課件在地址機構中設置一個外層頁表寄存器,存放外層頁表的始址,用邏輯地址中的外層頁號,作為外層頁表的索引,找到指定頁表分頁的首址,再用p2作為指定頁表分頁的索引,找到指定的頁表項。其中含有該頁的塊號,用該塊號和頁內地址d即可構成訪問內存的物理地址。如圖示:BACK返回本節書目NEXT3/8/2023144高校課件p1p2d邏輯地址外部頁號外部頁內地址頁內地址外部頁表寄存器bd物理地址外部頁表頁表++具有兩級頁表的地址變換機構BACK返回本節書目NEXT3/8/2023145高校課件上述對頁表施行離散安排的方法,解決了對大頁表無需大片存儲空間的問題,但并未解決用較少的內存空間去存放大頁表的問題。即只用離散安排空間的方法并未削減頁表所占用的內存空間。BACK返回本節書目NEXT3/8/2023146高校課件用較少的內存存放大頁表,唯一的方法是把當前所須要的頁表項調入內存,再依據須要調入其它頁表項。若接受兩級頁表結構,對正在運行的進程,須將其外層頁表調入內存,而對頁表只須調入一頁或幾頁。在外層頁表項中,增設一個狀態位s,其值為0,表示該頁表分頁尚未調入內存,其值為1,說明已在內存。進程運行時,地址變換機構依據邏輯地址中的p1,去查找外層頁表,若所找到的頁表項中的狀態位為0,則產生一中斷信號,懇求OS將該頁表分頁調入內存。BACK返回本節書目NEXT3/8/2023147高校課件二、多級頁表結構32位機器,接受兩級頁表結構是合適的,64位機器:若頁面大小仍接受4KB,則還剩下52位,假定還按物理塊的大小(1024個頁表項)來劃分頁表,則將有余下的42位用于外層頁號。此時,每個頁表分頁將達1MB(10位),外層頁表仍有4G(32位)個頁表項,要占用16GB的連續內存空間。即不管怎樣劃分,其結果都是不能接受的。BACK返回本節書目NEXT3/8/2023148高校課件所以,必需接受多級頁表,將16GB的外層頁表再進行分頁,將各個分頁離散地安排到不相鄰接的物理塊中,再利用第2級的外層頁表來映射它們之間的關系。一般接受四級以上頁表結構BACK返回本節書目NEXT3/8/2023149高校課件5.4.4反置頁表(倒排頁表)分頁系統中為每個進程配置一張頁表,進程邏輯地址空間中的每一頁,在頁表中都對應有一個頁表項。現代OS中,一般允許一個進程的邏輯地址空間特別大,所以,有很多頁表項,從而占用很多內存空間。為削減頁表占用的內存空間引入了反置頁表。BACK返回本節書目NEXT3/8/2023150高校課件一般頁表的表項是按頁號進行排序,頁表項中的內容是物理塊號。而反置頁表是為每一個物理塊設置一個頁表項并將它們按物理塊的號數排序,其中的內容則是頁號及其隸屬進程的標識符。BACK返回本節書目NEXT3/8/2023151高校課件利用反置頁表進行地址變換時,是用進程標識符和頁號,檢索反置頁表。若檢索完整個頁表都未找到與之匹配的頁表項,表明此頁尚未調入內存,對于具有懇求調頁功能的存儲器系統,此時產生懇求調頁中斷。若無此功能,則表示地址出錯。若檢索到與之相匹配的表項,則該表項的序號i便是該頁所在的物理塊號,所以,可將該塊號與頁內地址一起,構成物理地址送內存地址寄存器。BACK返回本節書目NEXT3/8/2023152高校課件5.5.1分段存儲管理方式的引入5.5.2分段系統的基本原理一、分段二、段表三、地址變換機構四、分頁和分段的主要區分5.5.3共享與愛護5.5.4段頁式存儲管理方式一、基本原理二、地址變換過程5.5分段存儲管理返回本章書目3/8/2023153高校課件推動存儲管理方式從固定分區到動態分區,發展到分頁存儲管理的主要動力,是提高內存利用率。分段存儲管理方式的引入,是為了滿足用戶在編程和運用上的要求。分段管理方式已成為全部存儲管理方式的基礎。5.5.1分段存儲管理的引入BACK返回本節書目NEXT3/8/2023154高校課件主要的意義:1、便利編程一般,一個作業是由若干個段組成。用戶希望能把自己的作業依據邏輯關系劃分為若干個段,每個段都有自己的名字和長度,要訪問的邏輯地址是由段名(段號)和段內偏移量(段內地址)確定(是二維空間),每個段都從0起先編址。BACK返回本節書目NEXT3/8/2023155高校課件所以,用戶程序在執行中可用段名和段內地址進行訪問。如:Load1,[A]|<D>Store1,[B]|<C>前一條指令表示將分段A中D單元內的值讀入寄存器1中,后一條指令表示將寄存器1的內容,存入B分段的C單元中。BACK返回本節書目NEXT3/8/2023156高校課件2、分段共享在實現程序和數據的共享時,都是以信息的邏輯單位為基礎的。如:共享某個例程序和函數(單獨成一個段)。分頁系統中的每一頁只是存放信息的物理單位,本身并無完整的意義,不便于實現信息共享,但段卻是信息的邏輯單位。為了實現段的共享,存儲管理要與用戶程序分段的組織方式相適應。BACK返回本節書目NEXT3/8/2023157高校課件3、分段愛護多道程序環境下,為防止其它程序對某程序在內存中的數據的破壞,必需實行愛護措施,對內存中信息的愛護,同樣是對信息的邏輯單位進行愛護,所以,接受分段的組織和管理方式,對于實現愛護功能,是有效和便利的。BACK返回本節書目NEXT3/8/2023158高校課件4、動態鏈接源程序編譯后形成若干目標程序,經過鏈接以形成可執行程序,都能執行。這種在裝入時進行的鏈接稱為靜態鏈接。動態鏈接是指作業要運行之前先將主程序所對應的目標程序裝入內存并啟動運行,當運行過程中又須要調用某段時,才將該段(目標程序)調入內存并進行鏈接,可見,動態鏈接也是以段作為管理的單位的。BACK返回本節書目NEXT3/8/2023159高校課件5、動態增長實際應用中,有些數據段,會不斷地增長,而事先又無法準確地知道數據段會增長多少,這種動態增長的狀況是比較難以應付的,而分段存儲管理方式能較好了解決這一問題。BACK返回本節書目NEXT3/8/2023160高校課件5.5.2分段系統的基本原理一、分段分段存儲管理中,作業的地址空間被劃分為若干個段,每個段定義了一組邏輯信息。如:有主程序段main、子程序段X、數據段D及棧段S等。每個段都有自己的名字。如圖示BACK返回本節書目NEXT3/8/2023161高校課件一個段號來代替段名,每個段都從0起先編址,用一段連續的地址空間。段的長度由邏輯信息組的長度確定,各段長度不等。整個作業的地址空間,分成多個段,每個段都是獨立的單位,所以是二維的地址空間,即,其邏輯地址由段號(名)和段內地址所組成。分段系統中用的地址具有如下結構:段號段內地址0151631BACK返回本節書目NEXT3/8/2023162高校課件地址結構中,允許一個作業最多有64K個段,每個段的最大長度為64KB。編譯程序能自動地依據源程序的狀況而產生若干個段。裝入程序將裝入全部這些段,并為每個段都賜予一個段號。BACK返回本節書目NEXT3/8/2023163高校課件二、段表分段式存儲管理系統中,為每個段安排一個連續的分區,而進程中的各個段可以離散地放入內存中不同的分區中。為使程序正常運行,即能從物理內存中找出每個邏輯段所對應的位置,在系統中為每個進程建立一張段映射表,簡稱“段表”。BACK返回本節書目NEXT3/8/2023164高校課件每個段在表中占有一表項,在其中記錄了該段在內存中的起始地址(即基址)和段的長度SL。每個表項的長度是一樣。段表按段號從小到大的依次排列。程序創建進程時為之創建段表。段表存放在一組寄存器中,利于提高地址轉換速度。更常見的是將段表放在內存中。如圖示BACK返回本節書目NEXT3/8/2023165高校課件有了段表后,進程在執行時可通過查找段表,找到每個段所對應的內存區。所以,段表實現了從邏輯段到物理內存區的映射。如表示:BACK返回本節書目NEXT3/8/2023166高校課件150K10K120K15K80K20K40K30K(S)=310K(D)=215K(X)=120K(Main)=030K作業空間(Main)=0(X)=1(D)=2(S)=3015K07K0010K8K段長基址段號0123段表內存空間040K80K120K150K130134BACK返回本節書目NEXT3/8/2023167高校課件三、地址變換機構為了實現從進程的邏輯地址到物理地址的變換功能,在系統中設置了段表寄存器,用于存放段表始址和段表長度TL。在進行地址變換時,系統將邏輯地址中的段號S與段表長度TL進行比較。BACK返回本節書目NEXT3/8/2023168高校課件若S>=TL,訪問越界,產生越界中斷信號,若未越界,則依據段表的始址和該段的段號,計算出該段對應段表項的位置,從中讀出該段在內存的起始地址。再檢查段內地址d是否超過段長SL。若超過,即d>=SL,同樣發出越界中斷信號,若未越界,則將該段的基址與段內地址d相加,即得要訪問的內存物理地址。如圖示:BACK返回本節書目NEXT3/8/2023169高校課件段表長度段表始址段表限制寄存器>1002有效地址段號S位移量W越界+1K6K6004K5008K2009200段長段址段號0321+8292物理地址主存829286928K分段系統的地址變換過程BACK返回本節書目NEXT練習3/8/2023170高校課件像分頁系統一樣,訪問一個數據,須兩次訪問內存,降低了計算機的速度。解決的方法是,設置快表,保存最近常用的段表項。段比頁大,段表項的數目比頁表項數目少,其所需的聯想存儲器也相對較小,顯著地削減存取數據的時間,比沒有地址變換的常規存儲器的存取速度慢約10%~15%。BACK返回本節書目NEXT3/8/2023171高校課件四、分頁和分段的主要區分兩者相像:都接受離散安排方式,且都要通過地址映射機構來實現地址安排。區分:BACK返回本節書目NEXT3/8/2023172高校課件(1)頁是信息的物理單位,分頁是為實現離散安排方式,以消減內存的外零頭,提高內存的利用率,或者說,分頁僅僅是由于系統管理的須要,而不是用戶的須要。段是信息的邏輯單位,它含有一組意義相對完整的信息,分段的目的是為能更好地滿足用戶的須要。BACK返回本節書目NEXT3/8/2023173高校課件(2)頁的大小固定且由系統確定,把邏輯地址劃分為頁號和頁內地址兩部分,是由機器硬件實現的,所以一個系統只能有一種大小的頁面。段的長度卻不固定,確定于用戶所編寫的程序,一般由編譯程序在對源程序進行編譯時,依據信息的性質來劃分。BACK返回本節書目NEXT3/8/2023174高校課件(3)分頁的作業地址空間是一維的,即單一的線性地址空間,程序員只須利用一個記憶符,即可表示一個地址。分段的作業地址空間是二維的,程序員在標識一個地址時,既需給

溫馨提示

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

評論

0/150

提交評論