讓人看了流淚的句子:愛情使人忘記時間,時間也使人忘記愛情_第1頁
讓人看了流淚的句子:愛情使人忘記時間,時間也使人忘記愛情_第2頁
讓人看了流淚的句子:愛情使人忘記時間,時間也使人忘記愛情_第3頁
讓人看了流淚的句子:愛情使人忘記時間,時間也使人忘記愛情_第4頁
讓人看了流淚的句子:愛情使人忘記時間,時間也使人忘記愛情_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第四章存儲器管理

/i/89.html第四章存儲器管理裝入和鏈接連續(xù)分配方式基本分頁存儲管理方式基本分段存儲管理方式虛擬存儲器請求分頁存儲管理方式頁面置換算法請求分段存儲管理方式4.1程序的裝入和鏈接編輯―――編譯―――鏈接―――裝入―――運行4.1.1程序的裝入1、絕對裝入:編譯后,裝入前已產生了絕對地址(內存地址),裝入時不再作地址重定位。絕對地址的產生:(1)由編譯器完成,(2)由程序員編程完成。對(1)而言,編程用符號地址。2、可重定位裝入:靜態(tài)重定位:裝入時完成,主要工作是對相對地址中的指令和數據地址的調整過程,例:圖4-23.動態(tài)運行時裝入在執(zhí)行時才完成相對—絕對地址的轉換,且有硬件的支持,能保證進程的可移動性。0100025005000LOAD1,2500LOAD1,250036536510000110001250015000作業(yè)地址空間內存空間圖4-24.1.2程序的鏈接1、靜態(tài)鏈接

程序運行之前,鏈接成完整的裝入模塊a.對相對地址的修改b.變換外部調用符號2、裝入時動態(tài)鏈接

目標模塊在裝入內存時,邊裝入邊鏈接a.便于修改和更新b.便于實現對目標模塊的共享3、運行時動態(tài)鏈接程序執(zhí)行需要時,才將某些目標模塊進行鏈接模塊ACALLB;RETURN模塊BCALLC;RETURN模塊CRETURN0L-10M-10N-1(a)目標模塊模塊AJSRL;RETURN模塊BJSRL+M;RETURN模塊CRETURN0L-1LL+M-1L+ML+M+N-1(b)裝入模塊4.2連續(xù)分配方式單一連續(xù)分配用于單用戶,單任務中分區(qū)式分配固定式動態(tài)式動態(tài)重定位4.2.1單一連續(xù)分配單用戶單任務系統(tǒng)區(qū)+用戶區(qū)存貯保護一般不設置保護也可,因單任務。

用戶程序位于RAM中的操作系統(tǒng)00xfff…用戶程序位于ROM中的操作系統(tǒng)0用戶程序位于RAM中的操作系統(tǒng)0位于ROM中的設備驅動程序大型機和小型計算機上,現在很少用掌上型計算機和嵌入式系統(tǒng)中早期的PC中,BIOS(basicinputoutputsystem)4.2.2固定分區(qū)特點:內存劃為n個分區(qū),可同時裝入n個作業(yè)/任務。一、分區(qū)大?。合嗟?缺乏靈活性不相等:利用率更高。二、內存分配:將分區(qū)按大小排序,建立分區(qū)使用表,并將起始地址、大小、分配標識作記錄檢索分區(qū)使用表找能滿足要求的尚未分配的分區(qū)放到能容納作業(yè)的最小分區(qū)的隊列中。作業(yè)C作業(yè)B作業(yè)A操作系統(tǒng)20K32K64K128K256K~~~~分配情況已分配1281284已分配64643已分配32322已分配20121狀態(tài)起址(K)大?。↘)分區(qū)號分區(qū)說明表輸入隊列的組織每個分區(qū)有獨立輸入隊列:小分區(qū)的隊列長,大分區(qū)的隊列空,浪費只維護一個輸入隊列:一旦有分區(qū)空閑,就把該分區(qū)能容納的作業(yè)中最接近隊列前面的作業(yè)調入分區(qū):小作業(yè)浪費大分區(qū)

對隊列進行搜索,一旦有分區(qū)空閑,就取該分區(qū)所能容納的最大的一個作業(yè)運行:對小作業(yè)不利

至少保留一個小分區(qū),允許小作業(yè)運行,而不至于為小作業(yè)分配大分區(qū)規(guī)定一個作業(yè)至多允許被跳過的次數,之后就不能被跳過了

操作系統(tǒng)分區(qū)1分區(qū)2分區(qū)3分區(qū)40100k200k400k700k800k操作系統(tǒng)分區(qū)1分區(qū)2分區(qū)3分區(qū)44.2.3動態(tài)分區(qū)分配(比固定式分區(qū)有改善)根據進程需要,動態(tài)地為之分配內存空間一、數據結構1.空閑分區(qū)表2.空閑分區(qū)鏈4.2.3動態(tài)分區(qū)分配二、分配算法1.首次適應算法FF。要求:分區(qū)按低址――高址鏈接特點:找到第一個大小滿足的分區(qū),劃分。有外零頭,低址內存使用頻繁。2.循環(huán)首次適應算法。從1中上次找到的空閑分區(qū)的下一個開始查找。特點:空閑分區(qū)分布均勻,提高了查找速度;缺乏大的空閑分區(qū)。3.最佳適應算法分區(qū)按大小遞增排序;分區(qū)釋放時需插入到適當位置。4.2.3動態(tài)分區(qū)分配三、分區(qū)分配1.分配:請求分區(qū)u.size空閑分區(qū)m.size內存回收時的情況2.回收:(1)上鄰空閑區(qū):合并,改大小(2)下鄰空閑區(qū):合并,改大小,首址。(3)上、下鄰空閑區(qū):合并,改大小。(4)不鄰接,則建立一新表項。4.2.4可重定位分區(qū)分配1.動態(tài)重定位的引入連續(xù)式分配中,總量大于作業(yè)大小的多個小分區(qū)不能容納作業(yè)。緊湊通過作業(yè)移動將原來分散的小分區(qū)拼接成一個大分區(qū)。緊湊10KB用戶程序3

必須對移動了的作業(yè)進行重定位。動態(tài)(因作業(yè)已經裝入,隨著對指令或數據的訪問自動進行)2、動態(tài)重定位的實現0100250050002500100001000010100+1250015000作業(yè)J處理機一側存儲器一側重定位寄存器相對地址主存動態(tài)分區(qū)分配算法流程圖4.2.5對換1對換的引入將阻塞進程,暫時不用的程序,數據換出。將具備運行條件的進程換入。類型:整體對換:進程對換,解決內存緊張部分對換:頁面對換/分段對換:提供虛存支持操作系統(tǒng)A操作系統(tǒng)AB操作系統(tǒng)ABC操作系統(tǒng)BC操作系統(tǒng)DC操作系統(tǒng)ACD內存分配情況隨著進程進出而變化4.2.5對換2對換空間的管理外存對換區(qū)比文件區(qū)側重于對換速度。因此,對換區(qū)一般采用連續(xù)分配。采用數據結構和分配回收類似于可變化分區(qū)分配。4.2.5對換3換出與換入1)換出a.選出被換出進程: 因素:優(yōu)先級,駐留時間,進程狀態(tài)b.換出過程:對于共享段:計數減1,是0則換出,否則不換修改PCB和MCB(或內存分配表)2)換入:a.選擇換入進程:優(yōu)先級,換出時間等。b.申請內存。c.換入4.3基本分頁存儲管理連續(xù)分配引起:碎片碎片問題的解決:緊湊方式,消耗系統(tǒng)開銷。換一種思路:離散分配

允許將一個進程直接分散的裝入到許多不相鄰的分區(qū)中分頁分段段頁1).頁面(page)進程的邏輯空間分成若干個大小相等的頁面,編號內存空間分為同等大小的物理塊(frame),編號頁面大小要適中:頁太小:內存碎片小,頁表可能很長,換入/出效率低頁太大:頁內碎片大。2的冪4.3.1頁面與頁表2).地址結構邏輯地址A頁面大小L頁號P和頁內地址d:

P=INT[A/L]d=[A]modL如:L=1024B,A=2170B.則P=2,d=12216 1211 0為每個進程建立一張頁面映像表

進程邏輯地址內存中對應的塊號函數,實現從頁號到物理塊號的地址映射存取控制字段讀/寫/執(zhí)行3).頁表用戶程序頁表頁號塊號內存

4.3.2地址變換機構實現:邏輯頁號——物理塊號的映射,借助頁表完成。1、基本地址變換機構:

每個進程對應一頁表,其信息(如長度、始址)放在PCB中,執(zhí)行時將其首地址和頁表長度裝入頁表寄存器。越界保護將十進制的邏輯地址1023,4500轉換為物理地址以十進制的邏輯地址1023為例,畫出地址轉換圖例:已知某分頁系統(tǒng),內存容量為64KB,每頁為1KB。對一個4頁大的作業(yè),其調入內存的頁面對應的物理塊號如下表:1)對上述邏輯地址,可先計算出它們的頁號和頁內地址,然后通過頁表轉換成對應的物理地址:1023:1023/1K=頁號0,頁內地址1023,物理快號2,則物理地址為:2*1K+1023=30714500:4500/1K=頁號4,頁內地址404,頁號>頁表長度,則越界中斷401023210232467≤2.具有快表的地址變換機構不具快表,則需兩次訪問內存。(1)訪問頁表,得到物理地址(2)訪問物理地址,得到所需內容降低1/2的性能,發(fā)現只有少量的頁表表項被反復讀取解決辦法:設置一硬件設備,將虛擬地址直接映射到物理地址,速度提高。聯想寄存器(快表)快表貴,不能太多。2.具有快表的地址變換機構

例:有一頁式系統(tǒng),其頁表存放在主存中:①如果對主存的一次存取需要1.5μs,試問實現一次頁面訪問的存取時間是多少?②如果系統(tǒng)加有快表,平均命中率為85%,當頁表項在快表中時,其查找時間忽略為0,試問此時的存取時間是多少?答:若頁表存放在主存中,則要實現一次頁面訪問需兩次訪問主存:一次是訪問頁表,確定所存取頁面的物理地址(稱為定位)。第二次才根據該地址存取頁面數據?!鲰摫碓谥鞔娴拇嫒≡L問時間=1.5*2=3(μs)■增加快表后的存取訪問時間=0.85*1.5+(1-0.85)*2*1.5=1.725(μs)4.3.3兩級和多級頁表頁表可能很大,將其離散存放在不同頁塊中。建一“外部頁表”來管理這些離散頁表塊。相當于單級頁表中的頁表寄存器,一般應常駐內存。每項記錄頁表始址,且增加存在位。64位機器頁表一般>3級,最外層頁表常駐。4.4基本分段存儲管理為了滿足用戶(程序員)在編程和使用上的要求即多重定位分區(qū)管理4.4.1引入

每個段可有其邏輯意義及功能,使得便于(1)方便編程;(2)分段共享;(3)分段保護;(4)動態(tài)鏈接;(5)動態(tài)增長;(如數據段的增長)4.4.2分段系統(tǒng)的基本原理分段地址空間被劃分為若干個段,每段定義了一組邏輯信息。段號+段內地址。段表:Mapping:邏輯段物理內存區(qū)每段分配一個連續(xù)分區(qū),各段離散在不同分區(qū)中地址變換機構:分頁與分段區(qū)別:(1)頁是信息的物理單位,段是邏輯單位(2)頁長度固定,段長度不固定(由用戶指定)(3)一維與二維(Main)=030K(X)=120K(D)=230K(S)=330K40K80K120K150K04.4.3信息共享段式系統(tǒng)易于共享例:圖4-18及4-19分頁與分段共享比較可重入碼(純代碼)各個進程應保留局部數據區(qū)40個用戶,程序中160K代碼,40K數據,每頁4K,則代碼40個頁面,數據區(qū)10個頁面進程1進程2頁表頁表主存分頁系統(tǒng)中共享editor分段系統(tǒng)中共享editor4.4.4段頁式存儲管理一、基本原理先將用戶程序分成若干段,再把每個段分成若干頁,并為每一段賦予一個段名段號(S)分頁的優(yōu)點:提高內存利用率分段的優(yōu)點:方便和滿足用戶04K8K12K15K04K8K04K8K10K段內頁號(P)頁內地址(W)主程序段子程序段數據段

?各取所長4.4.4段頁式存儲管理二、地址變換段表寄存器:存放段表始址和段長段表寄存器段表頁表主存利用段表和頁表實現地址映射4.4.4段頁式存儲管理二、地址變換段表寄存器:存放段表始址和段長段號S與段長進行比較,越界?未越界,則用段表始址和段號S求段表項的位置,讀出該段的頁表始址用段內頁號P求頁表項的位置,讀出物理塊號b用塊號b和頁內地址W構成物理地址段表寄存器段表頁表++>段超長段頁式系統(tǒng)的地址變換機構4.4.4段頁式存儲管理三次訪內存操作訪問內存中的段表,得頁表始址訪問內存中的頁表,得到物理地址訪問物理地址,得到所需內容為提高速度,在地址變換機構中增設一高速緩沖寄存器(Cache)4.5虛擬存儲器怎么辦?

增加物理內存or邏輯上增加內存全部裝入內存后才能運行?大作業(yè):超出內存容量?作業(yè)多:不能全部容納4.5.1虛擬存儲器的引入1.常規(guī)存儲管理的特征:一次性(指全部裝入)不是所有的程序和數據都能用到,一次性裝入是一種浪費駐留性(指駐留在內存不換出)I/O等待或僅運行一次的進程長期占據內存資源是一種浪費

問題:是否需要一次性將作業(yè)全部裝入作業(yè)是否需要長期地駐留在內存4.5.1虛擬存儲器的引入2.局部性原理程序在執(zhí)行時將呈現出局部性規(guī)律:即在一較短時間內,程序的執(zhí)行僅限于某個部分;相應地,它所訪問的存儲空間也局限于某個區(qū)域。程序在執(zhí)行時,除了少部分的轉移和過程調用指令外,在大多數情況下仍是順序執(zhí)行的。過程調用將會使程序的執(zhí)行有一部分內存區(qū)域轉至另一部分區(qū)域,在大多數情況下,過程調用的深度都不超過5。循環(huán)結構將執(zhí)行多次程序中對數據結構的處理,往往都局限于小的范圍內。局部性表現時間局部性:(循環(huán))指令一旦執(zhí)行,不久以后可能再次執(zhí)行;數據結構被訪問,則不久以后可能再次被訪問空間局部性:(順序)一旦程序訪問了某個存儲單元,不久之后,其附近的存儲單元也被訪問4.5.1虛擬存儲器的引入3、虛擬存貯器基于局部性原理,一個作業(yè)在運行之前,沒有必要全部裝入內存,而僅將那些當前要運行的那部分頁面或段,先裝入內存便可啟動運行,其余部分暫時留在磁盤上。

定義:具有請求調入功能和置換功能,能從邏輯上對內存容量進行擴充的一種存儲系統(tǒng)。實質:以時間換空間,但時間犧牲不大。虛擬大小由內存容量和外存容量之和決定。4.5.2虛擬存儲器的實現方法虛擬存儲器的實現,毫無例外地都是建立在離散分配存儲管理方式的基礎上的。??連續(xù)分配方式需要動態(tài)重定位4.5.2虛擬存儲器的實現方式一、請求分頁系統(tǒng)在分頁系統(tǒng)的基礎上,增加請求調頁功能和頁面置換功能。以頁為單位進行置換需硬件:(1)請求分頁的頁表機制(2)缺頁中斷機構(3)地址變換機構需實現請求分頁機制的軟件(置換軟件等)二、請求分段系統(tǒng)在分段系統(tǒng)的基礎上,增加請求調段功能和分段置換功能。以段為單位進行置換需硬件:(1)請求分段的段表結構(2)缺段中斷機構(3)地址變換機構需實現請求分段機制的軟件(置換軟件等)三、段頁式虛擬存儲器4.5.3虛擬存儲器的特征虛擬存儲器最基本的特征是離散性,在此基礎上又形成了多次性及對換性的特征。其所表出來的最重要的特征是虛擬性。1、離散性離散性是指在內存分配是采用離散分配方式,這是其他幾個特征的基礎。沒有離散性,也就不可能實現虛擬存儲器。2、多次性多次性是指一個作業(yè)被分成多次地調入內存運行3、對換性對換性是指允許在作業(yè)的運行過程中換進、換出。換進、換出能有效地提高內存利用率4、虛擬性虛擬性是指能夠從邏輯上擴允內存容量,使用戶所看到的內存容量遠大于實現內存容量。4.6請求分頁存儲管理在分頁系統(tǒng)的基礎上,增加請求調頁功能和頁面置換功能。以頁為單位進行置換——長度固定實現簡單,最常用需硬件:(1)請求分頁的頁表機制(2)缺頁中斷機構(3)地址變換機構一、頁表機制頁表項:二、缺頁中斷機構:

每當所要訪問的頁面不在內存時,便要產生一缺頁中斷,請求OS將所缺之頁調入內存。4.6.1請求分頁中的硬件支持涉及6次缺頁中斷的指令6543214.6.1請求分頁中的硬件支持三、地址變換機構比簡單分頁機制,增加了缺頁中斷處理和頁面置換過程:先檢索快表,如果找到該頁,則修改頁表項中的訪問位、修改位等,再計算形成物理地址;如果未找到,則應再到內存中去查找頁表,看其頁表項中的狀態(tài)位P,確定該頁是否調入內存。如果:(1)該頁已經調入內存:應將此頁的頁表項寫入快表,當快表已滿時,應先調出一個按某種算法所確定的頁的頁表項,然后再寫入該頁的頁表項。(2)該頁尚未調入內存,這時便應產生缺頁中斷,請求OS從外存中把該頁調入內存。4.6.2內存分配策略和分配算法一、最小物理塊數是指能保證進程正常運行所需的最小物理塊數。單地址指令且采用直接尋址方式,最小物理塊數為2允許間接尋址時,則至少要求有3個物理塊。

指令長度≥2,源地址和目的地址涉及的區(qū)域跨頁面,則至少要求6個

4.6.2內存分配策略和分配算法二、物理塊的分配策略分配策略:固定和可變分配策略。置換策略:全局置換和局部置換。于是可組合出以下三種頁面分配和置換策略。1.固定分配局部置換。缺點:難以確定固定分配的頁數.(少:頻繁缺頁,置換率高多:浪費)2.可變分配全局置換預先分配好,缺頁時從系統(tǒng)空閑隊列里取出分配,用完時選一頁調出置換3.可變分配局部置換根據進程的缺頁率進行頁面數調整,進程之間相互不會影響。三、分配算法1.平均分配算法將系統(tǒng)中所有可供分配的物理塊,平均分配給各個進程:沒考慮進程大小2.按進程大小比例分配算法:系統(tǒng)中各進程頁面數的總和為:

每個進程所能分配到的物理塊數為bi:

3.考慮優(yōu)先權分配算法把可供分配的物理塊分成:一部分按比例地分給各進程;另一部分則根據各進程的優(yōu)先權,適當地增加其相應份額后,分配給各進程。

4.6.3調頁策略1.調入時機:預調:采用一種以預測為基礎的預調頁策略,預計在不久之后便會被訪問的程序或數據所在的頁面,預先調入內存

成功率50%請求調:當進程在運行中需要訪問某部分程序的數據時,發(fā)現其所在的頁面不在內存,需立即提出請求,由系統(tǒng)將其所需頁面調入內存。較費系統(tǒng)開銷各有優(yōu)劣4.6.3調頁策略2.從何處調頁:對換區(qū)空間足夠大:全部從對換區(qū)調入所需頁面,以提高調頁速度。為此,在進程運行前,將進程有關文件從文件區(qū)拷貝到對換區(qū)。對換區(qū)空間不夠大:不會被修改的文件,直接從文件區(qū)調入;可能被修改的部分,換出時須先調到對換區(qū),需要時從對換區(qū)調入。UNIX方式:與進程有關的文件放在文件區(qū),未運行過的頁面,從文件區(qū)調入;運行過的而又被換出的頁面,放在對換區(qū),下次調入時從對換區(qū)調入。3.頁面調入過程所需頁面未在內存時,缺頁中斷,查找頁表得到該頁外存物理塊號,再找置換頁(回寫問題),完成調入,改頁表目的:減少對換量,提高系統(tǒng)性能4.7.1最佳置換算法和先進先出算法一、最佳置換算法(理論上的)4.7頁面置換算法缺頁率:6/124.7頁置換算法二、先進先出算法FIFO缺頁率:9/124.7.2最近最久未用LRU置換將“最近的過去”,作為“最近的將來”。選擇最近最久未使用的頁面予以淘汰所要解決的問題有:一個進程在內存中的各個頁面各有多久時間未被進程訪問;如何快速地知道哪一頁最近最久未使用的頁面硬件支持:

1.位移寄存器:(定時右移) R=R

溫馨提示

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

評論

0/150

提交評論