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

主頁 > 知識庫 > 深入解析Linux系統(tǒng)下的高端內存

深入解析Linux系統(tǒng)下的高端內存

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


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, 還得留點線性空間給“內核動態(tài)映射空間” 呢。

  因此,Linux 規(guī)定“內核直接映射空間” 最多映射 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結構中,三種類型的區(qū)域(從3G開始計算)如下:

ZONE_DMA        內存開始的16MB

ZONE_NORMAL       16MB~896MB

ZONE_HIGHMEM       896MB ~ 結束(1G)

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


為什么?

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


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


1、映射到“內核動態(tài)映射空間”

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


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() 可實現(xiàn)臨時映射。

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

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

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

由圖可見,內核線性地址空間部分從PAGE_OFFSET(通常定義為3G)開始,為了將內核裝入內存,從PAGE_OFFSET開始8M線性地址用來映射內核所在的物理內存地址(也可以說是內核所在虛擬地址是從PAGE_OFFSET開始的);接下來是mem_map數組,mem_map的起始線性地址與體系結構相關,比如對于UMA結構,由于從PAGE_OFFSET開始16M線性地址空間對應的16M物理地址空間是DMA區(qū),mem_map數組通常開始于PAGE_OFFSET+16M的線性地址;從PAGE_OFFSET開始到VMALLOC_START – VMALLOC_OFFSET的線性地址空間直接映射到物理內存空間(一一對應影射,物理地址==>線性地址-PAGE_OFFSET),這段區(qū)域的大小和機器實際擁有的物理內存大小有關,這兒VMALLOC_OFFSET在X86上為8M,主要用來防止越界錯誤;在內存比較小的系統(tǒng)上,余下的線性地址空間(還要再減去空白區(qū)即VMALLOC_OFFSET)被vmalloc()函數用來把不連續(xù)的物理地址空間映射到連續(xù)的線性地址空間上,在內存比較大的系統(tǒng)上,vmalloc()使用從VMALLOC_START到VMALLOC_END(也即PKMAP_BASE減去2頁的空白頁大小PAGE_SIZE(解釋VMALLOC_END))的線性地址空間,此時余下的線性地址空間(還要再減去2頁的空白區(qū)即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體系結構上,F(xiàn)IXADDR_TOP被靜態(tài)定義為0xFFFFE000,此時這個固定大小空間結束于整個線性地址空間最后4K前面,該固定大小空間大小是在編譯時計算出來并存儲在__FIXADDR_SIZE變量中。

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


標簽:鶴壁 黔南 天門 欽州 海北 威海 景德鎮(zhèn) 河南

巨人網絡通訊聲明:本文標題《深入解析Linux系統(tǒng)下的高端內存》,本文關鍵詞  深入,解析,Linux,系統(tǒng),下,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《深入解析Linux系統(tǒng)下的高端內存》相關的同類信息!
  • 本頁收集關于深入解析Linux系統(tǒng)下的高端內存的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美三区免费完整视频在线观看| 久久青草欧美一区二区三区| 精品国产不卡一区二区三区| 国产精品三级久久久久三级| 欧美日韩国产天堂| 欧美在线你懂得| 国产情人综合久久777777| 国产亚洲视频系列| 亚洲超碰97人人做人人爱| 国产麻豆成人精品| 欧美一二三区精品| 日韩一区二区影院| 亚洲精品菠萝久久久久久久| 国产v日产∨综合v精品视频| 91精品欧美综合在线观看最新| 欧美色图片你懂的| 欧美日韩国产小视频在线观看| 中日韩免费视频中文字幕| 免费观看日韩av| 欧美日韩一二三区| 欧美成人vps| 日韩精品1区2区3区| 欧洲激情一区二区| 亚洲色图视频网| 不卡av免费在线观看| 欧美影视一区在线| 一个色妞综合视频在线观看| 亚洲成a天堂v人片| 国产做a爰片久久毛片| 日韩一级二级三级精品视频| 2020国产精品自拍| 久久99精品国产麻豆婷婷洗澡| 国产老肥熟一区二区三区| 成人18视频在线播放| 久久精品视频免费| 国产精品综合视频| 欧美日韩视频在线观看一区二区三区| 亚洲欧美在线另类| 久久99九九99精品| wwwwww.欧美系列| 亚洲在线观看免费视频| 久久精品国产一区二区三| www.成人在线| 欧美一区二区三区婷婷月色 | 亚洲高清三级视频| 另类小说图片综合网| 日韩欧美中文一区二区| 最新热久久免费视频| 99久久精品情趣| 亚洲精品乱码久久久久久日本蜜臀 | 国产一区二区看久久| 一本大道久久a久久综合婷婷| 亚洲婷婷综合久久一本伊一区| 免费看黄色91| 欧洲另类一二三四区| 中文字幕成人av| 蜜臀精品久久久久久蜜臀| 精品福利一区二区三区免费视频| 亚洲黄色小视频| 欧美年轻男男videosbes| 激情五月婷婷综合网| 中文字幕不卡的av| 国产一区二区主播在线| 91精品蜜臀在线一区尤物| 久久99热狠狠色一区二区| 日本一区二区三区高清不卡| 久久爱www久久做| 欧美日韩国产美| 国产精品1024| 亚洲午夜在线视频| 亚洲精品一区二区三区香蕉| 国产999精品久久| 国产婷婷色一区二区三区四区| 91一区二区三区在线观看| 国产性色一区二区| 欧美在线免费播放| 亚洲国产视频一区二区| 9i看片成人免费高清| 毛片一区二区三区| 综合在线观看色| 欧美成人乱码一区二区三区| 色综合久久综合网欧美综合网| 青青国产91久久久久久| 中文字幕一区在线观看| 欧美成人乱码一区二区三区| 在线亚洲人成电影网站色www| 国产精品超碰97尤物18| 欧美成人福利视频| 国产精品一区在线观看你懂的| 亚洲激情六月丁香| 国产精品欧美精品| 成人久久18免费网站麻豆| 国产精品进线69影院| 99精品一区二区三区| 久久av老司机精品网站导航| www一区二区| 成人午夜电影网站| 激情欧美日韩一区二区| 性久久久久久久久久久久| 日韩欧美色电影| 成人午夜又粗又硬又大| 伊人色综合久久天天| 欧美极品aⅴ影院| 在线免费观看一区| 色综合久久久久网| 99久久精品国产网站| 国产激情91久久精品导航| 精品一区二区精品| 免费在线观看一区| 日本 国产 欧美色综合| 天天色 色综合| 五月天婷婷综合| 久久九九国产精品| 色婷婷av一区二区三区大白胸| 午夜天堂影视香蕉久久| 精品欧美一区二区久久| 欧美一级久久久| 成人app软件下载大全免费| 高清shemale亚洲人妖| 国产成人久久精品77777最新版本| 亚洲欧美日韩中文播放| 亚洲欧美日韩电影| 亚洲在线视频一区| 天堂av在线一区| 久久精品免费看| 亚洲欧美另类小说| 亚洲图片一区二区| 国产欧美综合在线观看第十页| 久久综合九色综合97婷婷| 欧美videos中文字幕| 久久久精品国产免大香伊| 国产三级三级三级精品8ⅰ区| 欧美在线啊v一区| 在线成人小视频| 日韩无一区二区| 欧洲精品一区二区三区在线观看| 国产做a爰片久久毛片| 一区二区高清视频在线观看| 久久久精品影视| 欧美一级高清片| 国产欧美日韩在线视频| 国产精品大尺度| 久久噜噜亚洲综合| 日韩一区国产二区欧美三区| 日韩精品中文字幕一区二区三区 | 国产乱色国产精品免费视频| 亚洲美腿欧美偷拍| 欧美国产精品久久| 亚洲蜜桃精久久久久久久| 久久精品夜夜夜夜久久| 亚洲色图视频网站| 蜜臀91精品一区二区三区 | 国产一区二区中文字幕| 99视频超级精品| 丰满亚洲少妇av| 国产乱码精品一品二品| 麻豆91在线播放免费| 五月婷婷另类国产| 亚洲成av人片| 成人免费不卡视频| 成人精品免费视频| 91超碰这里只有精品国产| 国产日产欧美一区| 午夜日韩在线电影| av日韩在线网站| a4yy欧美一区二区三区| av在线不卡免费看| 精品乱人伦小说| 久久久五月婷婷| 日本视频一区二区三区| 免费看日韩a级影片| 在线一区二区三区做爰视频网站| 国产91精品精华液一区二区三区| 在线成人免费观看| 中文av字幕一区| 日韩一区二区三区视频在线观看| 欧美视频精品在线观看| 欧美经典一区二区| 久久国产尿小便嘘嘘| 国产剧情av麻豆香蕉精品| 欧美日韩大陆一区二区| 亚洲综合图片区| 欧美日韩激情一区二区三区| 国产精品嫩草影院av蜜臀| 日本欧美一区二区在线观看| 欧美一区二区在线免费播放| 另类人妖一区二区av| 2022国产精品视频| caoporen国产精品视频| 久久久久久久久免费| 国产成人免费视频网站| 亚洲欧美精品午睡沙发| 国模少妇一区二区三区| 中文字幕第一区二区| 在线观看视频91| 男人的天堂久久精品| 欧美日韩精品欧美日韩精品一| 中文字幕一区二区三区不卡 | 国产精品伦理在线| 欧美性欧美巨大黑白大战|