校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 深入解析Linux系統下的高端內存

深入解析Linux系統下的高端內存

熱門標簽:中山防封卡電銷卡辦理 地圖上標注點位的圖標 文山外呼營銷系統 江蘇小型外呼系統軟件 常熟外呼系統 電話機器人服務器部署 拉薩銷售外呼系統軟件 百度地圖標注未成功 電銷語音機器人哪個好


Linux內核地址空間劃分

通常32位Linux內核虛擬地址空間劃分0~3G為用戶空間,3~4G為內核空間(注意,內核可以使用的線性地址只有1G)。注意這里是32位內核地址空間劃分,64位內核地址空間劃分是不同的。
通常32位Linux內核虛擬地址空間劃分0~3G為用戶空間,3~4G為內核空間(注意,內核可以使用的線性地址只有1G)。注意這里是32位內核地址空間劃分,64位內核地址空間劃分是不同的。

Linux內核高端內存的由來

當內核模塊代碼或線程訪問內存時,代碼中的內存地址都為邏輯地址,而對應到真正的物理內存地址,需要地址一對一的映射,如邏輯地址0xc0000003對應的物理地址為0×3,0xc0000004對應的物理地址為0×4,… …,邏輯地址與物理地址對應的關系為

物理地址 = 邏輯地址 – 0xC0000000:這是內核地址空間的地址轉換關系,注意內核的虛擬地址在“高端”,但是ta映射的物理內存地址在低端。

  實際上,“內核直接映射空間”也達不到 1G, 還得留點線性空間給“內核動態映射空間” 呢。

  因此,Linux 規定“內核直接映射空間” 最多映射 896M 物理內存。

  對于高端內存,可以通過 alloc_page() 或者其它函數獲得對應的 page,但是要想訪問實際物理內存,還得把 page 轉為線性地址才行(為什么?想想 MMU 是如何訪問物理內存的),也就是說,我們需要為高端內存對應的 page 找一個線性空間,這個過程稱為高端內存映射。

假 設按照上述簡單的地址映射關系,那么內核邏輯地址空間訪問為0xc0000000 ~ 0xffffffff,那么對應的物理內存范圍就為0×0 ~ 0×40000000,即只能訪問1G物理內存。若機器中安裝8G物理內存,那么內核就只能訪問前1G物理內存,后面7G物理內存將會無法訪問,因為內核 的地址空間已經全部映射到物理內存地址范圍0×0 ~ 0×40000000。即使安裝了8G物理內存,那么物理地址為0×40000001的內存,內核該怎么去訪問呢?代碼中必須要有內存邏輯地址 的,0xc0000000 ~ 0xffffffff的地址空間已經被用完了,所以無法訪問物理地址0×40000000以后的內存。

顯 然不能將內核地址空間0xc0000000 ~ 0xfffffff全部用來簡單的地址映射。因此x86架構中將內核地址空間劃分三部分:ZONE_DMA、ZONE_NORMAL和 ZONE_HIGHMEM。ZONE_HIGHMEM即為高端內存,這就是內存高端內存概念的由來。


在x86結構中,三種類型的區域(從3G開始計算)如下:

ZONE_DMA        內存開始的16MB

ZONE_NORMAL       16MB~896MB

ZONE_HIGHMEM       896MB ~ 結束(1G)

高端內存是指物理地址大于 896M 的內存。對于這樣的內存,無法在“內核直接映射空間”進行映射。


為什么?

  因為“內核直接映射空間”最多只能從 3G 到 4G,只能直接映射 1G 物理內存,對于大于 1G 的物理內存,無能為力。


高端內存映射有三種方式:


1、映射到“內核動態映射空間”

  這種方式很簡單,因為通過 vmalloc() ,在“內核動態映射空間”申請內存的時候,就可能從高端內存獲得頁面(參看 vmalloc 的實現),因此說高端內存有可能映射到“內核動態映射空間” 中。


2、永久內核映射

  如果是通過 alloc_page() 獲得了高端內存對應的 page,如何給它找個線性空間?

  內核專門為此留出一塊線性空間,從 PKMAP_BASE 到 FIXADDR_START ,用于映射高端內存。在 2.4 內核上,這個地址范圍是 4G-8M 到 4G-4M 之間。這個空間起叫“內核永久映射空間”或者“永久內核映射空間”

  這個空間和其它空間使用同樣的頁目錄表,對于內核來說,就是 swapper_pg_dir,對普通進程來說,通過 CR3 寄存器指向。

  通常情況下,這個空間是 4M 大小,因此僅僅需要一個頁表即可,內核通過來 pkmap_page_table 尋找這個頁表。

  通過 kmap(), 可以把一個 page 映射到這個空間來

  由于這個空間是 4M 大小,最多能同時映射 1024 個 page。因此,對于不使用的的 page,應該及時從這個空間釋放掉(也除映射關就是解系),通過 kunmap() ,可以把一個 page 對應的線性地址從這個空間釋放出來。


3、臨時映射

  內核在 FIXADDR_START 到 FIXADDR_TOP 之間保留了一些線性空間用于特殊需求。這個空間稱為“固定映射空間”

  在這個空間中,有一部分用于高端內存的臨時映射。

  這塊空間具有如下特點:

  1、 每個 CPU 占用一塊空間

  2、 在每個 CPU 占用的那塊空間中,又分為多個小空間,每個小空間大小是 1 個 page,每個小空間用于一個目的,這些目的定義在 kmap_types.h 中的 km_type 中。

  當要進行一次臨時映射的時候,需要指定映射的目的,根據映射目的,可以找到對應的小空間,然后把這個空間的地址作為映射地址。這意味著一次臨時映射會導致以前的映射被覆蓋。

  通過 kmap_atomic() 可實現臨時映射。

      下圖簡單簡單表達如何對高端內存進行映射

Linux內存線性地址空間大小為4GB,分為2個部分:用戶空間部分(通常是3G)和內核空間部分(通常是1G)。在此我們主要關注內核地址空間部分。

內核通過內核頁全局目錄來管理所有的物理內存,由于線性地址前3G空間為用戶使用,內核頁全局目錄前768項(剛好3G)除0、1兩項外全部為0,后256項(1G)用來管理所有的物理內存。內核頁全局目錄在編譯時靜態地定義為swapper_pg_dir數組,該數組從物理內存地址0x101000處開始存放。

由圖可見,內核線性地址空間部分從PAGE_OFFSET(通常定義為3G)開始,為了將內核裝入內存,從PAGE_OFFSET開始8M線性地址用來映射內核所在的物理內存地址(也可以說是內核所在虛擬地址是從PAGE_OFFSET開始的);接下來是mem_map數組,mem_map的起始線性地址與體系結構相關,比如對于UMA結構,由于從PAGE_OFFSET開始16M線性地址空間對應的16M物理地址空間是DMA區,mem_map數組通常開始于PAGE_OFFSET+16M的線性地址;從PAGE_OFFSET開始到VMALLOC_START – VMALLOC_OFFSET的線性地址空間直接映射到物理內存空間(一一對應影射,物理地址==>線性地址-PAGE_OFFSET),這段區域的大小和機器實際擁有的物理內存大小有關,這兒VMALLOC_OFFSET在X86上為8M,主要用來防止越界錯誤;在內存比較小的系統上,余下的線性地址空間(還要再減去空白區即VMALLOC_OFFSET)被vmalloc()函數用來把不連續的物理地址空間映射到連續的線性地址空間上,在內存比較大的系統上,vmalloc()使用從VMALLOC_START到VMALLOC_END(也即PKMAP_BASE減去2頁的空白頁大小PAGE_SIZE(解釋VMALLOC_END))的線性地址空間,此時余下的線性地址空間(還要再減去2頁的空白區即VMALLOC_OFFSET)又可以分成2部分:第一部分從PKMAP_BASE到FIXADDR_START用來由kmap()函數來建立永久映射高端內存;第二部分,從FIXADDR_START到FIXADDR_TOP,這是一個固定大小的臨時映射線性地址空間,(引用:Fixed virtual addresses are needed for subsystems that need to know the virtual address at compile time such as the APIC),在X86體系結構上,FIXADDR_TOP被靜態定義為0xFFFFE000,此時這個固定大小空間結束于整個線性地址空間最后4K前面,該固定大小空間大小是在編譯時計算出來并存儲在__FIXADDR_SIZE變量中。

      正是由于vmalloc()使用區、kmap()使用區及固定大小區(kmap_atomic()使用區)的存在才使ZONE_NORMAL區大小受到限制,由于內核在運行時需要這些函數,因此在線性地址空間中至少要VMALLOC_RESERVE大小的空間。VMALLOC_RESERVE的大小與體系結構相關,在X86上,VMALLOC_RESERVE定義為128M,這就是為什么ZONE_NORMAL大小通常是16M到896M的原因。


標簽:鶴壁 黔南 天門 欽州 海北 威海 景德鎮 河南

巨人網絡通訊聲明:本文標題《深入解析Linux系統下的高端內存》,本文關鍵詞  深入,解析,Linux,系統,下,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《深入解析Linux系統下的高端內存》相關的同類信息!
  • 本頁收集關于深入解析Linux系統下的高端內存的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    精品国产91久久久久久久妲己| av不卡免费在线观看| 国产精品乡下勾搭老头1| 亚洲精品在线免费播放| 国内精品国产三级国产a久久| 2021国产精品久久精品 | 日韩欧美在线1卡| 蓝色福利精品导航| 国产亚洲综合性久久久影院| 国产盗摄女厕一区二区三区| 亚洲欧洲综合另类| 欧美一级日韩免费不卡| 国产mv日韩mv欧美| 亚洲一区二区三区四区在线| 日韩美女天天操| 91看片淫黄大片一级| 久久爱另类一区二区小说| 国产精品三级av在线播放| 欧美美女激情18p| 日韩视频国产视频| 欧美视频在线观看一区| 国产精品少妇自拍| 亚洲激情一二三区| 精品视频在线免费观看| 激情综合网av| 亚洲国产婷婷综合在线精品| 久久九九99视频| 91精品在线免费观看| av高清久久久| 国产99久久久国产精品潘金网站| 国产精品乱码妇女bbbb| 在线观看91av| 色八戒一区二区三区| 波多野结衣在线一区| 国产一区二区三区在线观看免费 | 亚洲精品一区二区三区蜜桃下载| 色婷婷亚洲精品| 国产精品资源网| 韩国三级在线一区| 玖玖九九国产精品| 奇米色一区二区| 奇米色一区二区| 理论片日本一区| 男女视频一区二区| 欧美日韩成人综合| 国产成人综合亚洲网站| 国产精品欧美经典| 日韩女优电影在线观看| 欧洲精品一区二区| 99久久久久免费精品国产| 精油按摩中文字幕久久| 99精品国产91久久久久久| 亚洲视频一二区| 国产日韩欧美高清| 国产日韩精品视频一区| 久久麻豆一区二区| 国产性天天综合网| 久久只精品国产| 精品国一区二区三区| 精品日韩一区二区三区免费视频| 日韩一区二区三区电影在线观看| 欧美日韩精品是欧美日韩精品| 色妹子一区二区| 欧美色图天堂网| 91精品麻豆日日躁夜夜躁| 欧美一级日韩一级| 久久久www免费人成精品| 欧美va亚洲va在线观看蝴蝶网| 欧美一区二区免费观在线| 日韩亚洲电影在线| 欧美精品aⅴ在线视频| 亚洲手机成人高清视频| www国产成人| 国产人妖乱国产精品人妖| 欧美一区二区三级| 国产午夜精品久久久久久免费视| 久久夜色精品国产噜噜av| 欧美激情自拍偷拍| 亚洲图片欧美激情| 亚洲成人在线观看视频| 日韩av二区在线播放| 日本不卡不码高清免费观看| 麻豆久久久久久久| 床上的激情91.| 欧美吻胸吃奶大尺度电影| 日韩一区二区精品在线观看| 久久综合成人精品亚洲另类欧美 | 国产福利精品一区二区| 风间由美中文字幕在线看视频国产欧美 | 91精品综合久久久久久| 欧美色综合影院| 国产午夜精品久久久久久久 | 精品88久久久久88久久久| 久久综合丝袜日本网| 亚洲日本在线a| 成人丝袜高跟foot| 石原莉奈在线亚洲二区| 亚洲资源中文字幕| 天天综合网天天综合色| 久久精品国产77777蜜臀| 99国产精品国产精品毛片| 成人午夜av在线| 91麻豆精品国产91久久久资源速度 | 日韩欧美一区中文| 亚洲欧美日韩久久精品| 国产激情一区二区三区四区| 欧美日本免费一区二区三区| 欧美精品xxxxbbbb| 成人自拍视频在线| 欧美日韩国产综合一区二区 | 日韩电影在线观看网站| 成人美女视频在线观看| 日韩欧美三级在线| 亚洲午夜精品17c| 91亚洲精华国产精华精华液| 精品久久久三级丝袜| 三级不卡在线观看| 欧美日韩精品福利| 亚洲国产aⅴ天堂久久| 色综合天天综合网国产成人综合天 | 99re这里只有精品首页| 国产精品午夜春色av| 国产精品99久| 久久精品一区二区三区四区| 蜜桃视频在线观看一区| 欧美一二三在线| 国产精品福利av| 91视频观看视频| 精品免费国产一区二区三区四区| 亚洲欧美二区三区| 97久久久精品综合88久久| 国产精品情趣视频| 成人小视频在线观看| 久久精品视频一区二区| 国产精品18久久久久久久久 | 一区二区三区四区五区视频在线观看| 国产一区二区看久久| 久久午夜色播影院免费高清| 韩国在线一区二区| 国产精品美女久久久久av爽李琼| 大胆欧美人体老妇| 亚洲精品国产a| 欧美剧情片在线观看| 国产精品素人一区二区| 国产成人在线视频播放| 69久久99精品久久久久婷婷| 亚洲国产精品一区二区久久恐怖片| 色哟哟在线观看一区二区三区| 国产精品成人免费在线| 91丨porny丨户外露出| 一区二区三区在线不卡| 欧美人与z0zoxxxx视频| 看国产成人h片视频| 日本一区二区高清| 一本色道综合亚洲| 喷水一区二区三区| 国产精品久久久久影院老司| 欧美性猛片aaaaaaa做受| 老汉av免费一区二区三区| 国产精品久久久久aaaa樱花| 欧美亚洲综合另类| 韩日欧美一区二区三区| 亚洲天堂网中文字| 欧美一区二区女人| 91捆绑美女网站| 韩国女主播成人在线| 一区二区三区日韩精品| www久久久久| 欧美另类videos死尸| 成人深夜福利app| 日韩电影在线一区二区| 亚洲天堂av一区| 精品国产第一区二区三区观看体验 | 亚洲久本草在线中文字幕| 日韩三级.com| 在线精品视频一区二区三四| 国产一区二区视频在线播放| 夜夜爽夜夜爽精品视频| 国产欧美一区二区三区在线看蜜臀| 欧美二区三区91| 在线观看不卡一区| www.日韩精品| 国产成人精品1024| 精品午夜一区二区三区在线观看| 亚洲精品视频免费观看| 国产精品免费av| 国产亚洲一二三区| 日韩精品资源二区在线| 欧美日韩中字一区| 91福利小视频| 五月综合激情日本mⅴ| 国产麻豆成人精品| 成人免费三级在线| 久久国产精品免费| 精品99一区二区三区| 精品一区二区影视| 亚洲特黄一级片| 久久综合久久鬼色| 91精品免费观看| 在线看不卡av|