九色成人免费视频_久久一区视频_视频一区国产精品_精品视频在线观看

始創于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業
  • 60秒人工響應
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補償
您的位置: 網站首頁 > 幫助中心>文章內容

深入理解Linux內存映射機制 (3)

發布時間:  2012/8/15 18:18:47

向了第768個表項。

然后函數開始一個循環即開始填充從768到1024這256個目錄項的內容。
one_md_table_init()函數根據pgd找到指向的pmd表。

它同樣在mm/init.c中定義:
static pmd_t * __init one_md_table_init(pgd_t *pgd)
{
pmd_t *pmd_table;

#ifdef CONFIG_X86_PAE
pmd_table = (pmd_t *) alloc_bootmem_low_pages(PAGE_SIZE);
set_pgd(pgd, __pgd(__pa(pmd_table) | _PAGE_PRESENT));
if (pmd_table != pmd_offset(pgd, 0))
BUG();
#else
pmd_table = pmd_offset(pgd, 0);
#endif
return pmd_table;
}
可以看出, 如果內核不啟用PAE選項, 函數將通過 pmd_offset返回pgd的地址。因為linux的二級映射模型,本來就是忽略pmd中間目錄表的。
接著又個判斷語句:
>> if (pfn >= max_low_pfn)
>> continue;
這個很關鍵, max_low_pfn代表著整個物理內存一共有多少頁框。 當pfn大于max_low_pfn的時候,表明內核已經把整個物理內存都映射到了系統空間中, 所以剩下有沒被填充的表項就直接忽略了。因為內核已經可以映射整個物理空間了, 沒必要繼續填充剩下的表項。
緊接著的第2個for循環,在linux的3級映射模型中,是要設置pmd表的, 但在2級映射中忽略, 只循環一次,直接進行頁表pte的設置。
>> address = pfn * PAGE_SIZE PAGE_OFFSET;
address是個線性地址, 根據上面的語句可以看出address是從0xc000000開始的,也就是從內核空間開始,后面在設置頁表項屬性的時候會用到它.
>> pte = one_page_table_init(pmd);
根據pmd分配一個頁表, 代碼同樣在mm/init.c中:
static pte_t * __init one_page_table_init(pmd_t *pmd)
{
if (pmd_none(*pmd)) {
pte_t *page_table = (pte_t *) alloc_bootmem_low_pages(PAGE_SIZE);
set_pmd(pmd, __pmd(__pa(page_table) | _PAGE_TABLE));
if (page_table != pte_offset_kernel(pmd, 0))
BUG();
return page_table;
}
return pte_offset_kernel(pmd, 0);
}
pmd_none宏判斷pmd表是否為空, 如果為空則要利用alloc_bootmem_low_pages分配一個4k大小的物理頁面。 然后通過set_pmd(pmd, __pmd

(__pa(page_table) | _PAGE_TABLE));來設置pmd表項。page_table顯然屬于線性地址,先通過__pa宏轉化為物理地址,在與上_PAGE_TABLE宏,此時它們還是無符號整數,在通過__pmd把無符號整數轉化為pmd類型,經過這些轉換, 就得到了一個具有屬性的表項, 然后通過set_pmd宏設置pmd表項.

接著又是一個循環,設置1024個頁表項。

is_kernel_text函數根據前面提到的address來判斷address線性地址是否屬于內核代碼段,它同樣在mm/init.c中定義:

static inline int is_kernel_text(unsigned long addr)
{
if (addr >= (unsigned long)_stext && addr <= (unsigned long)__init_end)
return 1;
return 0;
}

_stext, __init_end是個內核符號, 在內核鏈接的時候生成的, 分別表示內核代碼段的開始和終止地址.

如果address屬于內核代碼段, 那么在設置頁表項的時候就要加個PAGE_KERNEL_EXEC屬性,如果不是,則加個PAGE_KERNEL屬性.

#define _PAGE_KERNEL_EXEC \
(_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)

#define _PAGE_KERNEL \
(_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_NX)

最后通過set_pte(pte, pfn_pte(pfn, PAGE_KERNEL));來設置頁表項, 先通過pfn_pte宏根據頁框號和頁表項的屬性值合并成一個頁表項值,

然戶在用set_pte宏把頁表項值寫到頁表項里。
當pagetable_init()函數返回后,內核已經設置好了內核頁表,緊著調用load_cr3(swapper_pg_dir);
#define load_cr3(pgdir) \
asm volatile("movl %0,%%cr3": :"r" (__pa(pgdir)))
將控制swapper_pg_dir送入控制寄存器cr3. 每當重新設置cr3時, CPU就會將頁面映射目錄所在的頁面裝入CPU內部高速緩存中的TLB部分. 現在內存中(實際上是高速緩存中)的映射目錄變了,就要再讓CPU裝入一次。由于頁面映射機制本來就是開啟著的, 所以從這條指令以后就擴大了系統空間中有映射區域的大小, 使整個映射覆蓋到整個物理內存(高端內存)除外. 實際上此時swapper_pg_dir中已經改變的目錄項很可能還在高速緩存中, 所以還要通過__flush_tlb_all()將高速緩存中的內容沖刷到內存中,這樣才能保證內存中映射目錄內容的一致性。
3.4 對如何構建頁表的總結
通過上述對pagetable_init()的剖析, 我們可以清晰的看到, 構建內核頁表, 無非就是向相應的表項寫入下一級地址和屬性。 在內核空間保留著一部分內存專門用來存放內核頁表.當cpu要進行尋址的時候,無論在內核空間,還是在用戶空間, 都會通過這個頁表來進行映射。對于這個函數, 內核把整個物理內存空間都映射完了, 當用戶空間的進程要使用物理內存時, 豈不是不能做相應的映射了? 其實不會的, 內核只是做了映射, 映射不代表使用, 這樣做是內核為了方便管理內存而已。

四. 實例分析映射機制
4.1示例代碼
通過前面的理論分析,我們通過編寫一個簡單的程序, 來分析內核是如何把線性地址映射到物理地址的。
[root@localhost temp]# cat test.c
#include <stdio.h>
void test(void)
{
printf("hello, world.\n");
}
int main(void)
{
test();
}
這段代碼很簡單, 我們故意要main調用test函數, 就是想看下test函數的虛擬地址是如何映射成物理地址的。
4.2 段式映射分析
我們先編譯, 在反匯編下test文件
[root@localhost temp]# gcc -o test test.c
[root@localhost temp]# objdump -d test
08048368 <test>:
8048368: 55 push %ebp
8048369: 89 e5 mov %esp,%ebp
804836b: 83 ec 08 sub $0x8,%esp
804836e: 83 ec 0c sub $0xc,%esp
8048371: 68

億恩科技地址(ADD):鄭州市黃河路129號天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888
   聯系:億恩小凡
   QQ:89317007
   電話:0371-63322206


本文出自:億恩科技【www.23lll.com】

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線

     
     
    九色成人免费视频_久久一区视频_视频一区国产精品_精品视频在线观看
    欧美日韩你懂的| 国模精品一区二区三区色天香| 性欧美videos另类喷潮| 日韩性生活视频| 亚洲第一级黄色片| 亚洲欧美制服另类日韩| 一区二区三区四区国产| 亚洲精品一区二区三区福利| 亚洲国产美女| 亚洲国产成人tv| 亚洲国产三级网| 亚洲丰满在线| 亚洲激情在线观看视频免费| 亚洲国产天堂久久综合| 在线观看久久av| 在线欧美福利| 亚洲第一在线综合网站| 亚洲二区视频在线| 亚洲人成久久| 亚洲乱码国产乱码精品精| 日韩亚洲欧美一区| 亚洲社区在线观看| 亚洲制服欧美中文字幕中文字幕| 亚洲一区二区av电影| 亚洲欧洲av一区二区三区久久| 亚洲欧美日韩视频一区| 香蕉av福利精品导航| 欧美一区二区成人6969| 欧美一级视频| 亚洲激情另类| 夜夜嗨av一区二区三区四区| 亚洲私人影院| 西西裸体人体做爰大胆久久久| 欧美亚洲日本一区| 久久久水蜜桃av免费网站| 裸体素人女欧美日韩| 欧美高清视频在线| 欧美偷拍一区二区| 国产欧美精品va在线观看| 国外成人在线视频网站| 亚洲国产91精品在线观看| 日韩午夜在线| 羞羞色国产精品| 亚洲片国产一区一级在线观看| 一区二区三区|亚洲午夜| 亚洲综合999| 久久久久久久久久码影片| 欧美成va人片在线观看| 欧美小视频在线观看| 国产亚洲欧美在线| 亚洲激情另类| 亚洲欧美另类综合偷拍| 久久精品国产一区二区电影 | 亚洲欧美激情一区二区| 久久精品视频在线免费观看| 一区二区三区福利| 欧美在线电影| 欧美精品1区2区| 国产农村妇女精品| 亚洲激情在线观看| 亚洲一区影音先锋| 91久久久国产精品| 欧美亚洲综合网| 欧美成人在线免费观看| 国产精品久久久久久福利一牛影视| 国产一区日韩二区欧美三区| 亚洲精品久久| 久久福利视频导航| 亚洲性视频h| 免费不卡在线观看| 国产精品每日更新| 亚洲国产成人久久| 香蕉精品999视频一区二区 | 欧美精品麻豆| 国产手机视频精品| 99国产精品私拍| 亚洲国产精品va| 午夜日韩激情| 欧美精品成人一区二区在线观看| 国产婷婷色一区二区三区| 日韩一区二区免费看| 亚洲高清电影| 欧美一区二区成人| 欧美日韩喷水| 亚洲电影免费观看高清完整版在线| 亚洲免费在线观看视频| 一本久道久久综合狠狠爱| 久久美女性网| 国产欧美精品日韩区二区麻豆天美| 91久久国产综合久久| 久久精品动漫| 久久国产直播| 国产精品视频yy9099| 日韩亚洲视频| 亚洲免费观看高清在线观看| 久久一区中文字幕| 国产日韩在线一区二区三区| 一区二区三区视频观看| 99精品99| 欧美一级播放| 欧美激情精品久久久久久变态| 久久香蕉国产线看观看网| 国产精品日本一区二区| 99热这里只有精品8| 亚洲精品日日夜夜| 久久久青草婷婷精品综合日韩| 国产精品一区久久久久| 一区二区高清在线观看| 一区二区免费在线视频| 欧美激情一区二区三区| 在线欧美福利| 亚洲激情成人网| 久久亚洲图片| 在线播放中文一区| 久久高清一区| 麻豆精品精华液| 在线看日韩欧美| 亚洲精品久久久蜜桃| 美女久久一区| 亚洲国产高清一区| 亚洲精品日产精品乱码不卡| 欧美高清在线精品一区| 亚洲日本精品国产第一区| 99精品国产在热久久下载| 欧美激情视频一区二区三区在线播放 | 国产精品ⅴa在线观看h| 亚洲视频免费观看| 亚洲欧美中日韩| 国产精品夜色7777狼人| 亚洲欧美日韩爽爽影院| 久久精品人人做人人综合| 国内精品久久久久影院优| 亚洲高清毛片| 欧美精品在线免费观看| 91久久精品www人人做人人爽 | 欧美日韩在线另类| 亚洲视频一区二区在线观看| 午夜精品久久久久久99热软件| 国产女人18毛片水18精品| 欧美中文在线字幕| 欧美成人免费网站| 99国产精品久久久| 欧美一级一区| 在线成人av网站| 日韩一区二区高清| 国产精品九九久久久久久久| 亚洲尤物视频在线| 久久婷婷久久一区二区三区| 亚洲二区在线观看| 亚洲午夜精品久久久久久app| 国产精品国产三级国产专区53| 亚洲欧美在线观看| 蜜臀久久99精品久久久久久9| 亚洲精品视频在线观看免费| 亚洲欧美国产精品专区久久| 国产一区深夜福利| 99视频有精品| 国产欧美日韩免费| 亚洲国产精品一区二区三区| 欧美日韩亚洲一区| 欧美一区二区三区在线看| 欧美成人午夜激情视频| 亚洲天堂第二页| 久久在线精品| 夜夜嗨av一区二区三区免费区| 久久精品国产99国产精品澳门| 亚洲欧洲另类| 久久精品国产一区二区三 | 9i看片成人免费高清| 久久精品国产第一区二区三区最新章节 | 猛男gaygay欧美视频| 一级日韩一区在线观看| 久久精品国产免费看久久精品| 亚洲国产一区二区视频| 性久久久久久| 亚洲国产第一| 欧美中文在线免费| 亚洲乱码久久| 巨胸喷奶水www久久久免费动漫| 日韩写真视频在线观看| 久久久青草青青国产亚洲免观| 亚洲精品色图| 久久久人成影片一区二区三区观看| 日韩网站在线| 噜噜噜噜噜久久久久久91| 亚洲小说春色综合另类电影| 欧美大色视频| 性色av一区二区三区| 欧美日韩亚洲综合一区| 亚洲黄色成人| 国产欧美日韩另类一区| 一区二区三区四区蜜桃| 狠狠做深爱婷婷久久综合一区| 亚洲一区二区精品视频| 在线观看日韩| 久久久精品国产免费观看同学| 一道本一区二区| 欧美大片91| 亚洲成色最大综合在线| 国产美女精品视频免费观看|