首页
教育
美食
健康
数码
家居
科技
汽車
旅遊
情感
寵物
娛樂
民俗
知識
圖文
健康
品牌
教育
遊戲
手抄報
簡筆畫
tft每日頭條
>
生活
>
linux虛拟内存與物理内存映射
linux虛拟内存與物理内存映射
生活
更新时间:2025-08-12 17:06:20
讓我們看下虛拟内存:
第一層理解
每個進程都有自己獨立的4G内存空間,各個進程的内存空間具有類似的結構
一個新進程建立的時候,将會建立起自己的内存空間,此進程的數據,代碼等從磁盤拷貝到自己的進程空間,哪些數據在哪裡,都由進程控制表中的task_struct記錄,task_struct中記錄中一條鍊表,記錄中内存空間的分配情況,哪些地址有數據,哪些地址無數據,哪些可讀,哪些可寫,都可以通過這個鍊表記錄
每個進程已經分配的内存空間,都與對應的磁盤空間映射
問題:
計算機明明沒有那麼多内存(n個進程的話就需要n*4G)内存
建立一個進程,就要把磁盤上的程序文件拷貝到進程對應的内存中去,對于一個程序對應的多個進程這種情況,浪費内存!
第二層理解
每個進程的4G内存空間隻是虛拟内存空間,每次訪問内存空間的某個地址,都需要把地址翻譯為實際物理内存地址
所有進程共享同一物理内存,每個進程隻把自己目前需要的虛拟内存空間映射并存儲到物理内存上。
進程要知道哪些内存地址上的數據在物理内存上,哪些不在,還有在物理内存上的哪裡,需要用頁表來記錄
頁表的每一個表項分兩部分,第一部分記錄此頁是否在物理内存上,第二部分記錄物理内存頁的地址(如果在的話)
當進程訪問某個虛拟地址,去看頁表,如果發現對應的數據不在物理内存中,則缺頁異常
缺頁異常的處理過程,就是把進程需要的數據從磁盤上拷貝到物理内存中,如果内存已經滿了,沒有空地方了,那就找一個頁覆蓋,當然如果被覆蓋的頁曾經被修改過,需要将此頁寫回磁盤
總結:
優點:
既然每個進程的内存空間都是一緻而且固定的,所以鍊接器在鍊接可執行文件時,可以設定内存地址,而不用去管這些數據最終實際的内存地址,這是有獨立内存空間的好處
當不同的進程使用同樣的代碼時,比如庫文件中的代碼,物理内存中可以隻存儲一份這樣的代碼,不同的進程隻需要把自己的虛拟内存映射過去就可以了,節省内存
在程序需要分配連續的内存空間的時候,隻需要在虛拟内存空間分配連續空間,而不需要實際物理内存的連續空間,可以利用碎片。
另外,事實上,在每個進程創建加載時,内核隻是為進程“創建”了虛拟内存的布局,具體就是初始化進程控制表中内存相關的鍊表,實際上并不立即就把虛拟内存對應位置的程序數據和代碼(比如.text .data段)拷貝到物理内存中,隻是建立好虛拟内存和磁盤文件之間的映射就好(叫做存儲器映射),等到運行到對應的程序時,才會通過缺頁異常,來拷貝數據。還有進程運行過程中,要動态分配内存,比如malloc時,也隻是分配了虛拟内存,即為這塊虛拟内存對應的頁表項做相應設置,當進程真正訪問到此數據時,才引發缺頁異常。
補充理解:
虛拟存儲器涉及三個概念: 虛拟存儲空間,磁盤空間,内存空間
可以認為虛拟空間都被映射到了磁盤空間中,(事實上也是按需要映射到磁盤空間上,通過mmap),并且由頁表記錄映射位置,當訪問到某個地址的時候,通過頁表中的有效位,可以得知此數據是否在内存中,如果不是,則通過缺頁異常,将磁盤對應的數據拷貝到内存中,如果沒有空閑内存,則選擇犧牲頁面,替換其他頁面。
mmap是用來建立從虛拟空間到磁盤空間的映射的,可以将一個虛拟空間地址映射到一個磁盤文件上,當不設置這個地址時,則由系統自動設置,函數返回對應的内存地址(虛拟地址),當訪問這個地址的時候,就需要把磁盤上的内容拷貝到内存了,然後就可以讀或者寫,最後通過manmap可以将内存上的數據換回到磁盤,也就是解除虛拟空間和内存空間的映射,這也是一種讀寫磁盤文件的方法,也是一種進程共享數據的方法 共享内存
接下來讨論下物理内存:
在内核态申請内存比在用戶态申請内存要更為直接,它沒有采用用戶态那種延遲分配内存技術。内核認為一旦有内核函數申請内存,那麼就必須立刻滿足該申請内存的請求,并且這個請求一定是正确合理的。相反,對于用戶态申請内存的請求,内核總是盡量延後分配物理内存,用戶進程總是先獲得一個虛拟内存區的使用權,最終通過缺頁異常獲得一塊真正的物理内存。
物理内存的内核映射
IA32架構中内核虛拟地址空間隻有1GB大小(從3GB到4GB),因此可以直接将1GB大小的物理内存(即常規内存)映射到内核地址空間,但超出1GB大小的物理内存(即高端内存)就不能映射到内核空間。為此,内核采取了下面的方法使得内核可以使用所有的物理内存。
高端内存不能全部映射到内核空間,也就是說這些物理内存沒有對應的線性地址。不過,内核為每個物理頁框都分配了對應的頁框描述符,所有的頁框描述符都保存在mem_map數組中,因此每個頁框描述符的線性地址都是固定存在的。内核此時可以使用alloc_pages()和alloc_page()來分配高端内存,因為這些函數返回頁框描述符的線性地址。
内核地址空間的後128MB專門用于映射高端内存,否則,沒有線性地址的高端内存不能被内核所訪問。這些高端内存的内核映射顯然是暫時映射的,否則也隻能映射128MB的高端内存。當内核需要訪問高端内存時就臨時在這個區域進行地址映射,使用完畢之後再用來進行其他高端内存的映射。
由于要進行高端内存的内核映射,因此直接能夠映射的物理内存大小隻有896MB,該值保存在high_memory中。内核地址空間的線性地址區間如下圖所示:
從圖中可以看出,内核采用了三種機制将高端内存映射到内核空間:永久内核映射,固定映射和vmalloc機制。
物理内存管理機制
基于物理内存在内核空間中的映射原理,物理内存的管理方式也有所不同。内核中物理内存的管理機制主要有夥伴算法,slab高速緩存和vmalloc機制。其中夥伴算法和slab高速緩存都在物理内存映射區分配物理内存,而vmalloc機制則在高端内存映射區分配物理内存。
夥伴算法
夥伴算法負責大塊連續物理内存的分配和釋放,以頁框為基本單位。該機制可以避免外部碎片。
per-CPU頁框高速緩存
内核經常請求和釋放單個頁框,該緩存包含預先分配的頁框,用于滿足本地CPU發出的單一頁框請求。
slab緩存
slab緩存負責小塊物理内存的分配,并且它也作為高速緩存,主要針對内核中經常分配并釋放的對象。
vmalloc機制
vmalloc機制使得内核通過連續的線性地址來訪問非連續的物理頁框,這樣可以最大限度的使用高端物理内存。
物理内存的分配
内核發出内存申請的請求時,根據内核函數調用接口将啟用不同的内存分配器。
分區頁框分配器
分區頁框分配器 (zoned page frame allocator) ,處理對連續頁框的内存分配請求。分區頁框管理器分為兩大部分:前端的管理區分配器和夥伴系統,如下圖:
管理區分配器負責搜索一個能滿足請求頁框塊大小的管理區。在每個管理區中,具體的頁框分配工作由夥伴系統負責。為了達到更好的系統性能,單個頁框的申請工作直接通過per-CPU頁框高速緩存完成。
該分配器通過幾個函數和宏來請求頁框,它們之間的封裝關系如下圖所示。
這些函數和宏将核心的分配函數__alloc_pages_nodemask()封裝,形成滿足不同分配需求的分配函數。其中,alloc_pages()系列函數返回物理内存首頁框描述符,__get_free_pages()系列函數返回内存的線性地址。
slab分配器
slab 分配器最初是為了解決物理内存的内部碎片而提出的,它将内核中常用的數據結構看做對象。slab分配器為每一種對象建立高速緩存。内核對該對象的分配和釋放均是在這塊高速緩存中操作。一種對象的slab分配器結構圖如下:
可以看到每種對象的高速緩存是由若幹個slab組成,每個slab是由若幹個頁框組成的。雖然slab分配器可以分配比單個頁框更小的内存塊,但它所需的所有内存都是通過夥伴算法分配的。
slab高速緩存分專用緩存和通用緩存。專用緩存是對特定的對象,比如為内存描述符創建高速緩存。通用緩存則是針對一般情況,适合分配任意大小的物理内存,其接口即為kmalloc()。
非連續内存區内存的分配
内核通過vmalloc()來申請非連續的物理内存,若申請成功,該函數返回連續内存區的起始地址,否則,返回NULL。vmalloc()和kmalloc()申請的内存有所不同,kmalloc()所申請内存的線性地址與物理地址都是連續的,而vmalloc()所申請的内存線性地址連續而物理地址則是離散的,兩個地址之間通過内核頁表進行映射。
vmalloc()的工作方式理解起來很簡單:
尋找一個新的連續線性地址空間;
依次分配一組非連續的頁框;
為線性地址空間和非連續頁框建立映射關系,即修改内核頁表;
vmalloc()的内存分配原理與用戶态的内存分配相似,都是通過連續的虛拟内存來訪問離散的物理内存,并且虛拟地址和物理地址之間是通過頁表進行連接的,通過這種方式可以有效的使用物理内存。但是應該注意的是,vmalloc()申請物理内存時是立即分配的,因為内核認為這種内存分配請求是正當而且緊急的;相反,用戶态有内存請求時,内核總是盡可能的延後,畢竟用戶态跟内核态不在一個特權級。
,
更多精彩资讯请关注
tft每日頭條
,我们将持续为您更新最新资讯!
查看全部
上一页
下一页
電飯煲常見的故障維修
常年坐辦公室怎麼運動...
相关生活资讯推荐
送母親什麼禮物好
1、一束鮮花,可能很多媽媽都沒有收到過花,可以在母親節的時候給媽媽買上一束鮮花送給媽媽,可以使康乃馨...
2023-07-05
鐵鏽用什麼洗
1、用15%的醋酸溶液或者15%的酒石酸溶液灑在污漬處,浸泡一天,再用清水漂洗幹淨。2、用草酸或維生...
2023-07-05
椒鹽煎帶魚的做法是什麼
1、準備材料帶魚、鹽、料酒、橄榄油、五香粉備用,帶魚收拾幹淨。2、切成均勻大小的段,擦幹水分,用鹽、五香粉、料酒腌制入味。3、腌好的帶魚裹上幹澱粉,平底鍋放少許橄榄油。4、燒熱後,下帶魚段,煎到兩面金黃,取出放在廚房用紙上,吸走表面上的油即可食用可搭配椒鹽)。
2023-07-05
描寫堂吉诃德形象的句子
1、我知道魯莽和怯懦都是過失;勇敢的美德是這兩個極端的折中。不過甯可勇敢過頭而魯莽,不要勇敢不足而怯...
2023-07-05
微信怎麼設置免密支付
1、微信支持使用免密支付的設置,也就是可以通過付款碼支付的功能,目前支持每筆訂單小于1000元消費免...
2023-07-05
热门生活资讯推荐
生活
玻璃貼過喜字去除不了
1、貼在玻璃上的喜字拿不下來了可以用吹風機吹一吹,等黏膠開始軟化了,再慢慢擦拭掉。或者用刷子蘸取一些...
2023-07-05
生活
還充電寶是直接插裡面就好了嗎
1、還市面上的共享充電寶并不是直接插裡面就可以了,還是要注意方法的,有些共享充電寶需要在歸還前掃碼并...
2023-07-05
生活
oppo手機上的西瓜視頻怎麼沒有後台...
1、西瓜視頻支持後台播放,請點擊視頻右下角的三個點,點擊「後台播放」按鈕為紅色,即為後台播放模式,再...
2023-07-05
生活
海邊日出日落拍照技巧
1、時間的選擇:日出日落的時間性很強,不同季節、不同時間段的表現都不一樣,這就要求我們在拍攝之間必須...
2023-07-05
生活
一個人感冒難受的句子
1、病來如山倒啊,頭疼。2、感冒了,世界都混沌了。3、流鼻涕、打噴嚏,求安慰。4、這次真的感冒了,很...
2023-07-05
生活
暖氣片為什麼需要更換呢
1、暖氣片是有一定的壽命的,到了壽命期限之後就會終結或者因為自家水質的原因造成嚴重的氧化導緻腐蝕造成...
2023-07-05
生活
如何預防蜜蜂蟄傷?
1、蜜蜂一般不會主動攻擊人的,除非靠的太近,又不小心碰到了它,被它誤以為你在攻擊它,它才會蟄人。首先...
2023-07-05
生活
有機營養土質是怎麼制造的
有機營養土是由各種生活有機固體垃圾轉化而來的,通過獨特的工藝流程,使用專有的發酵劑,把有機固體垃圾放...
2023-07-05
生活
生姜紅糖水的作用
1、能夠散寒解表,對于風寒感冒所導緻的惡寒、發熱、頭疼、鼻塞,适當進食紅糖姜片有散寒解表的作用。2、...
2023-07-05
生活
多肉大蒼角殿養殖方法
1、澆水:大蒼角殿的莖葉非常長,平時養護的時候需要保證盆土的濕潤,這樣才能滿足枝葉的正常所需。但是不...
2023-07-05
网友关注
生活
夢見上學考試是什麼意思
1、夢見上學,吉兆,生活會幸福。2、夢見考試,吉兆,學習成績會如魚得水。3、夢見上學,可能是由于你最...
2023-07-05
生活
苦瓜可以生吃嗎
1、苦瓜是可以生吃的。2、适當的生吃苦瓜可以對人體起到清熱解毒的作用,對人體有益,還可以直接将苦瓜榨...
2023-07-05
生活
大棉鞋二棉鞋什麼區别
1、鞋子大棉二棉就是指棉鞋的厚度,大棉有一層非常厚實的絨,是在寒冬時穿的;二棉帶一層薄絨,在深秋或者...
2023-07-05
生活
pose是什麼梗
1、為英文的外來語,“姿勢”的意思,可能是因為說“姿勢”感覺不夠潮,太土了。因此很多人都喜歡說pos...
2023-07-05
生活
沒結婚證能辦準生證嗎
1、沒結婚證是可以辦出生證明的。2、未辦理結婚證非婚生嬰兒,當事人無法提供父親與嬰兒的親子(dna)...
2023-07-05
生活
桃花是什麼樣子的
1、莖枝:作為喬木,桃花可以長到3-8米高,樹冠比較寬廣,樹皮為暗紅褐色,一般比較粗糙。小枝很長,表面沒有毛,而且還有光澤,顔色多為綠色,但在向陽處會呈紅色,上面有很多小皮孔。它的冬芽為圓錐形,頂端比較鈍,外面有短柔毛。2、葉子:桃花的葉子為披針形,長度在7-15厘米之間,寬為2-3.5厘米,頂端比...
2023-07-05
生活
什麼叫情商
1、情商(EmotionalQuotient)通常是指情緒商數,簡稱EQ,它是近年來心理學家們提出的...
2023-07-05
生活
微信怎麼發視頻紅包
1、打開微信,選擇要發視頻紅包的好友,打開聊天對話框。2、點擊右下方的加号選擇紅包。3、點擊“用微視...
2023-07-05
生活
葡萄幹怎麼會生蟲
1、保存不當會生蟲。2、葡萄幹含有大量的糖分,其味道十分的甜,所以葡萄幹本身就很容易招惹蟲子。如果沒...
2023-07-05
生活
如何加盟華萊士連鎖店
1、如果您對華萊士有加盟意向,可以口頭聯系華萊士相關客服幫助填寫申請表或自己書面向公司提出加盟申請。2、華萊士總部對您的申請表進行完審查評估,通過之後可以簽訂華萊士意向合同。3、對于華萊士加盟者來說,華萊士公司會提供完善的選址建議,幫助完成市場調查,幫助加盟商順利開店,走向成功創業之路。4、确定好華...
2023-07-05
生活
微信收款到賬語音提示音怎樣開啟
1、打開微信後點擊右下角的“我”。2、點擊“錢包”進入款項相關設置。3、繼續點擊“收付款”,進入下一...
2023-07-05
生活
微信怎麼同步玩遊戲
1、登錄微信選擇“我的标簽”,點擊“我的主頁”,進入“設置”主頁。2、在設置主頁點擊“通用”進入通用...
2023-07-05
生活
燕窩正确做法是什麼
1、燕窩洗幹淨後侵泡六個小時左右,等燕窩基本泡開以後,再取出燕窩裡的雜質。2、之後用手順着燕窩的紋路撕開并放入炖盅,倒入适量的純淨水。3、倒入紅棗、枸杞、冰糖一起炖半個小時左右的時間即完成。
2023-07-05
生活
怎樣做發光特效
1、打開Photoshop(CS5)軟件,并新建一個文件。将前景色設置為黑色後,點擊【填充工具】,将...
2023-07-05
生活
鮮花保存小技巧
1、首先鮮花的根部要斜着剪口,這樣吸水的部位大,能夠更多地吸收水分。2、要每天剪去一些,保證能夠更好...
2023-07-05
生活
女人說說的句子霸氣
1、自信的女人,不一定擁有自己的事業。2、你可以當新時代的女人,可以潇灑、獨立。但,不屑名份,真的無...
2023-07-05
生活
小雞飼料如何做爆炸餌
顆粒20%+菜子餅20%+碎玉米20%+小雞飼料20%+麸皮10%+玉米粉10%,碎玉米可提前用50...
2023-07-05
生活
花生油清洗方法
1、植物油漬是在服裝上常見的污漬,也是一種極性液體污漬。2、這類污漬要用溶劑汽油、四氯乙烯等有機溶液...
2023-07-05
生活
馬桶水垢黃邊如何處理
1、白醋+小蘇打。取适量的白醋加上少許的小蘇打粉末,拌勻之後倒進馬桶裡,大約15分鐘後,用刷子刷洗即可,最後再用清水沖一沖。2、喝剩的可樂。把喝剩下的可樂倒入馬桶中,浸泡一小時左右,用刷子刷洗即可。3、煙灰。家裡有抽煙的人可以把平時的煙灰收集起來,在去除頑固污垢的時候在上面加一點煙灰,搭配普通的潔廁...
2023-07-05
生活
小米稻谷如何處理
1、隻需要用清水淘洗幹淨即可,小米,中國古稱稷或粟。脫殼制成的糧食,因其粒小,直徑2毫米左右,故名。...
2023-07-05
生活
vivoy83的隐藏界面在哪
1、首先,解鎖手機進入手機桌面。2、在選中除軟件圖标以外的空白區域并長按此區域,會彈出快捷菜單。3、...
2023-07-05
生活
沙棘子養殖方法
1、沙棘對溫度要求不嚴,極耐冷熱,最低可耐—50℃,最高可耐50℃。沙棘為陽性樹種,喜光照,年日照時...
2023-07-05
生活
教育機構辦理營業執照
1、教育機構不需要辦理營業執照,但是需要辦理辦學許可證。2、根據《中華人民共和國民辦教育促進法》第十...
2023-07-05
生活
襄陽特産有哪些
1、首先是襄陽的孔明菜,即大家常說的大頭菜,是四大名腌菜之一。2、然後就是金剛酥,是一種本地小吃,現...
2023-07-05
生活
怎樣做水泥闆不裂縫
1、常規控制砂子、水泥的質量,砂子最好用水沖洗過。2、徹底清除基層表面的砌築、粉刷落地灰及泥砂,并将...
2023-07-05
生活
doc文件怎麼打印
1、打開電腦,在桌面中找到需要打印的DOC文檔,右鍵點擊文檔進入到功能頁面中。2、在新彈出的頁面找到...
2023-07-05
生活
怎樣鑒别真皮
1、通過手感觸摸法判斷。在選擇購買真皮用品的時候,用手觸摸皮革表面,如果皮面滑爽柔軟、彈性豐滿的感覺,用手按壓皮面出紋路,用手指搓一下不會發出聲音,就是真皮;如果皮面發澀、死闆、柔軟性差,用手按皮面沒有紋路,并且用手搓會發出聲音,則是人造皮。2、通過眼觀紋路法判斷。真皮為純天然的皮質,所有的紋路都是...
2023-07-05
生活
粉絲泡多長時間
1、如果是比較細的粉絲,一般在溫水中浸泡30分鐘即可,在開水中隻需要泡5-10分鐘。如果是比較粗的紅...
2023-07-05
生活
鴨絨脫脂方法
1、先用60-70度的肥皂水(加少量純堿),或泡沫少、除脂去污力較強的溫熱洗衣滌,以除脂、去污,洗後...
2023-07-05
生活
福字貼法講究
1、“倒福”鬥方,要坐北朝南貼在門廳的正前方,這叫做“福入廳堂”,但一家隻能貼一個,如果貼多了,叫做...
2023-07-05
關于
條款和條件
隱私政策
Cookie 設置
服務
登陸
注冊
聯系我們
tft每日頭條
美食
生活
職場
母嬰
時尚
科技
汽車
友情鏈接
zpostcode
Recruit
weather
mreligion
Yellowpages
sport
constellation
shopping
name
game
directory
literature
Word
tour
furnish
Lottery
tftnews
lyrics
News
digital
car
dir
Edu
Finance
Copyright 2023-2025 -
www.tftnews.com
All Rights Reserved