国产麻豆精品视频-国产麻豆精品免费视频-国产麻豆精品免费密入口-国产麻豆精品高清在线播放-国产麻豆精品hdvideoss-国产麻豆精品

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

深入理解Linux內(nèi)存映射機制 (1)

發(fā)布時間:  2012/8/15 18:17:27

一. 緒 論
二. X86的硬件尋址方法
三. 內(nèi)核對頁表的設(shè)置
四. 實例分析映射機制

一. 緒 論
我們經(jīng)常在程序的反匯編代碼中看到一些類似0x32118965這樣的地址,操作系統(tǒng)中稱為線性地址,或虛擬地址。虛擬地址有什么用?虛擬地址又是如何轉(zhuǎn)換為物理內(nèi)存地址的呢?本章將對此作一個簡要闡述。
1.1 Linux內(nèi)存尋址概述
現(xiàn)代意義上的操作系統(tǒng)都處于32位保護(hù)模式下。每個進(jìn)程一般都能尋址4G的物理空間。但是我們的物理內(nèi)存一般都是幾百M,進(jìn)程怎么能獲得4G的物理空間呢?這就是使用了虛擬地址的好處,通常我們使用一種叫做虛擬內(nèi)存的技術(shù)來實現(xiàn),因為可以使用硬盤中的一部分來當(dāng)作內(nèi)存使用。例外一點現(xiàn)在操作系統(tǒng)都劃分為系統(tǒng)空間和用戶空間,使用虛擬地址可以很好的保護(hù)內(nèi)核空間被用戶空間破壞。
對于虛擬地址如何轉(zhuǎn)為物理地址,這個轉(zhuǎn)換過程有操作系統(tǒng)和CPU共同完成. 操作系統(tǒng)為CPU設(shè)置好頁表。CPU通過MMU單元進(jìn)行地址轉(zhuǎn)換。
1.2 瀏覽內(nèi)核代碼的工具
現(xiàn)在的內(nèi)核都很大, 因此我們需要某種工具來閱讀龐大的源代碼體系,現(xiàn)在的內(nèi)核開發(fā)工具都選用vim ctag cscope瀏覽內(nèi)核代碼,網(wǎng)上已有現(xiàn)成的makefile文件用來生成ctags/cscope/etags。
一、用法:
找一個空目錄,把附件Makefile拷貝進(jìn)去。然后在該目錄中選擇性地運行如下make命令:
$ make
將處理/usr/src/linux下的源文件,在當(dāng)前目錄生成ctags, cscope
注:SRCDIR用來指定內(nèi)核源代碼目錄,如果沒有指定,則缺省為/usr/src/linux/
1) 只創(chuàng)建ctags
$ make SRCDIR=/usr/src/linux-2.6.12/ tags
2) 只創(chuàng)建cscope
$ make SRCDIR=/usr/src/linux-2.6.12/ cscope
3) 創(chuàng)建ctags和cscope
$ make SRCDIR=/usr/src/linux-2.6.12/
4) 只創(chuàng)建etags
$ make SRCDIR=/usr/src/linux-2.6.12/ TAGS

二、處理時包括的內(nèi)核源文件:
1) 不包括drivers,sound目錄
2) 不包括無關(guān)的體系結(jié)構(gòu)目錄
3) fs目錄只包括頂層目錄和ext2,proc目錄

三、最簡單的ctags命令
1) 進(jìn)入
進(jìn)入vim后,用
:tag func_name
跳到函數(shù)func_name
2) 看函數(shù)(identifier)
想進(jìn)入光標(biāo)所在的函數(shù),用
CTRL ]
3) 回退
回退用 CTRL T

1.3 內(nèi)核版本的選取
本次論文分析, 我選取的是linux-2.6.10版本的內(nèi)核。最新的內(nèi)核代碼為2.6.25。但是現(xiàn)在主流的服務(wù)器都使用的是RedHat AS4的機器,它使用2.6.9的內(nèi)核。我選取2.6.10是因為它很接近2.6.9,現(xiàn)在紅帽企業(yè)Linux 4以Linux2.6.9內(nèi)核為基礎(chǔ),是最穩(wěn)定、最強大的商業(yè)產(chǎn)品。在2004年期間,F(xiàn)edora等開源項目為Linux 2.6內(nèi)核技術(shù)的更加成熟提供了一個環(huán)境,這使得紅帽企業(yè) Linux v.4內(nèi)核可以提供比以前版本更多更好的

功能和算法,具體包括:
• 通用的邏輯CPU調(diào)度程序:處理多內(nèi)核和超線程CPU。
• 基于對象的逆向映射虛擬內(nèi)存:提高了內(nèi)存受限系統(tǒng)的性能。
• 讀復(fù)制更新:針對操作系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的SMP算法優(yōu)化。
• 多I/O調(diào)度程序:可根據(jù)應(yīng)用環(huán)境進(jìn)行選擇。
• 增強的SMP和NUMA支持:提高了大型服務(wù)器的性能和可擴展性。
• 網(wǎng)絡(luò)中斷緩和(NAPI):提高了大流量網(wǎng)絡(luò)的性能。
Linux 2.6 內(nèi)核使用了許多技術(shù)來改進(jìn)對大量內(nèi)存的使用,使得 Linux 比以往任何時候都更適用于企業(yè)。包括反向映射(reverse mapping)、使用更大的內(nèi)存頁、頁表條目存儲在高端內(nèi)存中,以及更穩(wěn)定的管理器。因此,我選取linux-2.6.10內(nèi)核版本作為分析對象。

 

二. X86的硬件尋址方法
請參考Intel x86手冊^_^

 

三. 內(nèi)核對頁表的設(shè)置
CPU做出映射的前提是操作系統(tǒng)要為其準(zhǔn)備好內(nèi)核頁表,而對于頁表的設(shè)置,內(nèi)核在系統(tǒng)啟動的初期和系統(tǒng)初始化完成后都分別進(jìn)行了設(shè)置。
3.1 與內(nèi)存映射相關(guān)的幾個宏
這幾個宏把無符號整數(shù)轉(zhuǎn)換成對應(yīng)的類型
#define __pte(x) ((pte_t) { (x) } )
#define __pmd(x) ((pmd_t) { (x) } )
#define __pgd(x) ((pgd_t) { (x) } )
#define __pgprot(x) ((pgprot_t) { (x) } )

根據(jù)x把它轉(zhuǎn)換成對應(yīng)的無符號整數(shù)
#define pte_val(x) ((x).pte_low)
#define pmd_val(x) ((x).pmd)
#define pgd_val(x) ((x).pgd)
#define pgprot_val(x) ((x).pgprot)

把內(nèi)核空間的線性地址轉(zhuǎn)換為物理地址
#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET)

把物理地址轉(zhuǎn)化為線性地址
#define __va(x) ((void *)((unsigned long)(x) PAGE_OFFSET))

x是頁表項值, 通過pte_pfn得到其對應(yīng)的物理頁框號, 最后通過pfn_to_page得到對應(yīng)的物理頁描述符
#define pte_page(x) pfn_to_page(pte_pfn(x))

如果對應(yīng)的表項值為0, 返回1
#define pte_none(x) (!(x).pte_low)

x是頁表項值, 右移12位后得到其對應(yīng)的物理頁框號
#define pte_pfn(x) ((unsigned long)(((x).pte_low >> PAGE_SHIFT)))
根據(jù)頁框號和頁表項的屬性值合并成一個頁表項值
#define pfn_pte(pfn, prot) __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))

根據(jù)頁框號和頁表項的屬性值合并成一個中間表項值
#define pfn_pmd(pfn, prot) __pmd(((pfn) << PAGE_SHIFT) | pgprot_val(prot))

向一個表項中寫入指定的值
#define set_pte(pteptr, pteval) (*(pteptr) = pteval)
#define set_pte_atomic(pteptr, pteval) set_pte(pteptr,pteval)
#define set_pmd(pmdptr, pmdval) (*(pmdptr) = pmdval)
#define set_pgd(pgdptr, pgdval) (*(pgdptr) = pgdval)

根據(jù)線性地址得到高10位值, 也就是在目錄表中的索引
#define pgd_index(address) (((address)>>PGDIR_SHIFT) & (PTRS_PER_PGD-1))

根據(jù)頁描述符和屬性得到一個頁表項值
#define mk_pte(page, pgprot) pfn_pte(page_to_pfn(page), (pgprot))
3.2內(nèi)核頁表的初始化
內(nèi)核在進(jìn)入保護(hù)模式前, 還沒有啟用分頁功能, 在這之前內(nèi)核要先建立一個臨時內(nèi)核

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


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

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

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

    0371-60135900
    7*24小時客服服務(wù)熱線

     
     
    一本伊大人香蕉高清在线观看| 国产精品123| 九九精品久久| 四虎影视久久| 可以免费看污视频的网站| 日韩字幕在线| 成人高清护士在线播放| 色综合久久天天综合| 国产国语对白一级毛片| 亚洲精品中文字幕久久久久久| 精品在线免费播放| 久草免费在线观看| 久久精品免视看国产明星| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 欧美国产日韩一区二区三区| 国产精品自拍一区| 久久国产精品自由自在| 午夜欧美成人香蕉剧场| 国产一区免费观看| 国产一区二区精品| 亚洲精品永久一区| 欧美α片无限看在线观看免费| 国产国语对白一级毛片| 欧美激情一区二区三区在线播放 | 韩国三级香港三级日本三级| 人人干人人插| 国产亚洲免费观看| 色综合久久天天综合观看| 在线观看导航| 久久久成人网| 日本伦理黄色大片在线观看网站| 免费一级生活片| 成人免费观看视频| 欧美另类videosbestsex高清| 91麻豆精品国产自产在线| 成人免费观看网欧美片| 亚洲精品中文字幕久久久久久| 国产一区二区福利久久| 成人影视在线播放| 精品国产一区二区三区久| 欧美a级片免费看| 青青久久国产成人免费网站| 欧美国产日韩精品| 国产成人啪精品| 日韩中文字幕一区二区不卡| 一a一级片| 天天色色网| 国产视频一区二区在线观看| 国产欧美精品| 人人干人人插| 国产精品自拍在线| 精品视频在线看| 国产伦理精品| 日韩一级黄色大片| 日韩中文字幕在线播放| 欧美大片a一级毛片视频| 久久久久久久免费视频| 高清一级片| 亚洲女人国产香蕉久久精品| 国产a一级| 可以免费看污视频的网站| 美女免费毛片| 国产一区二区精品久| 91麻豆精品国产综合久久久| 99色视频在线观看| 九九精品久久久久久久久| 九九精品久久久久久久久| 日本特黄一级| 精品国产香蕉在线播出| 亚洲www美色| 精品国产一级毛片| 成人免费一级纶理片| 亚洲精品永久一区| 欧美激情一区二区三区在线| 欧美18性精品| 亚洲天堂免费| 成人a大片在线观看| 亚久久伊人精品青青草原2020| 亚飞与亚基在线观看| 国产一区二区精品久久91| 香蕉视频亚洲一级| 一级毛片视频在线观看| 国产成人精品综合在线| 亚洲精品永久一区| 成人a大片在线观看| 午夜在线观看视频免费 成人| 国产麻豆精品免费视频| 香蕉视频久久| 久久精品免视看国产明星 | 国产不卡在线观看视频| 欧美激情在线精品video| 久久成人综合网| 国产极品白嫩美女在线观看看| 日本伦理黄色大片在线观看网站| 天天色成人网| 日韩专区一区| 午夜激情视频在线播放| 国产不卡高清| 国产不卡高清| 欧美激情一区二区三区视频 | 99久久视频| 天堂网中文在线| 日韩专区亚洲综合久久| 久久福利影视| 欧美爱色| 国产a免费观看| a级毛片免费观看网站| 91麻豆精品国产自产在线| 香蕉视频久久| 亚洲第一色在线| 一级毛片看真人在线视频| 毛片的网站| 久久99中文字幕| 黄视频网站在线看| 日韩女人做爰大片| 一级毛片视频在线观看| 国产一区二区精品在线观看| 国产精品免费精品自在线观看| 久久国产一久久高清| 久久国产一区二区| 欧美a免费| 香蕉视频一级| 欧美大片a一级毛片视频| 久久精品免视看国产明星 | 黄视频网站免费看| 日日夜夜婷婷| 久久精品免视看国产明星 | 日韩免费片| 国产网站免费在线观看| 欧美另类videosbestsex久久| 国产网站免费| 四虎影视精品永久免费网站| 精品在线免费播放| 国产伦精品一区二区三区无广告| 黄色短视屏| 国产视频一区二区在线播放| 久久99这里只有精品国产| 色综合久久久久综合体桃花网| 99色视频| 亚洲精品中文一区不卡| 亚洲精品影院一区二区| 国产一区二区精品尤物| 国产一区二区福利久久| 99久久视频| 精品视频一区二区三区免费| 日本免费看视频| 国产麻豆精品免费视频| 亚洲 激情| 国产国产人免费视频成69堂| 91麻豆精品国产自产在线 | 国产美女在线观看| 亚洲精品永久一区| 国产一区免费观看| 欧美日本国产| 国产网站免费在线观看| 久久99青青久久99久久| 韩国毛片基地| 天天色色网| 可以免费看污视频的网站| 成人免费福利片在线观看| 国产亚洲免费观看| 九九精品久久久久久久久| 97视频免费在线观看| 日本伦理网站| 日韩在线观看免费| 高清一级做a爱过程不卡视频| 欧美a级成人淫片免费看| 香蕉视频久久| 国产亚洲免费观看| 日韩综合| 亚洲精品影院| 四虎影视精品永久免费网站| 亚洲第一色在线| 成人影视在线播放| 久久久久久久男人的天堂| 国产成人精品综合久久久| 欧美a级片视频| 天天色成人网| 99久久精品国产免费| a级毛片免费全部播放| 国产网站免费视频| 精品国产香蕉在线播出| 久久国产精品永久免费网站| 日韩中文字幕在线观看视频| 国产视频一区二区三区四区| 台湾美女古装一级毛片| 夜夜操网| 美女免费精品高清毛片在线视| 国产一区二区精品| 国产亚洲免费观看| 麻豆网站在线看| 成人影视在线播放| 一级女性全黄生活片免费| 欧美电影免费看大全| 99久久精品国产国产毛片| 精品视频在线观看免费| 九九久久国产精品| 久久精品店| 青草国产在线观看| 尤物视频网站在线|