3.內存管理

1)物理地址:就是內存的地址,是以字節為單位,對內存單元的編址。
2)邏輯地址:用戶源程序經過編譯或匯編后形成的目標指令代碼的編址。
3)地址空間:地址的編址范圍
4)物理地址空間:內存地址的編址范圍。也就是計算內存的編址范圍,它是由實際的物理內存的大小決定的。
5)邏輯的地址空間:用戶程序指令的編址范圍,是由程序的大小決定的。

一、重定位

(1)重定位:

是把程序的邏輯地址 變成 內存中的實際物理地址空間的過程。靠的是地址變換機構。

(2)靜態重定位

在程序裝入內存的過程中完成,是指在程序開始運行前,程序中的各個地址有關的項均已完成重定位,地址變換通常是在裝入時一次完成的,以后不再改變,故成為靜態重定位。

(3)動態重定位

它不是在程序裝入內存時完成的,而是CPU每次訪問內存時 由動態地址變換機構(硬件)自動進行把相對地址轉換為絕對地址。動態重定位需要軟件和硬件相互配合完成。
動態重定位技術依賴于地址變換機構

二、分區管理

單一連續區分配

把內存化成若干個連續的區域,每個連續區叫做一個分區,這種分配方案叫做分區式分配方案。

1.固定式分區

分區大小均等(管理簡單,程序太大運行不了,太小浪費) 、分區大小不等

(1)分區表:

記錄分區號、起始地址、分區大小、占用大小等。

2.可變式分區

可變式分區1.png
可變式分區2.png
可變式分區3.png

分區分配表:記錄已分配分區信息。

空閑分區表:記錄空閑分區信息。

3.分區分配算法

(1)首次適應算法

首次適應算法1.png

(2)循環首次適應算法

(3)最佳適應算法

(4)最壞適應算法

4.分區回收

分區回收1.png

當用戶程序執行結束后,系統要回收已使用完畢的分區,將其記錄在空閑區表中。在收回空間是,應首先檢查是否有與回收區相鄰的空閑區,若有則應合并成一個空閑區,并于空閑表中登記。有四種情況,上相鄰、下相鄰、上下相鄰、上下不相鄰。

①上相鄰:起始地址不變,分區大小相加。

②下相鄰:終止地址不變,分區大小相加。

③上下相鄰:上,起始地址不變;下,終止地址不變。分區大小相加。(空閑區-1)

④上下不相鄰:直接記錄。(空閑區+1)

5.緊縮(拼接、搬家、緊湊)

緊縮.png
緊縮1.png

三、分頁管理(最主要的)

分頁管理1.png

進程的每個頁面離散地分配到了內存中的任意物理塊(頁面對應的物理塊可以是不連續的,靈活性高。)中,使每個頁面對應的物理塊。

核心:頁表。

分頁管理也并未徹底解決:零頭問題(可能存在業內零頭)。

1.頁表

在頁式存儲管理系統中,允許將進程的每一項離散地存儲在內存的任意物理塊中,但系統應能保證進程的正確進行,即能在內存中找到每個頁面所對應的物理塊。為此,系統又為每個進程建立一張頁面映射表,簡稱頁表,在進程地址空間的所有頁,都在頁表中有一個表項,其中記錄了相應頁在內存中所對應的物理塊號。在配置了頁表后,進行執行時,通過查找頁表,即可找到每頁在內存中的物理塊號。可見,頁表的作用是實現從頁號到物理塊號的地址映射。

即使在簡單的頁式存儲管理系統中,也常在頁表的表項中設置一存取控制字段,用于對該存儲塊的內容進行保護,當存取控制字段僅有一位時,可用來規定該存儲塊中的內容是允許讀/寫、還是只讀;若存儲控制字段威二位,則可規定為讀/寫、只讀和只執行等存取方式。如果有一個進程試圖去寫一個只允許讀的存儲塊時,則將引起操作系統的一次中斷。如果要利用頁式存儲管理系統區實現虛擬存儲器,則還需要增加一數據項。


頁表.png

2.頁 碼 與 偏 移 量(重點)

頁碼與偏移量:A:邏輯地址。L:頁面大小。
P(頁號)=INT[A/L] ,
d(偏移量)=[A] MOD L

3.地址變換(重點)

地址變換1.png

頁號p 小于 總頁數時,頁表f = 頁號p。

地址變換.png
地址變換例1.png

4.快表

快表1.png

快表是一種特殊的高速緩沖存儲器(Cache),內容是頁表中的一部分或全部內容

在操作系統中引入快表是為了加快地址映射速度

在虛擬頁式存儲管理中設置了快表,作為當前進程頁表的Cache。通常快表處于MMU(內存管理單元https://baike.baidu.com/item/MMU/4542218?fr=aladdin

)中。

5.快表與頁表的區別和聯系

頁表指出邏輯地址中的頁號與所占主存物理塊號的對應關系。頁式存儲管理在用動態重定位方式裝入作業時,要利用頁表做地址轉換工作。

快表就是存放在高速緩沖存儲器的部分頁表。作為頁表的Cache,它的作用與頁表相似,但是提高了訪問速率。由于采用頁表做地址轉換,讀寫內存數據時CPU要訪問兩次主存。有了快表,有時只要訪問一次高速緩沖存儲器,一次主存,這樣可加速查找并提高指令執行速度。

快表例1.png
缺點:

分頁系統存在的一個無法容忍,同時也是分頁系統無法解決的一個缺點就是:一個進程只能占有一個虛擬地址空間。在此種限制下,一個程序的大小至多只能和虛擬空間一樣大,其所有內容都必須從這個共同的虛擬空間內分配。

四、分段管理

1.概念

為每一個段分配一個連續的內存分區,段與段之間可以不連續,段在內存中的位置通過段表來描述。

分段管理就是將一個程序按照邏輯單元分成多個程序段,每一個段使用自己單獨的虛擬地址空間。例如,對于編譯器來說,我們可以給其5個段,占用5個虛擬地址空間,并分配一段連續的地址空間(段內要求連續,段間不要求連續,因此整個作業的地址空間是二維的)。

如此,一個段占用一個虛擬地址空間,不會發生空間增長時碰撞到另一個段的問題,從而避免因空間不夠而造成編譯失敗的情況。如果某個數據結構對空間的需求超過整個虛擬之地所能夠提供的空間,則編譯仍將失敗。不過出現這種可能的概率恐怕不會比太陽從西邊出來的概率高出多少。

在頁式系統中,邏輯地址的頁號和頁內偏移量對用戶是透明的,但在段式系統中,段號和段內偏移量必須由用戶顯示提供,在髙級程序設計語言中,這個工作由編譯程序完成。

2.段表

每個進程都有一張邏輯空間與內存空間映射的段表,其中每一個段表項對應進程的一個段,段表項記錄該段在內存中的起始地址和段的長度。

段表.png

在配置了段表后,執行中的進程可通過查找段表,找到每個段所對應的內存區。可見,段表用于實現從邏輯段到物理內存區的映射

分段管理1.png

3.地址變換

分段管理地址變換.png

4.信息共享

分段系統的一個突出優點,是易于實現段的共享,對段的保護也十分簡單。

段式管理信息共享.png

5.分段內存管理的優缺點

【優點】:
  • 每個邏輯單元可單獨占用一個虛擬地址空間,這樣使得編寫程序的空間大為增長。

  • 由于段式按邏輯關系劃分,因此信息共享起來十分方便

  • 對于空間稀疏的程序來說,分段管理將節省大量的空間

【缺點】:
  • 存在外部碎片,一個段必須全部加載到內存。

五、分頁與分段的主要區別

  • 頁式系統中,邏輯地址的頁號和頁內偏移量對用戶是透明的,但在段式系統中,段號和段內偏移量必須由用戶顯示提供

  • 分頁是一維地址空間,分段是二維的(段內和段間)

  • 頁的大小不可變段的大小可以動態改變

  • 頁和段都有存儲保護機制。但存取權限不同:段有讀、寫和執行三種權限而頁只有讀和寫兩種權限

六、段頁式管理

在段頁式系統中,為了便于實現地址變換,須配置一個段表寄存器,其中存放段表始址和段表長TL。進行地址變換時,首先利用段號S,將它與段表長TL進行比較。若S<TL,表示未越界,于是利用段表始址

段頁式管理地址變換.jpg

和段號來求出該段所對應的段表項在段表中的位置,從中得到該段的頁表始址,并利用邏輯地址中的段內頁號P來獲得對應頁的頁表項位置,從中讀出該頁所在的物理塊號b,再利用塊號b和頁內地址來構成物理地址。右圖示出了段頁式系統中的地址變換機構。

在段頁式系統中,為了獲得一條指令或數據,須三次訪問內存。第一次訪問是訪問內存中的段表,從中取得頁表始址;第二次訪問是訪問內存中的頁表,從中取出該頁所在的物理塊號,并將該塊號與頁內地址一起形成指令或數據的物理地址;第三次訪問才是真正從第二次訪問所得的地址中,取出指令或數據。

顯然,這使訪問內存的次數增加了近兩倍。為了提高執行速度,在地址變換機構中增設一個高速緩沖寄存器。每次訪問它時,都須同時利用段號和頁號去檢索高速緩存,若找到匹配的表項,便可從中得到相應頁的物理塊號,用來與頁內地址一起形成物理地址若未找到匹配表項,則仍須再三次訪問內存

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
禁止轉載,如需轉載請通過簡信或評論聯系作者。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,321評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,559評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,442評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,835評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,581評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,922評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,931評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,096評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,639評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,374評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,591評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,104評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,789評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,196評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,524評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,322評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,554評論 2 379