點擊右邊

Linux虛構地址空間以及物理九州ptt地址空間怎么映照的?

在之前的文章中《CPU是若何走訪內存的?》,咱們曉得了CPU是若何走訪內存的,本篇文章咱們來講下虛構地址空間以及物理地址空間的映捕魚達人外掛照。
平日32位Linux內核地址空間劃分0~3G為用戶空間,3~4G為內核空間。注重這里是32位內核地址空間劃分,64位內核地址空間劃分是不同的。上面以X86為例。
物理地址空間結構

  • 物理地址空間的頂部如下一段空間,被PCI裝備的I/O內存映照盤踞,它們的巨細以及結構由PCI標準所決定。
  • 640K~1M這段地址空間被BIOS以及VGA適配器所盤踞。

Linux體系在初始化時,會依據現實的物理內存的巨細,為每個物理頁面創立一個page工具,一切的page工具組成一個mem_map數組。
進一步,針對不同的用途,Linux內核將一切的物理頁面劃分到3類內存治理區中,如圖,分手為:

  • ZONE_DMA:規模是0~16M,該地區的物理頁面專門供I/O裝備的DMA使用。之以是必要零丁治理DMA的物理頁面,是由于DMA使用物理地址走訪內存,不顛末MMU,而且必要延續的緩沖區,以是為了可以或許供應物理上延續的緩沖區,必需從物理地址空間專門劃分一段地區用于DMA。
  • ZONE_NORMAL:規模是16M~896M,該地區的物理頁面是內核可以或許間接使用的。
  • ZONE_HIGHMEM:圍是896M~收場,該地區即為高端內存,內核不克不及間接使用。

linux虛構地址內核空間漫衍

在kernel image上面有16M的內核空間用于DMA操作。位于內核空間高真個128M地址首要由3部門構成,分手為vmalloc area,持久化內核映照區,暫且內核映照區。
因為ZONE_NORMAL以財神娛樂城及內核線性空間存在間接映照瓜葛,以是內核會將頻仍使用的數據如kernel代碼、GDT、IDT、PGD、mem_map炫海娛樂城數組等放在ZONE_NORMAL里。而將用戶數據、頁表(PT)等不經常使用數據放在ZONE_ HIGHMEM里,只在要走訪這些數據時才確立映照瓜葛(kmap())。譬如,當內核要走訪I/O裝備存儲空間時,就使用ioremap()將位于物理地址高真個mmio區內存映照到內核空間的vmalloc area中,在使用完以后便斷開映照瓜葛。
linux虛構地址用戶空間漫衍

用戶過程的代碼區一般從虛構地址空間的0x08048000最先,這是為了便于反省空指針。代碼區之上就是數據區,未初始化數據區,堆區,棧區,和參數、全局情況變量。
linux虛構地址與物理地址映照的瓜葛

Linux將4G的線性地址空間分為2部門,0~3G為user space,3G~4G為kernel space。
因為開啟了分頁機制,內核想要走訪物理地址空間的話,必需先確立映照瓜葛,然后經由過程虛構地址來走訪。為了可以或許走訪一切的物理地址空間,就要將掃數物理地址空間映照到1G的內核線性空間中,這顯然弗成能。因而,內核將0~896M的物理地址空間一對一映照到本人的線性地址空間中,如許它便可以隨時走訪ZONE_DMA以及ZONE_NORMAL里的物理頁面;此時內核剩下的128M線性地址空間不敷以齊全映照一切的ZONE_HIGHMEM,Linux采用了靜態映照的要領,即按需的將ZONE_HIGHMEM里的物理頁面映照到kernel space的最初128M線性地址空間里,使用完以后開釋映照瓜葛,以供別的物理頁面映照。固然如許存在效率的成電競運彩ptt績,然則內核畢竟可以正常的走訪一切的物理地址空間了。【編纂保舉】

  1. 若何在 Linux 服務器上配置 ulimit 以及文件描寫符數限定
  2. 通博娛樂城

  3. 若何在Linux服務器上配置ulimit以及文件描寫符數限定
  4. 從微軟Azure來望,Linux已經經一統江湖?
  5. 追溯以及若何檢測Linux上的庫注入
  6. 【必望】7招教會你若何開釋Linux操作體系空間

【義務編纂:趙寧寧 TEL:(010)68476606】
點贊 0
【免責聲明】本站內容轉載自互聯網,其相關談吐僅代表妞妞一直輸作者小我私家概念盡非權勢巨子,不代表本站態度。如您發明內容存在版權成績,請提交相關鏈接至郵箱:,咱們將實時予以處置。