a毛片毛费观看-a毛片在线-a毛片在线观看-a毛片在线免费观看-国产成人综合洲欧美在线-国产成人综合高清在线观看

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

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

發布時間:  2012/8/15 18:17:50

表,因為在進入保護模式后, 內核繼續初始化直到建立完整的內存映射機制之前, 仍然需要用到頁表來映射相應的內存地址。 臨時頁表的初始化是在arch/i386/kernel/head.S中進行的:
swapper_pg_dir是臨時頁全局目錄表, 它是在內核編譯過程中靜態初始化的.
pg0是第一個頁表開始的地方, 它也是內核編譯過程中靜態初始化的.
內核通過以下代碼建立臨時頁表:
ENTRY(startup_32)
…………
/* 得到開始目錄項的索引,從這可以看出內核是在swapper_pg_dir的768個表項開始進行建立的, 其對應的線性地址就是0xc0000000以上的地址, 也就是內核在初始化它自己的頁表 */
page_pde_offset = (__PAGE_OFFSET >> 20);
/* pg0地址在內核編譯的時候, 已經是加上0xc0000000了, 減去0xc00000000得到對應的物理地址 */
movl $(pg0 - __PAGE_OFFSET), %edi
/* 將目錄表的地址傳給edx, 表明內核也要從0x00000000開始建立頁表, 這樣可以保證從以物理地址取指令到以線性地址在系統空間取指令的平穩過渡, 下面會詳細解釋 */
movl $(swapper_pg_dir - __PAGE_OFFSET), %edx
movl $0x007, %eax
leal 0x007(%edi),%ecx
Movl %ecx,(%edx)
movl %ecx,page_pde_offset(%edx)
addl $4,%edx
movl $1024, %ecx
11:
stosl addl $0x1000,%eax
loop 11b
/* 內核到底要建立多少頁表, 也就是要映射多少內存空間, 取決于這個判斷條件。在內核初始化程中內核只要保證能映射到包括內核的代碼段,數據段, 初始頁表和用于存放動態數據結構的128k大小的空間就行 */
leal (INIT_MAP_BEYOND_END 0x007)(%edi),%ebp
cmpl %ebp,%eax
jb 10b
movl %edi,(init_pg_tables_end - __PAGE_OFFSET)

在上述代碼中, 內核為什么要把用戶空間和內核空間的前幾個目錄項映射到相同的頁表中去呢,雖然在head.S中內核已經進入保護模式,但是內核現在是處于保護模式的段式尋址方式下,因為內核還沒有啟用分頁映射機制,現在都是以物理地址來取指令, 如果代碼中遇到了符號地址,只能減去0xc0000000才行, 當開啟了映射機制后就不用了現在cpu中的取指令指針eip仍指向低區,如果只建立內核空間中的映射, 那么當內核開啟映射機制后, 低區中的地址就沒辦法尋址了,應為沒有對應的頁表, 除非遇到某個符號地址作為絕對轉移或調用子程序為止。因此要盡快開啟CPU的頁式映射機制.
movl $swapper_pg_dir-__PAGE_OFFSET,%eax
movl %eax,%cr3 /* cr3控制寄存器保存的是目錄表地址 */
movl %cr0,%eax /* 向cr0的最高位置1來開啟映射機制 */
orl $0x80000000,%eax
movl %eax,%cr0
ljmp $__BOOT_CS,$1f /* Clear prefetch and normalize %eip */
1:
lss stack_start,%esp
通過ljmp $__BOOT_CS,$1f這條指令使CPU進入了系統空間繼續執行 因為__BOOT_CS是個符號地址,地址在0xc0000000以上。
在head.S完成了內核臨時頁表的建立后,它繼續進行初始化,包括初始化INIT_TASK,也就是系統開啟后的第一個進程;建立完整的中斷處理程序,然后重新加載GDT描述符,最后跳轉到init/main.c中的start_kernel函數繼續初始化.
3.3內核頁表的完整建立
內核在start_kernel()中繼續做第二階段的初始化,因為在這個階段中, 內核已經處于保護模式下,前面只是簡單的設置了內核頁表, 內核必須首先要建立一個完整的頁表才能繼續運行,因為內存尋址是內核繼續運行的前提。
pagetable_init()的代碼在mm/init.c中:
[start_kernel()>setup_arch()>paging_init()>pagetable_init()]
為了簡單起見, 我忽略了對PAE選項的支持。
static void __init pagetable_init (void)
{
……
pgd_t *pgd_base = swapper_pg_dir;
……
kernel_physical_mapping_init(pgd_base);
……
}
在這個函數中pgd_base變量指向了swapper_pg_dir, 這正是內核目錄表的開始地址,pagetable_init()函數在通過

kernel_physical_mapping_init()函數完成內核頁表的完整建立。
kernel_physical_mapping_init函數同樣在mm/init.c中, 我略去了與PAE模式相關的代碼:
static void __init kernel_physical_mapping_init(pgd_t *pgd_base)
{
unsigned long pfn;
pgd_t *pgd;
pmd_t *pmd;
pte_t *pte;
int pgd_idx, pmd_idx, pte_ofs;
pgd_idx = pgd_index(PAGE_OFFSET);
pgd = pgd_base pgd_idx;
pfn = 0;
for (; pgd_idx < PTRS_PER_PGD; pgd , pgd_idx ) {
pmd = one_md_table_init(pgd);
if (pfn >= max_low_pfn)
continue;
for (pmd_idx = 0; pmd_idx < PTRS_PER_PMD && pfn < max_low_pfn; pmd , pmd_idx ) {
unsigned int address = pfn * PAGE_SIZE PAGE_OFFSET;
……
pte = one_page_table_init(pmd);
for (pte_ofs = 0; pte_ofs < PTRS_PER_PTE && pfn < max_low_pfn; pte , pfn , pte_ofs ) {
if (is_kernel_text(address))
set_pte(pte, pfn_pte(pfn, PAGE_KERNEL_EXEC));
else
set_pte(pte, pfn_pte(pfn, PAGE_KERNEL));
……
}
}

通過作者的注釋, 可以了解到這個函數的作用是把整個物理內存地址都映射到從內核空間的開始地址,即從0xc0000000的整個內核空間中,直到物理內存映射完畢為止。這個函數比較長, 而且用到很多關于內存管理方面的宏定義,理解了這個函數, 就能大概理解內核是如何建立頁表的,將這個抽象的模型完全的理解。 下面將詳細分析這個函數:
函數開始定義了4個變量pgd_t *pgd, pmd_t *pmd, pte_t *pte, pfn;
pgd指向一個目錄項開始的地址,pmd指向一個中間目錄開始的地址,pte指向一個頁表開始的地址pfn是頁框號被初始為0. pgd_idx根據pgd_index宏計算結果為768,也是內核要從目錄表中第768個表項開始進行設置。 從768到1024這個256個表項被linux內核設置成內核目錄項,低768個目錄項被用戶空間使用. pgd = pgd_base pgd_idx; pgd便指

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


本文出自:億恩科技【www.ibaoshan.net】

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!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小時客服服務熱線

     
     
    被教官按在寝室狂到腿软视频| 欧美精品VIDEOSEX极品| 八戒.八戒电影免费观看| 亚洲AV成人无码网站不卡| 欧美成人免费一区| 韩国免费A级作爱片视频| 啊灬啊灬啊灬快好深| 亚洲欧美性爱视频| 上面一边亲下一边面膜使用方法| 久久久久黑人强伦姧人妻| 公交车上摸到花蒂进去了视频| 再深点灬舒服灬太大了网站| 无码高潮少妇毛多水多水免费| 免费无码久久成人网站| 国产又爽又黄又舒服又刺激视频| TPU色母能与PA6色母通用吗| 亚洲精品无码av中文字幕电影网站| 日产精品一卡2卡三卡4卡乱码| 久久嫩草精品久久久久精品| 国产精品VA在线观看无码| 99国产精品久久99久久久| 亚洲VA中文字幕无码一区 | 男生女生差差差轮滑免费| 国产乱人伦偷精品视频AAA| av资源在线观看少妇| 亚洲精品无码午夜福利中文字幕 | 亚洲最大的AV网站| 铜铜铜铜铜铜铜铜好大好深色星空 | 国产成人综合色视频精品| 最新中文字幕AV无码专区| 亚洲AV日韩AV高潮无码专区| 日本经典片免费看| 老阿姨哔哩哔哩B站肉片入口6 | 欧美日韩精品一区二区三区不卡| 狠狠人妻久久久久久综合蜜桃| 成人无码特黄特黄AV片在线| 中国少妇嫖妓BBWBBW| 亚洲 熟 图片 小说 乱 妇| 人妻丰满熟妇AV无码处处不卡| 久久精品国产精品亚洲| 国产精品免费看久久久无码| WWW.五月激情.COM| 一二三四免费观看在线6| 小婷又软又嫩又紧水又多| 日本WINDOWS免费吗| 久碰人澡人澡人澡人澡人视频| 国产未成女一区二区三区| 被夫の上司に犯中文字幕| 在公车上露出奶头自慰| 亚洲AV无码专区青青草原| 色婷婷成人AV电影| 女被男狂揉吃奶胸60分钟视频| 精品久久久久久无码免费| 国产成人精品综合久久久| FREEFORNVIDEOS性| 亚洲最大成人一区久久久| 午夜AV无码福利免费看网站 | 国产亚洲精品第一综合麻豆| 宝贝乖女你的奶真大水真多| 中文日本字幕MV在现线观看| 亚洲成A人V欧美综合天堂麻豆| 深夜A级毛片催情精视频免费| 欧美乱妇日本无乱码特黄大片| 久久精品国产亚洲AV麻豆图片| 国产精品久久久久这里只有精品| 扒开双腿猛进入喷水高潮叫声| 中国BBW50成熟| 亚洲狠狠色丁香婷婷综合| 未满小14洗澡无码视频网站| 人妻少妇精品视频aaa| 麻豆av一区二区三区久久| 激情综合亚洲色婷婷五月APP| 国产成人丝袜视频在线观看| 被男人吃奶很爽的毛片| √最新版天堂资源网在线| 亚洲人成在线观看| 亚洲 日韩 丝袜 熟女 变态| 少妇高潮喷水久久久久久久久久| 欧美熟妇SEXFREE| 巨大欧美黑人XXXXBBBB| 极品新婚夜少妇真紧| 国产精品日韩专区第一页| 成人午夜亚洲精品无码网站 | 岳两腿之间白嫩的小缝| 亚洲国产精品久久久久4婷婷 | 亚洲精品成人久久久| 无遮挡边吃摸边吃奶边做| 日韩无矿砖2021中文字幕| 欧美人妇做爰XXXⅩ性高| 久久夜色精品国产欧美乱| 精品欧洲AV无码一区二区男男| 国产蜜桃AV秘 区一区二区三区| 绯色av一区二区| 宝宝下面都湿透了还嘴硬疼| 80S国产成年女人毛片| 呦香8黝黝狖呦香8| 亚洲另类在线视频| 亚洲AV日韩AV永久无码免下载| 天堂BT种子在线最新版资源| 日本伦奷在线播放| 欧美一区二区三区啪啪| 免费看30分钟打扑克教程| 久久人人爽人人爽人人片AV麻烦| 精产国品一二三产区区別| 国产人久久人人人人爽| 国产AV无码一区二区二三区J| 成人年无码AV片在线观看 | 大肉大捧一进一出的视频| JAVASCRIPTJAVA成熟亲子| 12末发育娇小性色XXXX| 影音先锋中文字幕人妻| 亚洲熟妇色XXXXX欧美老妇Y| 亚洲成A人片在线观看无遮挡| 小洞饿了想吃大香肠| 玩稚嫩的小屁股眼AV| 色在线 | 国产| 日韩视频在线观看| 人人妻人人妻人人片AV| 欧美人妻少妇精品视频专区| 免费无码AV一区二区波多野结衣| 老头扒开粉嫩的小缝亲吻网站| 久久久久99精品成人片欧美| 精品九九人人做人人爱| 黑人强伦姧人妻完整版| 国产在线精品国自产拍影院同性| 国产女人天天春夜夜春| 国产精品无码久久久久久| 国产成人一区二区青青草原| 高清VIDEOSGRATIS欧| 大乳丰满人妻中文字幕日本| 成年网站免费视频黄A站| 拔萝卜日本视频在线观看免费| EEUSS影院WWW在线观看| 99久久精品国产波多野结衣| 45歳の▽バツ1熟女とハメ撮り| 撞击成熟美妇老师后臀| 中文在线っと好きだっ最新版 | 97人妻碰碰碰久久久久| 中文字幕无码AV正片AV| 中文乱码人妻系列一区二区| 曰本熟妇色XXXXX曰本妇| 一本一道VS无码中文字幕| 艳妇乳肉豪妇荡乳AV| 艳妇臀荡乳欲伦交换H漫画小说| 亚洲一区二区三区AV无码| 亚洲日韩精品无码专区加勒比| 亚洲清清爽爽AABB| 亚洲色自偷自拍另类小说| 亚洲熟女综合色一区二区三区| 亚洲熟妇无码乱码AV电影| 亚洲综合无码一区二区痴汉| 亚洲中文无码A∨在线观看| 亚洲综合AV色婷婷国产野外| 亚洲中文字幕无码第一区| 夜夜澡人摸人人添人人看| 又嫩又硬又黄又爽的视频| 中文在线官网在线| 91人妻超碰亚洲| 99RE6热视频这里只精品首页| AAA日本高清在线播放免费观看| 99久久精品费精品国产一区二| BBOX撕裂BASS后门BD| JAPAN丰满少妇VIDEOS| 被CAO的奶水直喷高H| 大肥女BBWBBWHD视频| 国产AⅤ精品福利一区二区三区| 国产成人无码H在线观看网站| 国产精品久久成人网站| 国产欧美日韩免费看AⅤ视频| 国语精品自产拍在线观看网站| 极品人妻系列人妻30P| 精品一线二线三线区别大吗| 久久婷婷人人澡人人爽人人爱| 噜噜狠狠色综合久色A站网址| 免费看黑人强伦姧人妻| 妺妺自愿做我的性玩具| 女上男下啪啪激烈高潮无遮盖| 欧洲精品不卡1卡2卡三卡 | Chinese国产HD精品实拍| 爱情岛论坛自拍亚洲品质极速福利 | 永久AV狼友网站在线观看| 中文字幕AV高清片| 99久久国产综合精品SWAG| www.xx欧美大鸡巴| 成人国产一区二区精品小说 | 国产精品无卡毛片视频| 国产又黄又大又粗的视频| 交换人生俱乐部全文免费阅读| 久久AⅤ无码AV高潮AV喷吹| 老熟女重囗味HDXX70星空| 女子初尝黑人巨嗷嗷叫| 人妻被按摩到潮喷中文字幕| 色 人 阁阁婷婷色五月破解| 天天摸夜夜添狠狠添高潮出水 | 国产偷国产偷亚洲清高孕妇| 韩国女星潜规39集无删减| 久久99精品久久久久免费| 巨波霸乳在线永久免费视频 | 国产精品久久久久久无码| 国内精品乱码卡一卡2卡三卡|