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

歡迎訪問 生活随笔!

生活随笔

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

linux

9、linux内存管理子系统

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

管理模型

?

?

?

右邊是虛擬地址,左下角是虛擬地址到物理地址的轉換。

在linux系統程序中都是用虛擬地址。虛擬地址空間是由硬件來決定的。例如32位的系統,虛擬地址空間是4G=2的32次方。0-3G是用戶空間,3G-4G是內核空間。而內核空間又被分為了四個部分:直接映射區(896M),vmalloc區,永久映射區,固定映射區。

?

?

?

?

?

?

?

?

?

?

虛擬地址到物理地址的轉換

上圖的簡述:首先在我們的cr3寄存器中,存放的是頁目錄的基地址,然后虛擬地址把他轉換為物理地址。然后怎么去找到我們的存儲單元呢?首先高10位和我們的cr3相加,就可以找到一個頁目錄項里的頁表的基地址。頁表的基地址,再加上中間的10位,就可以找到一個物理頁的基地址。物理頁的基地址再去加上最后12位的偏移,就可以找到這個物理頁,就可以去找到這個物理存儲單元了。大小通常是4K大小。

?

?

?

我們知道,對于4G的內存,從3G----3G+896M,稱為低端內存,3G+896M----4G稱為高端內存。

  • 所謂直接映射區,顧名思義就是直接映射的關系。直接的關系體現在,物理內存地址和他的虛擬內存之間的大小是固定的:相差3G大小。例如,有一個虛擬地址為3G+128M,那么他的物理地址為128M。
  • Vmalloc區,他可以訪問高端和低端區域,沒有直接的映射關系。
  • 永久映射區,固定用來訪問高端內存的。
  • 固定映射區,這個區域的地址與我們的特殊的寄存器建立聯系的。

    在linux系統中,為了避免內存的浪費,采用的是虛擬內存,所謂的虛擬內存就是當你在用戶程序使用malloc函數去創建一個內存空間的時候,系統分配給你的是虛擬地址,當你真正要使用到這個物理地址的時候,會產生一個請頁異常(缺頁異常),此時系統才會給你分配真正的物理空間。在內核程序存在兩種情況:第一是:當我們使用vmalloc函數申請內存空間的時候,也是跟用戶程序一樣的情況。第二是:當我們采用Kmalloc函數申請內存空間的時候,內存才會分配給你虛擬內存和物理內存映射好的內存空間。原理是:內核里有一個slab函數,他會從空閑的物理內存中,取一些物理內存放到他的池子里面。當我們使用Kmalloc的時候,就會從池中分配一些給你。

    ?

    這些知識現在知識了解,等學了驅動才去深入。

  • 轉載于:https://www.cnblogs.com/FORFISH/p/5188438.html

    總結

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

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