作業系統 記憶體管理

2021-06-26 00:53:46 字數 2543 閱讀 3850

記憶體管理:在單道程式設計系統中,記憶體被分為兩部分:一部分供作業系統使用,一部分供當前正在執行的程式使用。在多道程式設計系統中,必須在記憶體中進一步細分出「使用者部分」,以滿足多個程序的要求。細分的任務由作業系統動態完成,這成為記憶體管理。

記憶體管理術語:

頁框:記憶體中乙個固定長度的塊。

頁:乙個固定長度的資料塊,儲存在二級儲存器中(如磁碟)。資料頁可以臨時複製到記憶體的頁框中。

段:乙個變長的資料塊,儲存在二姐儲存器中。整個段可以臨時複製到記憶體的乙個可用區域內(分段),或者可以將以段分為許多頁,將每頁單獨複製到記憶體中(分段與分頁相結合)。

記憶體管理需求:

重定位:記憶體通常是由很多個程序共享的,假如程序a和b共享位址dd,那麼如果在a執行時候你想執行b,那麼這時候就會出現b無法進入位址dd的問題,所以我們這時候需要採用重定位技術,將b載入到其它位址去,不能讓程序在一棵樹上吊死啊。

保護:假如將程序比作你女朋友,如果她不能受到保護,後果可想而知。而且不能是絕對位址保護,必須是在執行時檢查程序產生的所有記憶體訪問,這個得交給警察(處理器—硬體)來保護了,你不可能保護你女朋友走過的每一寸土地啊。當然啦,使用者系統不能訪問作業系統的任何部分。

共享:任何保護機制都必須具有一定的靈活性,以允許過個程序訪問記憶體的同一部分。

邏輯組織:暫不知該如何描述

物理組織:暫不知該如何描述

記憶體分割槽

記憶體管理技術:

技術說明

優勢弱點

固態分割槽

在系統生成階段,記憶體被劃分成許多靜態分割槽。程序可以被裝入到大於或等於自身大小的分割槽中。

實現簡單,只需要極少的作業系統開銷

由於有內部碎片,對記憶體的使用不充分;活動程序的最大數目是固定的

動態分割槽

分割槽是動態建立的,因而使得每個程序可以被裝入到與自身大小正好相等的分割槽中

沒有內部碎片;可以更充分地使用記憶體

由於需要壓縮外部碎片,處理器利用率低

簡單分頁

記憶體被劃分成許多大小相等的頁框;每個程序被劃分成許多大小與頁框相等的頁;要裝入乙個程序,需要把程序包含的所有段都裝入到記憶體不一定連續的某些頁框中

沒有外部碎片

有少量的內部碎片

簡單分段

每個程序被劃分成許多段;要裝入乙個程序,需要把程序包含的所有段都裝入到記憶體內不一定連續的某些動態分割槽中

沒有內部碎片;相對於動態分割槽,提高了記憶體利用率,減少了開銷

存在外部碎片

虛擬記憶體分頁

除了不需要裝入乙個程序的所有頁之外,與簡單分頁一樣;非駐留頁在以後需要時自動調入記憶體

沒有外部碎片;支援更高道數的多道程式設計;巨大的虛擬位址空間

複雜的記憶體管理開銷

虛擬記憶體分段

除了不需要裝入乙個程序的所有段之外,與簡單分段一樣;非駐留段在以後需要時自動調入記憶體

沒有內部碎片;支援更高道數的多道程式設計;巨大的虛擬位址空間;支援保護和共享

複雜的記憶體管理開銷

固定分割槽:又分為分割槽大小相等和大小不等兩種情況,其中分割槽大小相等容易造成內部碎片,分割槽大小不等在系統生成的時候就確定了分割槽數目,這限制了系統中活動程序的數目,而且極易造成小作業不能有效利用分割槽空間的情況。

動態分割槽:其分割槽長度和數目是可變的。當程序被裝入記憶體時,系統會給它分配一塊和它所需容量完全相等的記憶體空間,不多也不少。但隨著時間的推移,記憶體中產生了越來越多的碎片,記憶體的利用率隨之下降,這種現象稱為外部碎片。為了解決外部碎片問題,引入了壓縮技術對外部碎片進行壓縮,但這卻會對cpu造成額外的開銷。

夥伴系統:固定分割槽和動態分割槽都有缺陷,於是引入了夥伴系統,其實就是把記憶體劃分成切成ab兩份,如果程序大小剛好大於b的一半,小於或等於b,就將程序放在b中,否則b繼續切成等大的兩塊。程序釋放後就再將兩塊等大的記憶體合併起來。

重定位:

邏輯位址是指與當前資料在記憶體中的物理分配位址無關的訪問位址,在執行對記憶體的訪問之前必須把它轉換成實體地址。相對位址是邏輯位址的乙個特例,是相對於某些已知點的儲存單元。實體地址或絕對位址是資料在記憶體中的實際位置。

乙個程序是不可能已知占用某個固定實體地址而不改變的。它是可改變的,所以我們需要乙個硬體機制,在乙個程序被首次載入時,**中的相對記憶體訪問被絕對的記憶體位址代替,這個絕對位址由程序被載入到的基位址確定。

分段:分段技術和分頁技術原理差不多,不過段的最大長度有限制,但是段大小並不需要相等。

安全問題:

記憶體和虛擬記憶體是容易受到安全威脅的系統資源。程序中的記憶體,未授權則不允許訪問,除非其中的某部分已經宣告可以被指定的程式共享,而且操作操作必須保證只有被指定的執行緒可以訪問這部分記憶體。

緩衝區溢位攻擊,也即記憶體越界。

預防緩衝區溢位:

編譯時防禦系統,目的是強化系統以抵制潛伏於新程式中的惡意攻擊。

執行時防禦系統,目的是檢測並中止現有程式中的惡意攻擊。

作業系統記憶體管理

作業系統記憶體管理 一 程序的虛擬位址空間 每個程序都被賦予自己的虛擬位址空間,對於32位程序來說,這個位址空間為4g,因此程序中的位址可以為0x00000000至0xffffffff之間的任何乙個值。其中4g空間中的低區的2g空間留給程序使用,而高區的2g空間則留給系統使用。在windows200...

作業系統記憶體管理

作業系統記憶體管理一 程序的虛擬位址空間 每個程序都被賦予自己的虛擬位址空間,對於 32位程序來說,這個位址空間為 4g,因此程序中的位址可以為 0x00000000 至0xffffffff 之間的任何乙個值。其中 4g空間中的低區的 2g空間留給程序使用,而高區的 2g空間則留給系統使用。在win...

作業系統記憶體管理

記憶體,毫無疑問是最重要的資源,顯然,作業系統對記憶體的管理我必須清楚。這裡主要介紹了分頁管理和分段管理。1.頁式管理 a.頁式管理的基本思想 打破儲存分配的連續性 將邏輯上連續的使用者程式對映到離散的記憶體塊 使用者程式與記憶體空間被劃分為若干等長的區域 邏輯頁 與 物理頁 使用者程式的劃分由系統...