Decode360's Blog

          業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            302 隨筆 :: 26 文章 :: 82 評論 :: 0 Trackbacks
          存儲管理方法詳解
          ?
          ?
          ??? 存儲管理是操作系統(tǒng)的重要組成部分,它負責計算機系統(tǒng)內(nèi)存空間的管理。其目的是充分利用內(nèi)存空間,為多道程序并發(fā)執(zhí)行提供存儲基礎(chǔ),并盡可能地方便用戶使用。
          ?
          ????采用多道程序設(shè)計技術(shù),就要在內(nèi)存中同時存放多道程序,這就要求存儲管理解決以下四個重要問題,以達到盡可能方便用戶使用和充分利用內(nèi)存以提高內(nèi)存利用率的目的:
          ??? 1.內(nèi)存空間的分配和回收
          ??? 2.內(nèi)存空間的共享與存儲保護
          ??? 3.地址映射(地址重定位)
          ??? 4.內(nèi)存擴充
          ?
          1、連續(xù)分區(qū)存儲管理
          ?
          ??? 這是一種最簡單的存儲管理方式,系統(tǒng)是將整個內(nèi)存除了給操作系統(tǒng)劃分出一塊空間外,其余部分的空間都分配給一個作業(yè)使用。當作業(yè)被調(diào)度時,進程全部進入內(nèi)存,一旦完成,所有主存恢復(fù)空閑。個人機可采用此種管理方法,它不適宜多道程序設(shè)計系統(tǒng)。
          ?
          ?
          2、固定分區(qū)存儲管理
          ?
          ??? 這是支持多道程序設(shè)計的最簡單存儲管理方法。它的其基本思想是將內(nèi)存劃分成若干固定大小的分區(qū),每個分區(qū)中最多只能裝入一個作業(yè)。當作業(yè)申請內(nèi)存時,系統(tǒng)按一定的算法為其選擇一個適當?shù)姆謪^(qū),并裝入內(nèi)存運行。由于分區(qū)大小是事先固定的,因而可容納作業(yè)的大小受到限制,而且當用戶作業(yè)的地址空間小于分區(qū)的存儲空間時,容易產(chǎn)生磁盤碎片,造成存儲空間浪費。
          ?
          ?
          3、可重定位分區(qū)存儲管理
          ?
          ??? 這是克服固定分區(qū)碎片問題的一種存儲分配方法,它不是預(yù)先將內(nèi)存劃分分區(qū),而是在作業(yè)裝入內(nèi)存時建立分區(qū),使分區(qū)的大小正好與作業(yè)要求的存儲空間相等。這種處理方式使內(nèi)存分配有較大的靈活性,也提高了內(nèi)存利用率。但是隨著對內(nèi)存不斷地分配、釋放操作會引起存儲碎片的產(chǎn)生。
          ?
          ??? 注:使用首先適應(yīng)/最優(yōu)適應(yīng)/最壞適應(yīng)的方式即這種。
          ?
          ?
          4、非請求分頁式存儲管理
          ?
          ??? 非請求分頁式是指將存儲空間和作業(yè)的地址空間分成若干個等分部分的分頁式,要求把進程所需要的頁面全部調(diào)入主存后作業(yè)方能運行,因此,當內(nèi)存可用空間小于作業(yè)所需的地址空間時,作業(yè)無法運行。它克服了分區(qū)存儲管理中碎片多和緊縮處理時間長的缺點,支持多道程序設(shè)計,但不支持虛擬存儲
          ?
          ?
          5、請求分頁式存儲管理
          ?
          ??? 與非請求分頁式一樣將存儲空間和作業(yè)的地址空間分成若干個等分部分,當進程需要用到某個頁面時將該頁面調(diào)入主存,把那些暫時無關(guān)的頁面留在主存外。它支持虛擬存儲,克服了分區(qū)存儲管理中碎片多和緊縮處理時間長的缺點,支持多道程序設(shè)計,但是它不能實現(xiàn)對最自然的以段位單位的共享與存儲保護。
          ?
          ??? 注1:因為程序通常是以段位單位劃分的,所以以段位單位最自然。
          ??? 注2:這里會有先進先出調(diào)度算法(FIFO)、最近最少使用調(diào)度算法(LRU)、最近最不經(jīng)常使用調(diào)度算法(LFU)這樣的算法。
          ?
          ?
          6、段頁式存儲管理
          ?
          ??? 這是分段式和分頁式結(jié)合的存儲管理方法,充分利用了分段管理和分頁管理的優(yōu)點。作業(yè)按邏輯結(jié)構(gòu)分段,段內(nèi)分頁,內(nèi)存分塊。作業(yè)只需部分頁裝入即可運行,所以支持虛擬存儲,可實現(xiàn)動態(tài)鏈接和裝配。
          ?
          ??? 注:邏輯地址與物理地址的對應(yīng)關(guān)系。
          ?
          ?
          ?
          ?
          具體的講解可以看以下地址:
          ?
          http://59.67.71.237:8080/ls/web/study/content/chapter3.htm
          ?
          ********************************************************************************************************
          ?
          第三章 存儲管理

          ??? 存儲管理是操作系統(tǒng)的重要組成部分,它負責計算機系統(tǒng)內(nèi)存空間的管理。其目的是充分利用內(nèi)存空間,為多道程序并發(fā)執(zhí)行提供存儲基礎(chǔ),并盡可能地方便用戶使用。

          3.1 存儲管理的目的

          ??? 采用多道程序設(shè)計技術(shù),就要在內(nèi)存中同時存放多道程序,這就要求存儲管理解決以下四個重要問題,以達到盡可能方便用戶使用和充分利用內(nèi)存以提高內(nèi)存利用率的目的。

          ??? 一、內(nèi)存空間的分配和回收

          ??? 二、內(nèi)存空間的共享與存儲保護

          ??? 三、地址映射(地址重定位)

          ??? 四、內(nèi)存擴充

          3.2 單用戶連續(xù)存儲管理

          ??? 這是一種最簡單的存儲管理方式,系統(tǒng)是將整個內(nèi)存除了給操作系統(tǒng)劃分出一塊空間外,其余部分的空間都分配給一個作業(yè)使用。個人機可采用此種管理方法,它不適宜多道程序設(shè)計系統(tǒng)。

          ??? 可以采用靜態(tài)重定位方式完成地址映射;處理器在執(zhí)行指令時,要檢查其絕對地址是否屬于規(guī)定范圍內(nèi)的地址,如果屬于,則按此地址訪問,否則將產(chǎn)生“地址越界”中斷。

          ??? 某些系統(tǒng)還采用對換技術(shù)(Swapping)讓多個進程輪流進入內(nèi)存,這種技術(shù)多用于分時系統(tǒng),隨著進程調(diào)度,將內(nèi)存中的進程暫時移到外存,而把外存中某一進程換進內(nèi)存。

          3.3 固定分區(qū)存儲管理

          ??? 其基本思想是將內(nèi)存劃分成若干固定大小的分區(qū),每個分區(qū)中最多只能裝入一個作業(yè)。當作業(yè)申請內(nèi)存時,系統(tǒng)按一定的算法為其選擇一個適當?shù)姆謪^(qū),并裝入內(nèi)存運行。由于分區(qū)大小是事先固定的,因而可容納作業(yè)的大小受到限制,而且當用戶作業(yè)的地址空間小于分區(qū)的存儲空間時,造成存儲空間浪費。

          ??? 一、空間的分配與回收

          ??? 系統(tǒng)設(shè)置一張“分區(qū)分配表”來描述各分區(qū)的使用情況,登記的內(nèi)容應(yīng)包括:分區(qū)號、起始地址、長度和占用標志。其中占用標志為“ 0 ”時,表示目前該分區(qū)空閑;否則登記占用作業(yè)名(或作業(yè)號)。有了“分區(qū)分配表”,空間分配與回收工作是比較簡單的。

          ??? 二、地址轉(zhuǎn)換和存儲保護

          ??? 固定分區(qū)管理可以采用靜態(tài)重定位方式進行地址映射。

          為了實現(xiàn)存儲保護,處理器設(shè)置了一對“下限寄存器”和“上限寄存器”。當一個已經(jīng)被裝入主存儲器的作業(yè)能夠得到處理器運行時,進程調(diào)度應(yīng)記錄當前運行作業(yè)所在的分區(qū)號,且把該分區(qū)的下限地址和上限地址分別送入下限寄存器和上限寄存器中。處理器執(zhí)行該作業(yè)的指令時必須核對其要訪問的絕對地址是否越界。

          ??? 三、多作業(yè)隊列的固定分區(qū)管理

          ??? 為避免小作業(yè)被分配到大的分區(qū)中造成空間的浪費,可采用多作業(yè)隊列的方法。即系統(tǒng)按分區(qū)數(shù)設(shè)置多個作業(yè)隊列,將作業(yè)按其大小排到不同的隊列中,一個隊列對應(yīng)某一個分區(qū),以提高內(nèi)存利用率。

          3.4 可變分區(qū)

          ??? 可變分區(qū)存儲管理不是預(yù)先將內(nèi)存劃分分區(qū),而是在作業(yè)裝入內(nèi)存時建立分區(qū),使分區(qū)的大小正好與作業(yè)要求的存儲空間相等。這種處理方式使內(nèi)存分配有較大的靈活性,也提高了內(nèi)存利用率。但是隨著對內(nèi)存不斷地分配、釋放操作會引起存儲碎片的產(chǎn)生。

          ??? 一、空間的分配與回收

          ??? 采用可變分區(qū)存儲管理,系統(tǒng)中的分區(qū)個數(shù)與分區(qū)的大小都在不斷地變化,系統(tǒng)利用“空閑區(qū)表”來管理內(nèi)存中的空閑分區(qū),其中登記空閑區(qū)的起始地址、長度和狀態(tài)。當有作業(yè)要進入內(nèi)存時,在“空閑區(qū)表”中查找狀態(tài)為“未分配”且長度大于或等于作業(yè)的空閑分區(qū)分配給作業(yè),并做適當調(diào)整;當一個作業(yè)運行完成時,應(yīng)將該作業(yè)占用的空間作為空閑區(qū)歸還給系統(tǒng)。

          ??? 可以采用首先適應(yīng)算法、最佳(優(yōu))適應(yīng)算法和最壞適應(yīng)算法三種分配策略之一進行內(nèi)存分配。

          ??? 二、地址轉(zhuǎn)換和存儲保護

          ??? 可變分區(qū)存儲管理一般采用動態(tài)重定位的方式,為實現(xiàn)地址重定位和存儲保護,系統(tǒng)設(shè)置相應(yīng)的硬件:基址 / 限長寄存器(或上界 / 下界寄存器)、加法器、比較線路等。

          ??? 基址寄存器用來存放程序在內(nèi)存的起始地址,限長寄存器用來存放程序的長度。處理機在執(zhí)行時,用程序中的相對地址加上基址寄存器中的基地址,形成一個絕對地址,并將相對地址與限長寄存器進行計算比較,檢查是否發(fā)生地址越界。

          ??? 三、存儲碎片與程序的移動

          ??? 所謂碎片是指內(nèi)存中出現(xiàn)的一些零散的小空閑區(qū)域。由于碎片都很小,無法再利用。如果內(nèi)存中碎片很多,將會造成嚴重的存儲資源浪費。解決碎片的方法是移動所有的占用區(qū)域,使所有的空閑區(qū)合并成一片連續(xù)區(qū)域,這一技術(shù)稱為移動技術(shù)(緊湊技術(shù))。移動技術(shù)除了可解決碎片問題還使內(nèi)存中的作業(yè)進行擴充。顯然,移動帶來系統(tǒng)開銷加大,并且當一個作業(yè)如果正與外設(shè)進行 I/O 時,該作業(yè)是無法移動的。

          3.5 頁式存儲管理

          3.5.1 基本原理

          ??? 1 .等分內(nèi)存

          ??? 頁式存儲管理將內(nèi)存空間劃分成等長的若干區(qū)域,每個區(qū)域的大小一般取 2 的整數(shù)冪,稱為一個物理頁面有時稱為塊。內(nèi)存的所有物理頁面從 0 開始編號,稱作物理頁號。

          ??? 2 .邏輯地址

          ??? 系統(tǒng)將程序的邏輯空間按照同樣大小也劃分成若干頁面,稱為邏輯頁面也稱為頁。程序的各個邏輯頁面從 0 開始依次編號,稱作邏輯頁號或相對頁號。每個頁面內(nèi)從 0 開始編址,稱為頁內(nèi)地址。程序中的邏輯地址由兩部分組成:

          邏輯地址

          頁號p

          頁內(nèi)地址 d

          ??? 3 .內(nèi)存分配

          ??? 系統(tǒng)可用一張“位示圖”來登記內(nèi)存中各塊的分配情況,存儲分配時以頁面(塊)為單位,并按程序的頁數(shù)多少進行分配。相鄰的頁面在內(nèi)存中不一定相鄰,即分配給程序的內(nèi)存塊之間不一定連續(xù)。

          ??? 對程序地址空間的分頁是系統(tǒng)自動進行的,即對用戶是透明的。由于頁面尺寸為 2 的整數(shù)次冪,故相對地址中的高位部分即為頁號,低位部分為頁內(nèi)地址。

          3.5.2 實現(xiàn)原理

          ??? 1 .頁表

          ??? 系統(tǒng)為每個進程建立一張頁表,用于記錄進程邏輯頁面與內(nèi)存物理頁面之間的對應(yīng)關(guān)系。地址空間有多少頁,該頁表里就登記多少行,且按邏輯頁的順序排列,形如:

          邏輯頁號

          主存塊號

          0

          B0

          1

          B1

          2

          B2

          3

          B3

          ??? 2 .地址映射過程

          ??? 頁式存儲管理采用動態(tài)重定位,即在程序的執(zhí)行過程中完成地址轉(zhuǎn)換。處理器每執(zhí)行一條指令,就將指令中的邏輯地址( p,d )取來從中得到邏輯頁號 (p) ,硬件機構(gòu)按此頁號查頁表,得到內(nèi)存的塊號 B’ ,便形成絕對地址( B’,d , 處理器即按此地址訪問主存。

          ??? 3 .頁面的共享與保護

          ??? 當多個不同進程中需要有相同頁面信息時,可以在主存中只保留一個副本,只要讓這些進程各自的有關(guān)項中指向內(nèi)存同一塊號即可。同時在頁表中設(shè)置相應(yīng)的“存取權(quán)限”,對不同進程的訪問權(quán)限進行各種必要的限制。

          3.6 段式存儲管理

          3 6 1 基本原理

          ??? 1.邏輯地址空間

          ??? 程序按邏輯上有完整意義的段來劃分,稱為邏輯段。例如主程序、子程序、數(shù)據(jù)等都可各成一段。將一個程序的所有邏輯段從0開始編號,稱為段號。每一個邏輯段都是從0開始編址,稱為段內(nèi)地址。

          ??? 2.邏輯地址

          ??? 程序中的邏輯地址由段號和段內(nèi)地址(s,d)兩部分組成。

          ??? 3.內(nèi)存分配

          ??? 系統(tǒng)不進行預(yù)先劃分,而是以段為單位進行內(nèi)存分配,為每一個邏輯段分配一個連續(xù)的內(nèi)存區(qū)(物理段)。邏輯上連續(xù)的段在內(nèi)存不一定連續(xù)存放。

          3.6.2實現(xiàn)方法

          ??? 1.段表

          ??? 系統(tǒng)為每個進程建立一張段表,用于記錄進程的邏輯段與內(nèi)存物理段之間的對應(yīng)關(guān)系,至少應(yīng)包括邏輯段號、物理段首地址和該段長度三項內(nèi)容。

          ??? 2.建立空閑區(qū)表

          ??? 系統(tǒng)中設(shè)立一張內(nèi)存空閑區(qū)表,記錄內(nèi)存中空閑區(qū)域情況,用于段的分配和回收內(nèi)存。

          ??? 3.地址映射過程

          段式存儲管理采用動態(tài)重定位,處理器每執(zhí)行一條指令,就將指令中的邏輯地址( s,d )取來從中得到邏輯段號 (s) ,硬件機構(gòu)按此段號查段表,得到該段在內(nèi)存的首地址 S’ 該段在內(nèi)存的首地址 S’ 加上段內(nèi)地址 d ,便形成絕對地址( S’+d ),處理器即按此地址訪問主存。

          3 6 3 段頁式存儲管理

          ??? 頁式存儲管理的特征是等分內(nèi)存,解決了碎片問題;段式存儲管理的特征是邏輯分段,便于實現(xiàn)共享。為了保持頁式和段式上的優(yōu)點,結(jié)合兩種存儲管理方案,形成了段頁式存儲管理。

          ??? 段頁式存儲管理的基本思想是:把內(nèi)存劃分為大小相等的頁面;將程序按其邏輯關(guān)系劃分為若干段;再按照頁面的大小,把每一段劃分成若干頁面。程序的邏輯地址由三部分組成,形式如下:

          邏輯地址

          段號 s

          頁號 p

          頁內(nèi)地址 d

          ??? 內(nèi)存是以頁為基本單位分配給每個程序的,在邏輯上相鄰的頁面內(nèi)存不一定相鄰。

          ?? ? 系統(tǒng)為每個進程建立一張段表,為進程的每一段各建立一張頁表。地址轉(zhuǎn)換過程,要經(jīng)過查段表、頁表后才能得到最終的物理地址。

          3.7 虛擬存儲管理

          ??? 前面介紹的各種存儲管理方案有一點是共同的,即當一個參與并發(fā)執(zhí)行的進程運行時,其整個程序都在內(nèi)存,存在的缺點是:若一個進程的尺寸比內(nèi)存可用空間大,則該進程無法運行;而實際上由于局部特性,一個進程在運行的任一階段只使用所占存儲空間的一部分,因此未用到的內(nèi)存區(qū)域就被浪費。

          ??? 虛擬存儲管理是當進程要求運行時,不是將它的全部信息裝入內(nèi)存,而是將其一部分先裝入內(nèi)存,另一部分暫時留在外存(通常是磁盤)。進程在運行過程中,如果要訪問的信息不在內(nèi)存時,發(fā)中斷由操作系統(tǒng)將它們調(diào)入內(nèi)存,以保證進程的正常運行。

          ??? 虛擬存儲管理分為頁式虛擬存儲管理、段式虛擬存儲管理和段頁式虛擬存儲管理。

          3.7.1頁式虛擬存儲管理

          ??? 一、基本原理

          ??? 基本思想是,在進程開始執(zhí)行之前,不是裝入全部頁面,而是只裝入一個或幾個頁面,然后根據(jù)進程執(zhí)行的需要,動態(tài)地裝入其他頁面。

          ??? 頁表中將增加若干項:標志位(又稱駐留位),指示該頁是否裝入內(nèi)存;外存地址給出該頁在外存(磁盤)的地址。

          ??? 地址映射時當從頁表標志位得知此頁不在內(nèi)存時,發(fā)缺頁中斷。此時暫停進程執(zhí)行,CPU轉(zhuǎn)去執(zhí)行缺頁中斷處理程序,負責把所需的頁從外存調(diào)入到內(nèi)存某空閑塊中,并把物理頁號填入頁表、更改標志位,然后再返回繼續(xù)執(zhí)行被中斷的進程。

          ??? 二、頁面淘汰

          ??? 當內(nèi)存已無空閑塊而又發(fā)生缺頁中斷時,必須在內(nèi)存中選擇一頁面將其淘汰并寫回到外存,然后再換進新的頁面,這一過程稱為頁面調(diào)度,選擇被淘汰頁面的算法稱作頁面調(diào)度算法。如果頁面淘汰算法不合理,可能產(chǎn)生剛被淘汰出去的一頁,又要訪問它,因而又要把它調(diào)入,如此反復(fù),使系統(tǒng)的頁面調(diào)入調(diào)出工作非常頻繁從而降低系統(tǒng)效率,這種現(xiàn)象稱為“顛簸”或“抖動”。

          ??? 常用的頁面調(diào)度算法有:先進先出調(diào)度算法(FIFO)、最近最少使用調(diào)度算法(LRU)和最近最不經(jīng)常使用調(diào)度算法(LFU)。

          ?? 注意,對于單用戶連續(xù)、固定分區(qū)、可變分區(qū)存儲管理是不能實現(xiàn)虛擬存儲管理的,因為它們的共同點是,在對作業(yè)進行內(nèi)存分配時是將整個作業(yè)全部、連續(xù)地放入內(nèi)存。

          ******************************************************************************************************** ?





          -The End-

          posted on 2009-04-25 21:13 decode360-3 閱讀(2299) 評論(0)  編輯  收藏 所屬分類: Exam
          主站蜘蛛池模板: 赤水市| 永平县| 成安县| 汽车| 板桥市| 沙雅县| 五台县| 崇明县| 富源县| 南皮县| 台州市| 孟州市| 麻城市| 灵宝市| 广丰县| 盘山县| 丹凤县| 红安县| 北安市| 商洛市| 佛冈县| 沽源县| 那坡县| 海兴县| 武穴市| 乐清市| 庆城县| 西乌珠穆沁旗| 兴和县| 常德市| 盐城市| 隆子县| 巴林右旗| 灵台县| 滦南县| 新河县| 新巴尔虎右旗| 临沂市| 靖江市| 松原市| 涞源县|