操作系統—存儲管理

   突然發現自己好久沒寫博客了,前段時間忙着實習的筆試,看了很多方面的書,感覺有點凌亂,這幾天再重新溫習一下,寫一下博客就當是做做筆記,記錄一下學習的過程吧!下面本上是屬於知識點的歸納,基本上本博客裏面的概念很多都是來自於其他博客,在這裏只是個自己做一個歸納和總結: 

1.http://blog.csdn.net/lwlliang/article/details/6212262 
2.http://blog.csdn.net/gaoxiaohong2010/article/details/5956065 
3.http://blog.csdn.net/lwlliang/article/details/6212262 
4.http://blog.csdn.net/wushuai1346/article/details/7245414
 
一、存儲管理的基本概念 
1)邏輯地址與物理地址 
在具有地址變換機構的計算機中,允許程序中編排的地址和信息實際存放在內存中的地址有所不同。前者叫邏輯(相對)地址,後者叫物理(絕對)地址。 
2)重定位:爲了保證作業的正確執行,必須根據分配給作業的主存區域對作業中指令和數據的存放進行重定位,這種 把邏輯地址轉換成絕對地址 的工作稱爲重定位或地址轉換。重定位的方式有靜態重定位和動態重定位兩種 
(1)靜態重定位 
在裝入一個作業時,把作業中的指令地址和數據地址全部轉換成絕對地址。這種轉換工作是在作業開始前集中完成的,在作業執行過程中無需再進行地址轉換。所以稱爲“靜態重定位”。 
(2)動態重定位 
在裝入一個作業時,不進行地址轉換,而是直接把作業裝到分配的主區域中。在作業執行過程中,每當執行一條指令時都由硬件的地址轉換機構轉換成絕對地址。這種方式的地址轉換是在 作業執行時動態完成 的,所以稱爲動態重定位。 
二、固定分區存儲管理 
分區存儲管理是把存儲器中的用戶區作爲一個連續區或分成若干連續區進行管理。早先使用一個分區的存儲管理,後發展成多分區的存儲管理。多個分區的管理可採用固定分區方式和可變分區方式。 
1、固定分區存儲管理的原理 
固定分區的意思就是指主存空間劃分成若干連續區後,這些分區的大小和個數就 固定不變。 
固定分區管理利用一張“ 主存分配表 ”說明各分區的情況。裝入和結束作業均通過這個分區表來記錄分區使用的變化情況。 
2、如何實現存儲保護 
固定分區管理可採用靜態重定位的方式裝入作業。裝入程序把作業中的邏輯地址轉換爲絕對地址。並檢查絕對地址是否在指定(裝入)的分區內,如果是,就裝入這個作業。否則就不能裝入。如果裝入主存分區的作業佔用處理器時(注意,是運行時),進程調度程序(不是裝入程序了)必須把作業所在分區的上下限地址存入“下限寄存器”和“上限寄存器”中,這樣可以在指令執行中判斷其所用到的絕對地址是否越界,達到存儲保護的目的。 
3、怎樣提高主存空間的利用率這裏有幾種辦法: 
(1)分區按大小順序排列,這樣可以使作業總是先使用滿足要求的最小分區。 
(2)根據經常出現的作業大小和頻率劃分分區。 
(3)按作業的對主存空間的需求量排成多個隊列,規定隊列與分區的對應關係。也就是說多大的作業只能放在多大的分區裏,就算有更大的分區空着,也不許他進入。 
三、可變分區的管理 
可變就是指分區的 大小和位置不是固定 的,而是根據作業要求的主存量來分配分區的大小。 
1、主存的分配和回收 
在系統初始化時,主存除了操作系統所佔部分外,整個用戶區是一個大的空閒區,可以按作業需要的空間大小順序分配空閒區直到不夠時爲止。 
當作業結束時,它的佔用分區被收回。這個空閒區又可以根據新作業的大小重新用於分配,所以主存中的已佔分區和空閒區的數目和大小都是在變化的。可以用兩張表“已分配區表”和“空閒區表”來記錄和管理。 
2、常用的分配算法 
最先適應分配算法 :簡單地說,就是在分區表中順序查找,找到夠大的空閒區就分配。但是這樣的分配算法可能形成許多不連續的空閒區,造成許多“碎片”,使主存空間利用率降低。 
最優適應分配算法 :這種算法總是挑選一個能滿足作業要求的最小空閒區。但是這種算法可能形成一些極小的空閒區,以致無法使用,這也會影響主存利用率。 
最壞適應分配算法 :這種算法和上面的正好相反,它總是挑一個最大的空閒區分給作業使用,使剩下的空間不至於太小。 
3、地址轉換與存儲保護 
採用可變分區方式管理時,一般均採用動態重定位方式裝入作業。也就是每讀一條指令,都要變換一次地址。變換要靠硬件支持,主要是兩個寄存器 :基址寄存器和限長寄存器,限長寄存器存放作業所佔分區的長度,基址寄存器則存放作業所佔分區的起始地址,這兩個值確定了一個分區的位置和大小。轉換時根據邏輯地址與限長值比較,如果不有超過這個值,表示訪問地址合法,再加上基址寄存器中的值就得到了絕對地址了,否則形成“地址越界”中斷。達到存儲保護的目的。 
對於共享程序,則硬件提供兩組限長寄存器和基址寄存器。訪問時對訪問區享區和作業區的地址分別進行轉換。 
4、移動技術的應用 
移動技術要“移動”的東東就是主存空間中的作業。把某個作業移到另一處主存空間去(在磁盤整理中我們應用的也是類似的移動技術),這樣的最大好處就是可以合併一些空閒區。 
但是移動技術的應用也要注意以下問題。 
移動會增加系統開銷。所以要儘量減少移動。 
移動是有條件的,如果作業在執行過程中正等待與外圍設備傳輸信息,就不能移動。因此在移動時首先要判定該作業是否與外設交換信息。 
四、頁式存儲管理 
1、如何分頁和分塊 
頁式存儲管理中有兩個名詞:“ 頁 ”和“ 塊 ”,其中的“塊”是針對硬件來說的,就是把存儲器分成若干相等大小的區,每個區就稱爲一個塊。對應的,在程序中,邏輯地址進行“分頁”,其大小和每個塊相一致。 
事實上,頁面的大小是由塊的大小自然決定的。對於程序來說,其邏輯地址還是和原來一樣採用連續的地址。只是 按照塊的位數取其前面數位做爲頁號 . 
分配空間時,根據作業長度可以確定它的頁面數,根據這個頁面數在主存中分配相應的塊數,只要是空閒塊就可以放入,即使不是相鄰的。並把分配情況記在“頁表”中,根據頁表可以找到相對應的頁號與塊號,就得出絕對地址了。 
2、採用頁式管理,使主存空間充分利用,頁不必爲了得到連續空間而進行移動。 可以提高系統效率。 
3、頁表的構造與作用
 
每個被裝入主存的作業都有一張 頁表 ,指出該作業邏輯地址中的頁號與所佔用的主存塊號之間的對應關係。頁表的長度由作頁擁有的頁面數決定,行號對應爲頁號,行中記錄的是主存中的塊號。 
頁表是硬件進行地址轉換的依據,每執行一條指令時按邏輯地址中的頁號查找頁表並轉換成絕對地址。 
在多道程序設計系統中,進入主存的每個作業都有一張頁表,由一個硬件“頁表控制寄存器”來記錄每個作業的頁表所在位置和長度以便作業轉換時同時轉換頁表。 
4、快表的構造與作用 
快表 就是頁表的一部分克隆,每行中有頁號及其對應的塊號,整個快表存放在一個小容量的高速緩存中,訪問時快表和內存同時進行查找,因爲快錶速度很快,而常用的頁都登記在快表中,因此可以大大加快執行速度。 
5、利用位示圖實現頁式存儲空間的分配和回收 
頁式存儲管理把主存空間分成大小固定的許多塊,在裝業作業時,如何知道主存中哪些塊已使用,哪些還未用,可以用位示圖來表示。 
五、段式存儲管理 
1、段式存儲中段的劃分 
段式管理 是根據人們對 程序 中需要 分段編制 的要求出發而提供的。它提供給用戶編程時使用的邏輯地址由“段號”和“段內地址”兩部分組成,其形式和頁式管理相同。 
但是實際上是不同的:頁式存儲管理提供連續邏輯地址由系統自動分頁,段式存儲管理中的作業分段是由用戶決定的,每段獨立編程,因此段間的邏輯地址是不連續的。 
2、段式存儲空間的分配 
這種分配方法和可變分區管理方式的分配方法相同,所不同的是:可變分區管理方式中是爲每個作業分一個區,而段式管理是爲一個作業中的每個段分一個連續的空間。(段式管理更細)。 
3、段表的構造與作用 
段表由段號,本段限長和起始地址三部分組成,由於每一行記錄的行號可以對應程序的段號,因此段號實際上被省略,不佔存儲空間。 
與其他管理方式一樣,段表記錄的信息用於地址轉換和存儲保護。段表的表目起到了基址/限長寄存器的作用。 
4、段式存儲管理的地址轉換 
這個轉換過程如同可變分區方式的地址轉換,但是由段表的表目替代了基址/限長寄存器。 
絕對地址=根據段號找到段表中的起始地址+段內地址 (如果段內地址超過限長則產生“地址越界”程序性中斷事件達到存儲保護) 
多道程序設計系統中,每個進入主存的作業都建立了段表,因此還有一個硬件“段表控制寄存器”來記錄每個作業的段表在主存中的位置和長度。 
六、虛擬存儲器 
1、什麼是虛擬存儲器 
虛擬存儲器 是爲“擴大”主存容量而採用的一種設計技巧,它利用作業在只裝入部分信息時就可以執行的特性和程序執行中表現出來的局部性特性,藉助於大容量的輔助存儲器實現小主存空間容納大邏輯地址空間的作業。 
2、虛擬存儲器的實現原理 
它的工作原理如下:首先把作業信息保留在磁盤上,當作業請求裝入時,只將其中一部分先裝入主存,作業執行中若要訪問的信息不在主存中,則再設法將這些信息裝入主存。 
3、分頁式虛擬存儲器的實現 
頁式虛擬存儲管理 是在 頁式存儲管理 的基礎上實現的。首先把作業信息作爲副本存放在磁盤上,作業執行時,把作業信息的部分頁面裝入主存儲器,作業執行時若所訪問的頁面已經在主存中,則進行地址轉換,得到絕對地址,否則產生“缺頁中斷”由操作系統把當前所需的頁面裝入主存。 
4、常用的頁面調度算法 
當主頁中無空閒塊時,爲了裝入一個頁面,就必須按某種算法將主存中某個頁調出,調入所需裝入的頁面。這就是頁面調度。常用的算法有:先進先出調度算法,最近最少使用調度算法和最近最不常用調度算法 
5、缺頁中斷率 
如果作頁執行中訪問頁面的總次數爲A,其中有F次訪問的頁面尚未裝入主存,則有F次缺頁中斷,f=F/A,這裏的f就稱爲缺頁中斷率。 
6、段式虛擬存儲器的實現 
段式虛擬存儲管理 以 段式存儲管理 爲基礎,在磁盤上保留作業的各個分段信息,作業執行時把需要執行的一段或幾段裝入主存。在實際使用中,也要進行查表和地址轉換以及“缺段中斷” 和調度(包括調出、裝入、移動等)工作 
七、下面是我在網上看到的一個關於操作系統存儲管理的比喻,我覺得挺好的,我們可以根據這個例子對存儲管理有個更好的認識 
操作系統的存儲管理如同一個大地主,管着一個大莊園,當有農戶需要租用田地時,地主就給分配一塊地讓他種(用戶區分配)。等到地裏長出了果實(結果出來後,地主還得來收回這塊地(去配)。爲了管好這片田地,地主還要管好莊園的門,凡是要進去種地的,都得由地主根據他的需要讓他到位置確定實際的田地上去幹活。(把邏輯地址轉換成物理地址),莊園裏還有一些大家共同可以使用的地方,比如地主的花園,工具房等,大家可以進去,也可以使用,但是不許改變任何現有的東東,還有,每個農戶只能在自己的地裏刨食吃,如果有人膽敢到別人地裏或地主的花園裏摘花偷食,可要當心他們養的狼狗跳出來哦。(共享和保護),當然,再大的地也是不夠多的,地主爲了多賺些錢,當所有的地都租出去的時候,他想辦法把有些種田人暫時不種的那塊地裏的東東連地皮一起挖出來放到倉庫裏先堆着。把地騰出來租給別人種(這一招可夠絕的,不過地主說啦,這就是“虛擬存儲”。)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章