日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

系统内存管理简介

發布時間:2025/4/16 windows 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 系统内存管理简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

系統內存管理簡介

  • 系統內存管理簡介
    • 常見的名詞解釋
    • 單塊內存管理法
    • 分區管理法
    • 頁式管理法
    • 幀與頁
    • 小結

系統以為單位,將內存劃分為一個個存儲單位,每個存儲單位都有一個地址。指向地址的指針以字的大小為單位移動。目前常見的字單位為32位(4byte)或者64位(8byte)。

常見的名詞解釋

  • 邏輯地址(logical address):僅對程序可見,從0開始計量
  • 真實地址(physical addr):系統對內存的真實地址編號
  • 地址聯編(addr binding):將邏輯地址映射到真實地址

就地址聯編這一塊,不同的內存管理方式聯編的方式也不同。邏輯與物理兩套地址的規劃,使得內存管理有極大的自由。程序編譯階段,使用地址就是邏輯地址,當機器碼loading進系統開始運行的時候,系統才開始地址聯編。這使得程序中地址表示是一致的,具體真實占用哪些地址,到地址聯編的決定。

單塊內存管理法

想象這樣一種理想狀況,系統中除了操作系統(OS)只有一個APP。那么除了OS占用部分內存,剩下的都是APP進程的內存。


圖1 單塊內存管理法

我們使用兩套地址管理,邏輯地址和物理地址。物理地址面向程序,從0開始計數,物理地址描述內存的實際地址規劃。

圖1中表示的是邏輯地址+基本地址=物理地址?;镜刂稟加上邏輯地址L,得到真實地址。

分區管理法

單塊內存管理中只允許單個APP運行,實際上內存可以容納多個APP同時運行。這時候的做法是將內存分為多個區,除了OS外,每一個APP占用一個連續、獨立的分區。

分區方式有:

  • 固定分區:引導OS初期就固定分好區間,以后不再變
  • 動態分區:根據需求動態分配區間,區間可以在內存中移動

無論單塊內存,還是分區內存,同樣遵循邏輯地址和真實地址兩套管理法。每個分區都有自己的一套邏輯地址,用于內部交流,但最終和系統交互的時候,都需要采用物理地址。即聯編方式,分區管理中地址信息存儲在寄存器中。基址寄存器存儲分區當前分區的起始位置,界限寄存器存儲分區的長度。當前進程的請求地址不可以超過分區長度。


圖2 分區內存管理

那么分區的大小如何決定,這取決于匹配進程的方式??偣灿腥N方式:

  • 最先匹配:驗證當前內存往下走,第一個符合進程需求的大小分配分區
  • 最佳匹配:尋找可用容器中最小的分區
  • 最差匹配:尋找最大的符合進城需求的分區

前兩者適用于固定分區,便于節省內存。

最后一個符合動態分區,動態分配要求盡量滿足當前需求,后期再進行調整。連續的小空分區,可以合并成一個大的空分區。并且作業也可以在內存中移動,以空出更大的空間,成為壓縮。

最后,無論是固定分區還是動態分區,整個進程必須同時載入內存中,一個分區必須能夠容納整個APP。這也就可以看出頁式內存管理的優越性,他引出了虛擬內存的的概念。

頁式管理法

頁式管理同樣遵循邏輯地址和物理地址的概念,但是這里啟用兩個新的概念,面向物理地址,面向進程地址。

頁式管理中,將進程(Process)以頁為單位分割,同時將內存劃分為一個個幀。頁和幀可以大小不同,為了方便起見,這里將其視為相同。

總結下來,幀描述內存,頁描述進程。內存加載進程的方式是通過幀載入頁

程序面向的是頁地址,這時地址聯編需要找的是幀,這就需要一本字典,即PMT(page map table)。每一個進程都需要維護一張PMT,表中記錄每一個對應的。


圖3 頁式內存管理法

這樣的規劃管理上增加了復雜度,但是好處也是巨大的。

無論是單塊內存管理還是分區管理,都需要整塊連續的內存用來存儲進程,相比頁式管理內存的利用率則相差太多。分區管理中,如果找不到能夠容納整個進程的連續地址,則無法載入進程。頁式管理中,內存和頁都是一塊塊的,他們分散在各處,無需專門開辟一塊連續的空間,內存可以見縫插針為頁分配可用的頁。

同時,分頁內存管理的方式也引入了請求分頁虛擬內存的概念。請求分頁意思是,由于CPU同一時刻只需要進程的部分數據,因此就不必將整個進程都加載進內存。當某些頁面被需要的時候,系統先訪問內存,如果該頁面不存在,則訪問二級存儲將信息加載進內存,與此同時,新的頁面加入使得原有的頁面退出該幀的使用,該過程稱為頁面交換。

請求分頁的引入使得有時候,內存好像無限大一樣,內存載入的進程的總大小遠遠大于內存大小,這種現象稱為虛擬內存。

頁面交互大大提高了內存的利用率,但是當頁面頻繁交換的時候,交換過程占用過多的時間,使得進程顯得不穩定,表現為使用不斷地卡頓,這個現象稱為系統顛簸

幀與頁

幀就是大小固定的內存塊,比如為1024。頁就是進程地址,表示為一個坐標<頁位置,偏移量>。系統中(邏輯地址/1024)的商為頁面位置,余數為偏移量。因此,頁坐標不得大于幀大小。根據頁坐標和PMT就可找到物理地址(幀地址)。這就形成了從邏輯地址到物理地址的閉環。(僅憑記憶回顧,存疑

小結

最后總結一下頁式管理法。一個APP載入系統,在系統表現為進程,一個或者多個。系統為每一個進程分配內存,將Process分割成頁,將內存分割成幀。之后,根據情況為頁分配幀,同時給每一個進程維護一張PMT用于地址聯編。

參考

  • 《計算機科學概論》

轉載于:https://www.cnblogs.com/Franken-Fran/p/memory_manage.html

總結

以上是生活随笔為你收集整理的系统内存管理简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。