




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Chapter9:
內存管理1內存是計算機系統的最重要的資源之一。為提高響應速度及CPU的利用率,必須將多個進程同時放入內存,多進程共享內存。本章介紹內存管理方法。內存管理方法很多,但內容主要涉及下述三個方面:內存分配回收方法地址映射和重定位內存保護內存管理算法在不同的系統中有不同的方案,每種方案有自己的優點與缺點,選擇某種方案取決于多種因素,尤其依賴于系統的硬件設計因素。本章主要內容背景交換連續內存分配分頁分段帶有分頁的分段9.1背景為了執行,程序應被調入內存并放在進程內。在磁盤上等待調入內存以便執行的進程形成了輸入隊列當很多程序都要求程序調入內存時:程序進入等待隊列根據策略選擇一個進入程序執行時候,從內存取得指令﹔執行后,釋放所占有的內存空間地址轉換的步驟:原始程序中地址位置:以符號表示編譯器:將符號所指的地址綁定(binding)到一可重新定址的相對地址鏈接器:將可重新定址的地址綁定到主存中的絕對物理地址
Addressbindingofinstructionsanddatatomemoryaddressescanhappenatthreedifferentstages.(指令和數據綁定到內存地址可以在三個不同的階段發生。)
對于同一個指令而言,所謂的“地址”是隨著時間而改變的。BindingofInstructionsandDatatoMemoryCompiletime(編譯階段):Ifmemorylocationknownapriori,absolutecodecanbegenerated;mustrecompilecodeifstartinglocationchanges.編譯階段已經確定程序要在內存的某個物理地址執行當起始地址改變,程序必須重新編譯,以產生新的絕對地址。BindingofInstructionsandDatatoMemoryLoadtime(載入階段):Mustgeneraterelocatablecodeifmemorylocationisnotknownatcompiletime.載入階段不知道程序將在內存何處執行程序必須編譯成可重新定址的程序代碼,但起始地址改變必須重新改變例:動態鏈接庫BindingofInstructionsandDatatoMemoryExecutiontime(執行階段):Bindingdelayeduntilruntimeiftheprocesscanbemovedduringitsexecutionfromonememorysegmenttoanother.Needhardwaresupportforaddressmaps(e.g.,baseandlimitregisters).執行階段如果在執行時,程序會從一個地址移動到另一塊地址﹔或是含有執行時才能確定的數據地址指令與數據綁定到內存將指令與數據捆綁到內存地址可以在以下步驟的任何一步中執行:編譯時MS-DOS的COM格式程序加載時編譯器生成可重定位代碼執行時進程在執行時可以從一個內存段移到另一內存段,那么捆綁必須延遲到執行時才進行。邏輯地址空間與物理地址空間被綁定到物理地址空間的邏輯地址空間概念是內存管理的中心。邏輯地址:由CPU生成;也稱為虛擬地址物理地址:內存單元所看到的地址在編譯時和加載時的地址綁定方案中,邏輯地址與物理地址是相同的。但是,執行時的地址綁定方案導致不同的邏輯地址和物理地址。邏輯地址亦稱虛擬地址Logicalvs.PhysicalAddressSpace執行程序時,邏輯地址與物理地址的轉換裝載器(loader):在主存中尋找一塊可供使用的內存空間來存儲程序基址寄存器(baseregister):又名重定向寄存器,存放邏輯地址轉換成物理地址的基底值內存管理單元(memorymanagementunit,MMU):負責將邏輯地址加上基址,以轉換成物理地址。內存管理單元(MMU)運行時從虛擬地址映射到物理地址的硬件設備稱為內存管理單元用戶進程所生成的地址在送交內存之前,都將加上重定位寄存器的值。用戶程序處理的是邏輯地址,它永遠不會看到真實的物理地址。動態重定位-邏輯地址如何變成物理地址?140001000014000多個進程是如何重定位的?又是如何提供相應保護呢?動態重定位(續)一對基址和界限寄存器定義了程序的地址空間借助基址和界限寄存器可進行相應的硬件保護14動態加載一個子程序只有在調用時才被加載更好的內存空間利用率,不用的子程序不會被裝入內存。動態加載不需要操作系統提供特別的支持。利用這種方法來設計程序主要是用戶的責任。不過,操作系統可以幫助程序員,如提供子程序庫以實現動態加載。動態鏈接與共享庫鏈接過程推遲到執行時來進行。存根是一小段代碼,用來指出如何定位適當的內存駐留程序,或如果該程序不在內存時應如何裝入庫存根會用子程序地址來替換自己,并開始執行子程序。OS需要檢查子程序是否在進程的內存地址空間內。動態鏈接對于庫來說是非常有用的。覆蓋(Overlays)為了能讓進程比它所分配到的內存空間大,可以使用覆蓋。在任何時候只在內存中保留所需的指令和數據。當需要其他指令時,它們會裝入到剛剛不再需要的指令所占用的內存空間內。在編譯時,將程序與數據分成多個獨立的區域;在執行的時候,在內存中保留需要的區域。一個two-pass匯編程序的覆蓋當進程比所分配的內存大時,覆蓋是必需的由用戶執行,不需要操作系統的特別支持,覆蓋結構的程序設計很復雜Overlays缺陷:
多重重疊:造成程序員負擔,一般避免使用,因為:區域分割太多置換次數過多降低程序執行效率區域分割太少可重疊的程序部分過少內存可能不夠,系統效能降低除外:嵌入式系統(內存有限,沒有虛擬存儲系統)9.2交換Motive:系統無足夠空間容納所有的程序Method:非執行中的程序暫時移到備份存儲,要執行的時候在搬回備份存儲:一般而言指diskAprocesscanbeswappedtemporarilyoutofmemorytoabackingstore,andthenbroughtbackintomemoryforcontinuedexecution.(一個進程可以暫時被交換到內存外的一個備份區,隨后可以被換回內存繼續執行。交換方式Rollout,rollin–swappingvariantusedforpriority-basedschedulingalgorithms;lower-priorityprocessisswappedoutsohigher-priorityprocesscanbeloadedandexecuted.(滾入,滾出—交換由于基于優先級的算法而不同,低優先級的進程被換出,這樣高優先級的進程可以被載入和執行。)Majorpartofswaptimeistransfertime;totaltransfertimeisdirectlyproportionaltotheamountofmemoryswapped.(交換時間的主要部分是轉移時間,總的轉移時間直接同交換的內存的數量成比例。)交換22SchematicViewofSwapping缺陷:產生切換的額外負擔時間浪費在資料傳輸上為了提高效率程序必須隨時告知程序對內存的要求9.3連續分配內存通常分為兩個區域:一個用于駐留操作系統,常與中斷向量一起放在低內存另一個用于用戶進程,常放在高內存。單分區分配方法(Single-partitionallocation)重定位寄存器方案用來保護用戶進程之間,用戶進程與操作系統之間不會相互修改代碼與數據重定位寄存器包含了最小的物理地址;界限寄存器包含了邏輯地址的范圍,每個邏輯地址必須小于界限寄存器連續內存分配26多分區分配Multiple-partitionallocation(多分區分配)Hole–blockofavailablememory;holesofvarioussizearescatteredthroughoutmemory.(分區—可用的內存塊,不同大小的分區分布在整個內存中。)Whenaprocessarrives,itisallocatedmemoryfromaholelargeenoughtoaccommodateit.(當一個進程到來的時候,它將從一個足夠容納它分區中分配內存。)Operatingsystemmaintainsinformationabout(操作系統包含以下信息):a)allocatedpartitions(分配的分區)b)freepartitions(hole)(空的分區)Whatproblemscanhole(s)create?OSprocess5process8process2OSprocess5process2OSprocess5process2OSprocess9process2process927動態存儲分配問題根據一組空閑孔來分配大小為n的請求。首次適應(First-fit)最佳適應(Best-fit)最差適應(Worst-fit)First-fit和best-fit在分配速度及存儲效率上優于Worst-fit碎片(Fragmentation)外部碎片內部碎片緊縮(compaction):用來降低外部碎片移動內存內容,以便所有空閑空間合并成一整塊。如果重定位是動態的,是在運行時進行的,那么就能采用緊縮另一種可能解決外部碎片問題的方法是允許物理地址空間為非連續,這樣只要有物理內存就可為進程分配。分頁分段FragmentationCompactionofdynamicstorage-allocation9.4分頁(Paging)交換所產生的問題碎片備份存儲不適宜采用合并分頁允許一個進程的物理地址可以是非連續的將物理內存分成固定大小的塊,稱為幀(frame)將邏輯內存分為與幀同樣大小的塊,稱為頁(page)執行進程時,將其頁調入到物理內存任何可用的幀中地址轉換CPU所產生的邏輯地址被分為:頁碼Pagenumber(p)–usedasanindexintoapage
tablewhichcontainsbaseaddressofeachpageinphysicalmemory頁偏移Pageoffset(d)–combinedwithbaseaddresstodefinethephysicalmemoryaddressthatissenttothememoryunitForgivenlogicaladdressspace2mandpagesize
2npagenumberpageoffsetpdm-nn33分頁硬件341、頁表有多大?頁表放在什么地方?2、MOV
R0,1000指令中訪存需要多長時間?3、如何記錄哪些物理幀已經被是使用,哪些沒有被使用?PagingExamplePagingexamplefora32-bytememorywith4-bytepages空閑幀碎片分頁不會產生外部碎片,但存在內部碎片采用較小的頁面將降低產生內部碎片的可能并導致更小規模的碎片,有助于空間的利用率較小頁面同樣將產生更多的頁表項,導致更大的系統開銷頁表的慢速實現將頁表放入主存中頁表基寄存器[tablebaseregister(PTBR)]pointstothepagetable頁表長度寄存器[tablelengthregister(PRLR)]indicatessizeofthepagetableWhatisthememoryaccessperformance?2次內存訪問.Oneforthepagetableandoneforthedata/instruction.Howtomakeitfaster(withhelpfromhardware)?TLB39TLB關聯存儲關聯內存-并行搜索當關聯內存根據給定值查找時,它會同時與所有鍵進行比較。如果找到條目,那么就得到相應的值域Page#
Frame#地址轉換(A’,A’’)如果A’在關聯寄存器中,則直接取出其對應的frame#否則從內存中的頁表當中得到frame#同時將頁號和幀號增加到TLB中如果TLB條目已滿,系統將選擇一個進行替換頁表的快速實現-PagingHardwareWithTLB411、翻譯后備緩沖器[相聯存儲器,TLB]如何實現?2、進程切換,TLB應如何處理?地址空間標識符ASID3、TLB命中率與指令訪存時間的關系。4、頁表會有多大呢?32位機,64位機,要怎樣存放?怎么辦?有效訪問時間設關聯存儲查找時間為ε個時間單位設內存周期為1毫秒命中率-特定頁碼在TLB中被查找到的百分比。用α表示有效訪問時間(EffectiveAccessTime,EAT)EAT=(1+ε)α+(2+ε)(1-α) =2+ε–α例,=20ns,t=100ns,=80%EAT=(100+20)x0.8+(2x100+20)x(1-0.8)=140ns內存保護內存保護通過與每個幀關聯有保護位來實現。可讀寫、只可讀還有一位與頁表中的每一條目相關聯,稱為有效-無效位一個進程很少會使用其所有的地址空間。事實上,許多進程只使用一小部分可用的地址空間。該位有效時表示相關的頁在進程的邏輯地址空間內,因此是合法的頁。該位無效時表示相關的頁不在進程的邏輯地址空間內。頁表中的有效-無效位如對于14位地址空間(0-16383)的系統,有一個程序,其地址空間為0-10648頁表結構層次化分頁Hash頁表反向頁表層次化分頁因地址位過長,連續頁表空間太大將邏輯地址空間分成多個頁表一種簡單的方法是兩層分頁法層次化頁表PagethepagetableTwoormulti-levelpagetable47兩層分頁方法實例邏輯地址(32位機器,頁大小為4K)分成以下兩部分:頁號(20位)頁偏移(12位)頁表又分成頁,所以頁號又進一步分成:10位頁號10位頁偏移因此,邏輯地址表示如下2級分頁地址轉換49三級分頁機制64-bitaddressWhataboutthecostofmemoryaccessas#oflevelsincreases(inaTLBmiss)?Anysolutions?(alternativetothetreedatastructure)50多級分頁有什么問題嗎?MultilevelPagingandPerformanceSinceeachlevelisstoredasaseparatetableinmemory,coveringalogicaladdresstoaphysicalonemaytakefourmemoryaccesses.(由于每一級都分開的以表的形式存儲在內存中,把一個邏輯地址轉換為一個物理地址可能要進行4次內存存取。)性能低(EAT太大),怎么辦?Cacheorhash關于64位機Hash頁表處理超過32位地址空間的常用方法是使用Hash頁表。虛擬地址中的虛擬頁號被放入hash頁表中。hash頁表的每一條目都包括一個鏈接組的元素,這些元素hash成同一位置(碰撞)。虛擬頁號與鏈表中的每一個元素的第一個域相比較。如果匹配,那么對應的幀碼就用來形成位置地址。如果不匹配,那么就對鏈表中的下一個域進行頁碼比較。HashedPageTableHashedPageTable這是一個鏈表,每個元素包含兩項(page和frame)先搜素第一個元素HashedPageTable第一個沒找到,再搜索第二個元素HashedPageTable第二個元素找到p,對應frame是rHashedPageTable完成地址映射反向頁表每個進程一個頁表還是整個系統只用一個頁表IPT‘s
Motive:解決頁表空間太多、太大的問題,整個系統僅用一個分頁表反向頁表對于每個真正的內存頁或幀才有一個條目。每個條目包含保存在真正內存位置的頁的虛擬地址,以及擁有該頁的進程的信息。雖然這種方案減低了存儲每個頁表所需要的內存空間,但是當引用頁時它增加了查找頁表所需要的時間。可使用hash表來減少查找的次數反向頁表結構共享頁共享代碼可以在進程之間共享共同代碼(只讀的,可重入的)(如文本編輯器、編譯器、Windows系統)共享代碼必須出現在所有進程邏輯地址的同一位置私有代碼和數據每個進程保留了代碼與數據的獨立的拷貝私有代碼和數據頁可以出現在邏輯地址空間的任何地方。共享分頁實例另一個非連續內存管理方案-分段從用戶(程序)的觀點進行內存管理用戶并不關心內存是怎么組織的,線性矩陣?鏈表?不關心,也不愿意管其形式,用戶更多的是看他所編寫的程序,而一個程序是一些段(segment)的集合,一個段是一個邏輯單位,Aprogramisacollectionofsegments.Asegmentisalogicalunitsuchas:mainprogram,procedure,function,method,object,localvariables,globalvariables,commonblock,stack,symboltable,arrays62程序員角度的程序分段結構邏輯地址由2部分組成: <segment-number,offset>,段表(Segmenttable)–mapstwo-dimensionalphysicaladdresses;eachtableentryhas:基址base–containsthestartingphysicaladdresswherethesegmentsresideinmemory界限limit–specifiesthelengthofthesegment段表基址寄存器Segment-tablebaseregister(STBR)pointstothesegmenttable’slocationinmemory段表長度寄存器Segment-tablelengthregister(STLR)indicatesnumberofsegmentsusedbyaprogram; segmentnumbersislegalifs<STLR64分段硬件ExampleofSegmentation分段結構(Cont.)分段保護Witheachentryinsegmenttableassociate:validationbit=0illegalsegmentread/write/execu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 租賃車輛管理辦法暫緩
- 小區公攤物業管理辦法
- 管理人員職務管理辦法
- 省級人民醫院管理辦法
- 房屋簽約制度管理辦法
- 眼部瑜伽培訓課件文案
- 腸胃細胞健康課件
- 腸癰的護理課件
- 人事管理培訓課件
- 店長培訓內容流程課件
- 2025年中國工商銀行招聘筆試備考題庫(帶答案詳解)
- 新課標(水平三)體育與健康《籃球》大單元教學計劃及配套教案(18課時)
- 《生物安全培訓》課件-2024鮮版
- GB/T 14454.4-2008香料折光指數的測定
- (完整版)形式發票模版(國際件通用)
- BIM技術在施工項目管理中的應用
- 25公斤級平焊法蘭及螺栓規格尺寸
- 小升初火車過橋問題
- 中文版EN-12546
- 動葉可調式軸流風機動葉調節原理圖
- 長三角地區地圖(可以隨意更改顏色、轉動、組合))
評論
0/150
提交評論