linux mmap匿名對映的作用是什麼?

時間 2021-05-11 12:06:25

1樓:公尺牛牛

匿名對映為不是file_backed的虛擬記憶體區域建立相應的磁碟區: 因為這時該對映磁碟區不是乙個(普通的)磁碟檔案、所以叫做匿名對映!!~~~

2樓:繁星雨夜

mmap的使用肯定不是僅僅為了「給我一片可以讀寫的記憶體」這樣基礎的功能,而是某些特定情況下必須要直接操作物理記憶體的情況。

在嵌入式領域,mmap可以將外設暫存器的位址(實體地址),對映到使用者記憶體空間。實現在使用者態下操作暫存器,進而實現使用者態下驅動程式的作用

3樓:gavin

可以這麼理解把。真正的分配記憶體跟釋放記憶體需要呼叫作業系統mmap跟munmap。而malloc跟free只是使用者態的庫函式,malloc可能只是原先已通過mmap分配一大塊記憶體中再分一部分沒使用的記憶體給你,free可能只是將這部分記憶體標記為沒有使用,供下次malloc再使用,並不會實際釋放記憶體。

這跟malloc跟free的具體實現有關。

4樓:原子筆

所以,linux裡一切使用者態記憶體頁都應該是「某個檔案」的快取,即使這塊記憶體你不把它用來做外存的快取而是用於臨時存放某些中間結果(你可以用下top命令看io快取的記憶體開銷占用,這些就是給「真正的」外存做快取的開銷)。

5樓:玩物喪志TAOLI

現在glibc裡malloc的實現,主要通過三種方法分配記憶體給使用者層。

1. 內部管理的記憶體塊鍊錶。大小滿足應用層分配請求時使用。好處是不需要系統呼叫,在使用者態實現。

2. brk系統呼叫。當malloc內部記憶體不夠用,需要向核心申請記憶體。brk系統呼叫增大堆頂位置,但是只是虛擬記憶體。真正使用時會page fault進而真正得到記憶體。

3. mmap系統呼叫。malloc實現有乙個問題是只有當堆頂空閒記憶體區大於128K,記憶體才真正free還給核心。

mmap(匿名對映)會在堆頂與棧底之間的shared libs、files區域給應用乙個線性區,也是虛擬記憶體。好處是munmap的時候,記憶體是真的還給核心。

malloc希望頻繁申請而量小的請求能夠在使用者態完成,也就是方法1。

在malloc裡,對於brk和mmap,預設超過128K用mmap,否則用brk。

Brk獲得的記憶體可以給方法1復用,而mmap只能應用自己管理。頻繁的mmap和munmap系統呼叫、使用者態與核心態切換以及pagefault開銷是很大的。

為什麼拓撲空間之間連續一一對映的逆對映可以不連續?

anderson 1 某個集合X 對映f是集合X到X的恒同對映,則f顯然是單射也是滿射,所以存在逆對映g 也是恒同對映 看著像廢話 2 當原像X是乙個離散拓撲空間 X,T1 X 象集X是平凡拓撲 X,T2 時候,根據開集的原象是開集,f是乙個連續對映。3 而逆對映g 就會出現不連續情況 因為g也是恒...

切對映與對映的微分到底有什麼區別?

WangZJ 先說結論 切對映實際上就是對映的微分,二者表示的是同乙個東西。實際上,切對映就是對流形上的對映做線性化後得到的東西,這也和我們所知的微積分中的微分是相似的。所以我們一般將切對映稱作微分。線性化是數學中的乙個很重要的思想,即以直代曲的思想。首先先從大意上用非數學的語言來理解線性化 當我們...

魔獸系列的劇情有哪些現實對映?

Sigon 看了第一句就知道不用看了。NTR是卡利姆多土著,不是洛丹倫過來的。是半人馬差點把NTR屠光了,獸人來了幫忙才緩口氣剩下點火種,而不是反過來。獸人從來就沒有什麼自由的種族精神,只看見獸人被關集中營,看不見獸人把暴風城天花板都掀了?你總共說了四句話,有三句話都是錯的。在論據都是錯的情況下居然...