




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第4章內(nèi)存管理(1),第4章內(nèi)存管理,簡介內(nèi)存層次4.1程序加載和鏈接4.2連續(xù)分配模式,第4章內(nèi)存管理簡介內(nèi)存層次,簡介1內(nèi)存層次,1。記憶層次在現(xiàn)代計算機系統(tǒng)中,記憶是信息處理的來源和目的地,占據(jù)著重要的位置。然而,在現(xiàn)有的技術(shù)條件下,任何一種存儲設(shè)備都不能同時滿足用戶在速度和容量方面的需求。事實上,它們構(gòu)成了速度快、容量小的存儲設(shè)備層次結(jié)構(gòu)。記憶的層次結(jié)構(gòu),導(dǎo)論2。各種存儲器,緩存:小,非??欤嘿F,易失性內(nèi)存內(nèi)存內(nèi)存:幾兆,中速,中等價格,易失性磁盤:幾百兆或幾千兆,低速,低價,不容易改變。這些內(nèi)存的使用是由操作系統(tǒng)協(xié)調(diào)的,引言3內(nèi)存管理的目的,1)主內(nèi)存的分配和管理:當(dāng)它不需要時,可
2、以及時回收給其他用戶使用。2)提高主存的利用率:不僅多個程序可以動態(tài)共享主存,還可以更好地共享主存中某個區(qū)域的信息。介紹3存儲管理的目的(續(xù))3“擴展”主內(nèi)存容量:為用戶提供比主內(nèi)存物理空間大得多的地址空間,使用戶感覺他們的工作是在這么大的內(nèi)存中運行的。4)存儲保護:確保多個程序在其指定的存儲區(qū)域內(nèi)運行,不會相互干擾,并防止一個程序破壞其他作業(yè)或系統(tǒng)文件的信息。導(dǎo)言4基本概念1。位置(存儲分配):為特定程序和數(shù)據(jù)分配存儲單元或區(qū)域。2.映射:將邏輯地址轉(zhuǎn)換成相應(yīng)物理地址的過程。3.隔離:根據(jù)訪問權(quán)限將合法區(qū)域與非法區(qū)域分開,實現(xiàn)存儲保護。介紹4基本概念由命名空間程序員定義的標(biāo)識符程序符號集由沒
3、有地址概念的程序員定義。導(dǎo)言4基本概念5。地址空間程序用來訪問信息的一組地址單元。這組邏輯(相對)地址由編譯器6生成。存儲空間主存儲器中的一組物理單元。這組物理(絕對)地址是由匯編程序生成的。1200,物理地址空間,加載A數(shù)據(jù)1數(shù)據(jù)1 3456,源程序,加載A 200 3456,0,100,200,編譯連接,邏輯地址空間,BA=1000,圖41名稱空間,地址空間,存儲空間,簡介4基本概念,7。邏輯地址和物理地址邏輯地址虛擬地址):用戶程序被匯編或編譯以形成目標(biāo)代碼,目標(biāo)代碼通常采用相對地址的形式,第一個地址為0,其它指令中的地址相對于第一個地址被尋址。你不能用邏輯地址來讀取內(nèi)存中的信息。物理地
4、址(絕對地址,真實地址)內(nèi)存中存儲單元的地址可以直接尋址。8。內(nèi)存共享:兩個或多個進程共享內(nèi)存中的同一區(qū)域。目的:節(jié)省內(nèi)存空間,提高內(nèi)存利用率,實現(xiàn)進程通信(數(shù)據(jù)共享)。共享內(nèi)容:代碼共享,要求代碼是純代碼數(shù)據(jù)共享。引言4基本概念,引言4基本概念,9。存儲保護和安全保護目的:為多個程序共享內(nèi)存提供保證,使內(nèi)存中的每個程序只能訪問自己的區(qū)域,從而避免程序之間的相互干擾,尤其是當(dāng)一個程序發(fā)生錯誤時,不會影響其他程序的運行。通常,保護功能由硬件完成,并由軟件輔助。(特權(quán)指令不能完成存儲保護。),簡介4基本概念,1)存儲保護保護系統(tǒng)程序區(qū)域免受用戶(有意或無意)的入侵,并且不允許用戶程序讀寫不屬于其自
5、己的地址空間(系統(tǒng)區(qū)域地址空間、其他用戶程序的地址空間)的數(shù)據(jù),簡介4基本概念,2)保護進程-為了防止地址交叉,每個進程都有自己獨立的進程空間,如果一個進程在運行時生成的地址在其地址空間之外,就會發(fā)生這種情況。也就是說,當(dāng)程序想要訪問某個存儲單元時,硬件檢查它是否被允許,如果被允許,它將執(zhí)行;否則,將產(chǎn)生地址越界中斷,操作系統(tǒng)將相應(yīng)地處理它。導(dǎo)言4基本概念10。內(nèi)存“擴展”是通過虛擬存儲技術(shù)實現(xiàn)的。用戶在編程時不應(yīng)該受到內(nèi)存容量的限制,所以應(yīng)該采用一些技術(shù)來“擴展”內(nèi)存容量,這樣用戶可以獲得比實際內(nèi)存容量多得多的內(nèi)存空間。具體實現(xiàn)是在硬件的支持下,軟件和硬件相互配合,將內(nèi)存和外部內(nèi)存結(jié)合起來統(tǒng)
6、一使用。這樣,存儲器被擴展,使得用戶在編程時不受存儲器的限制。第4章:內(nèi)存管理4.1程序加載和鏈接,4.1程序加載和鏈接,圖4-2-1用戶程序的處理步驟,4.1.1程序加載,1。絕對加載模式,程序中使用的絕對地址可以在編譯或匯編時給出,也可以由程序員直接給出。然而,當(dāng)絕對地址由程序員直接給出時,它不僅要求程序員熟悉存儲器的使用,而且一旦程序或數(shù)據(jù)被修改,就改變程序中的所有地址。因此,通常最好在程序中使用符號地址,然后在編譯或匯編時將這些符號地址轉(zhuǎn)換成絕對地址。圖4-2-2作業(yè)加載到內(nèi)存2中的情況??芍囟ㄎ患虞d模式4.1.1程序加載和動態(tài)運行時加載器不會在將加載的模塊加載到內(nèi)存后立即將加載模塊中
7、的相對地址轉(zhuǎn)換為絕對地址,而是會推遲地址轉(zhuǎn)換,直到程序真正被執(zhí)行。因此,加載內(nèi)存后的所有地址仍然是相對地址。4.1.1程序加載,3 .動態(tài)運行時加載模式,4.2.2程序鏈接,圖4-2-3程序鏈接圖,1 .靜態(tài)鏈接模式,2 .加載時動態(tài)鏈接,具有以下優(yōu)點:易于修改和更新。(2)共享目標(biāo)模塊方便。4.2.2程序鏈接,3。運行時動態(tài)鏈接,這意味著到某些模塊的鏈接被延遲到執(zhí)行時,也就是說,當(dāng)發(fā)現(xiàn)被調(diào)用的模塊沒有被加載到內(nèi)存中時,操作系統(tǒng)將立即找到該模塊并將其加載到內(nèi)存中,然后將其鏈接到調(diào)用方模塊。任何未在執(zhí)行過程中使用的目標(biāo)模塊都不會被轉(zhuǎn)移到內(nèi)存中并鏈接到加載模塊,這不僅可以加快程序的加載過程,還可以
8、節(jié)省大量的內(nèi)存空間。4.2.2程序鏈接、4.2.3重定位,將作業(yè)地址空間中使用的邏輯地址轉(zhuǎn)換為內(nèi)存空間中的物理地址的過程。也稱為地址映射。如下圖所示,作業(yè)1被重新定位,地址集被映射到以1000作為起始地址的存儲器,其被用作作業(yè)1的存儲空間。重定位類型,1)靜態(tài)重定位:當(dāng)用戶程序被加載到內(nèi)存中時,從邏輯地址到物理地址的轉(zhuǎn)換將被實現(xiàn)一次,并且以后將不執(zhí)行任何轉(zhuǎn)換(通常在加載到內(nèi)存中時由軟件完成)。作業(yè)一將在執(zhí)行前被索引一次,直到作業(yè)完成從內(nèi)存中退出。2)動態(tài)重定位,4.2.3重定位,2)動態(tài)重定位,當(dāng)程序運行以訪問數(shù)據(jù)時,執(zhí)行地址轉(zhuǎn)換。由地址轉(zhuǎn)換機制執(zhí)行的地址轉(zhuǎn)換需要硬件中的重定位寄存器的支持。4
9、.2.3搬遷,2。實現(xiàn)動態(tài)重定位,重定位寄存器:當(dāng)執(zhí)行一條指令獲取操作數(shù)時,需要將指令給出的有效地址(500)和重定位寄存器中的內(nèi)容(1000)相加,得到訪問地址(1500),從而實現(xiàn)地址的動態(tài)修改。映射模式:頁面表用于描述虛擬頁面和真實頁面之間的對應(yīng)關(guān)系。4.2.3重新定位,第4章內(nèi)存管理4.2連續(xù)分配內(nèi)存管理,4.2.1單用戶內(nèi)存管理。在單通道環(huán)境中,無論是單用戶系統(tǒng)還是單通道批處理系統(tǒng),當(dāng)執(zhí)行一個進程(作業(yè))時,除了系統(tǒng)占用的一部分主內(nèi)存外,其余所有主內(nèi)存區(qū)域都被它占用。主存可以分為三個部分:系統(tǒng)區(qū)、用戶區(qū)和空閑區(qū)。用戶占用區(qū)域是一個連續(xù)的存儲區(qū)域,因此也稱為單個連續(xù)存儲管理。在單用戶系
10、統(tǒng)中,一段時間內(nèi)存中只存在一個進程,因此內(nèi)存分配管理非常簡單,內(nèi)存利用率低內(nèi)存分為兩個區(qū)域,一個用于操作系統(tǒng),另一個用于用戶。圖4-3-1是單個連續(xù)區(qū)域存儲分配示意圖。4.2.1單用戶存儲管理、工作流和單個連續(xù)區(qū)域分配采用靜態(tài)分配和靜態(tài)重定位,即一個作業(yè)或進程一旦進入主內(nèi)存,在完成運行之前不能釋放主內(nèi)存。主存分配和恢復(fù)方法如下圖所示。加載器檢查其絕對地址是否超出,從而達到保護系統(tǒng)的目的。4.2.1單用戶存儲管理,工作流(續(xù)),4.2.1單用戶存儲管理,單用戶系統(tǒng)缺點,不支持多渠道。主存利用率不高。程序的運行受到主內(nèi)存容量的限制。4.2.1單用戶存儲管理、存儲保護、自動地址修改例如,內(nèi)存的地址空
11、間為,操作系統(tǒng)位于低位地址端。對于這樣的系統(tǒng),我們給用戶一個位地址空間,并為每次內(nèi)存訪問自動添加它。如果操作系統(tǒng)占據(jù)了高地址端,那么我們就可以訪問每個存儲,但實際上,它的地址是()。從而實現(xiàn)對操作系統(tǒng)的保護。4.2.1單用戶存儲管理、存儲保護(續(xù))、頁面和頁面尋址通過在每個用戶生成的地址的左端拼接一位來實現(xiàn)區(qū)域和用戶區(qū)域。在頁面上設(shè)置操作系統(tǒng),并將用戶作業(yè)放在頁面上。邊界寄存器通過添加邊界寄存器來劃分區(qū)域和用戶區(qū)域。4.2.1單用戶存儲管理、4.2.2固定分區(qū)分配、分區(qū)管理是滿足多程序要求的最簡單的存儲管理方案。它的基本思想是將內(nèi)存分成幾個連續(xù)的區(qū)域,這些區(qū)域稱為分區(qū)。每個分區(qū)只能存儲一個程序
12、,并且該程序只能在其所在的分區(qū)中運行。事先,可分配的主存空間被分成幾個連續(xù)的區(qū)域,稱為分區(qū)。如圖所示,每個分區(qū)的大小可以相同也可以不同。但是,分區(qū)大小是固定的,每個分區(qū)只能容納一個作業(yè)存儲分配:如果有空閑區(qū)域,它將被分配給進程,4.2.2固定分區(qū)分配,1。固定分區(qū)、分區(qū)4、分區(qū)3、分區(qū)2、分區(qū)1操作系統(tǒng)、多個等待隊列、單個等待隊列。分區(qū)4分區(qū)3分區(qū)2分區(qū)1操作系統(tǒng)、圖4-3-2固定分區(qū)圖,4.2.2固定分區(qū)分配,圖4-3-3固定分區(qū)使用表,通過設(shè)置內(nèi)存分配表,內(nèi)存分配很簡單。缺點:內(nèi)存利用率低。內(nèi)存分配管理,4.2.3動態(tài)分區(qū)分配,基本思想:內(nèi)存不是預(yù)分區(qū)的。如果有足夠的空間,根據(jù)需要將分區(qū)的
13、一部分分配給進程;否則,讓它等待主內(nèi)存空間內(nèi)存管理:設(shè)置內(nèi)存空閑塊表記錄空閑區(qū)內(nèi)存分配的起始地址和長度:動態(tài)分配內(nèi)存回收:當(dāng)一個塊被返回時,前后空間合并,內(nèi)存空閑塊表被修改,4.2.3動態(tài)分區(qū)分配,分區(qū)分配表(見圖4-3-5) (2)空閑分區(qū)鏈,圖4-3-4空閑鏈結(jié)構(gòu),1,0k,15k,38k,48k,68k,80k, 圖4-3-5、0k、15k、38k、48k、68k、80k 1)分配內(nèi)存,圖4-3-6內(nèi)存分配過程,2。 分區(qū)分配操作,4.2.3動態(tài)分區(qū)分配,圖4-3-7內(nèi)存回收,2)內(nèi)存回收,4.2.3動態(tài)分區(qū)分配,為了實現(xiàn)動態(tài)分配,系統(tǒng)建立空閑分區(qū)鏈表:每個空閑塊前后兩個單元,其中有必要
14、的說明信息,系統(tǒng)只需要設(shè)置一個鏈頭指針指向第一個空閑塊。分配程序可以根據(jù)空閑塊鏈表找到合適的空閑塊進行分配。(如下圖所示),3??臻e分區(qū)鏈表,4.2.3動態(tài)分區(qū)分配。根據(jù)連接空閑塊的不同方式,有四種算法:最佳適應(yīng)法、最差適應(yīng)法、第一適應(yīng)法、循環(huán)第一適應(yīng)法、4。分配算法,4.2.3動態(tài)分區(qū)分配。接收內(nèi)存申請時,在空閑塊列表中找到不小于請求的最小空塊,并在為作業(yè)選擇分區(qū)時進行分配功能:滿足最小空間要求,1)最佳自適應(yīng)算法,4.2.3動態(tài)分區(qū)分配,空閑,有一個作業(yè)J,其大小為12KB,需要轉(zhuǎn)移到內(nèi)存中,最佳自適應(yīng)算法,4.2.3動態(tài)分區(qū)分配,操作系統(tǒng),8K空閑區(qū)域,J (12 K),B(.有一個大小
15、為12KB的作業(yè)j,現(xiàn)在需要將其轉(zhuǎn)移到內(nèi)存中。最佳自適應(yīng)算法,4.2.3動態(tài)分區(qū)分配。當(dāng)接收內(nèi)存應(yīng)用程序時,它會在空閑塊表中找到一個不小于分配請求的最大空塊。與最佳適應(yīng)方法相反,當(dāng)作業(yè)選擇存儲塊時,它總是尋找最大的空白區(qū)域。功能:當(dāng)備用塊在分段后仍然是一個大的空塊時,2)最差自適應(yīng)算法,4.2.3動態(tài)分區(qū)分配,空閑,有一個大小為12KB的作業(yè)J,現(xiàn)在需要將其轉(zhuǎn)移到內(nèi)存中,最差自適應(yīng)算法,4.2.3動態(tài)分區(qū)分配,空閑,4.2.3動態(tài)分區(qū)分配,3)首次適配方法:為作業(yè)選擇分區(qū)時,始終按照地址從高到低進行搜索,只要找到可以容納該作業(yè)的空白塊,就將該空白塊分配給該作業(yè)。4)循環(huán)第一自適應(yīng)方法類似于第一
16、自適應(yīng)方法。分區(qū)時,它總是從上次搜索結(jié)束的地方開始,并找到足夠大的空白區(qū)域分配。4.2.3動態(tài)分區(qū)分配,空閑,有一個大小為12KB的作業(yè)J,需要將其傳輸?shù)絻?nèi)存中。系統(tǒng)回收分區(qū)的主要步驟如下:1 .檢查回收的分區(qū)是否與空閑區(qū)域相鄰,如果相鄰,則將其合并;2與修改描述表的釋放區(qū)域相鄰的分區(qū)可以是:釋放區(qū)域與另一進程的分配區(qū)域相鄰,或者是自由區(qū)域。第一種適應(yīng)方法解釋了系統(tǒng)恢復(fù)進程占用區(qū)域的以下四種可能情況。讓過程的釋放區(qū)域為R,與R相鄰的兩個自由區(qū)域分別為F1和F2。r的第一個地址發(fā)送到LOC,r的最后一個地址發(fā)送到LOC1,r的大小發(fā)送到SIZE。4.2.3動態(tài)分區(qū)分配,回收存儲器:(a)如果釋放
17、區(qū)域r與F1相鄰,即其低地址部分與自由區(qū)域相鄰。R和F1被合并,并且合并的自由區(qū)域仍然被記錄為F1。如何判斷釋放區(qū)域r是否與自由區(qū)域相鄰?只需從鏈的開始處查找:如果F1的第一個地址F1的大小=r的第一個地址,這意味著r與F1相鄰。只要F1的大小=F1的LOC大小被修改,其他參數(shù)及其在鏈中的位置保持不變。如果釋放區(qū)域R鄰近F2,即,其高地址部分鄰近自由區(qū)域。R和F2被合并,并且合并的自由區(qū)域仍然被記錄為F2。如果鎖定大小=F2的第一個地址,則意味著R與F2相鄰。F2的第一個地址=LOC,F(xiàn)2的大小=F2的大小需要修改。(c)如果釋放區(qū)域r的高和低地址部分都與一個空閑區(qū)域相鄰。三個分區(qū)應(yīng)該合并成一個大的自由區(qū)域,表示為F1。首先,將R與F2結(jié)合,并將其
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 賣買游戲合同范例
- 個人轉(zhuǎn)讓閑置住宅合同范本
- 2025陜西省建筑安全員-A證考試題庫附答案
- 二年級口算題目全集100道
- 2025年江西省安全員A證考試題庫附答案
- 二年級口算題目大全100道
- 二年級口算題庫匯編100道
- 二年級口算題目大全100道
- 個人沙金開采合同范本
- 人工挖孔樁合同范本
- 常用臨床檢驗結(jié)果解讀
- 2025年浙江省金華義烏市人社局招聘雇員歷年高頻重點提升(共500題)附帶答案詳解
- 老年癡呆患者護理課件
- 鐵路安全警示教育課件
- 2024年物資采購?fù)稑?biāo)書:標(biāo)準格式3篇
- 電氣成套廠檢驗員培訓(xùn)
- 新入職消防安全培訓(xùn)
- 醫(yī)保信息系統(tǒng)數(shù)據(jù)安全管理制度
- 第18課排序計算有方法(教案)四年級全一冊信息技術(shù)人教版
- 統(tǒng)編版五年級語文下冊1古詩三首《四時田園雜興(其三十一)》課件
- 酒店2024年保安部工作計劃024酒店工作計劃
評論
0/150
提交評論