青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

T9的空間

You will never walk alone!

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  69 隨筆 :: 0 文章 :: 28 評論 :: 0 Trackbacks
From Unix某論壇,忘記名字了...但這段文字從宏觀上講清楚了Linux Memory的構(gòu)架。
1.
內(nèi)核初始化:

    *
內(nèi)核建立好內(nèi)核頁目錄頁表數(shù)據(jù)庫,假設(shè)物理內(nèi)存大小為len,則建立了[3G--3G+len]::[0--len]這樣的虛地址vaddr和物理地址paddr的線性對應(yīng)關(guān)系;
    *
內(nèi)核建立一個page數(shù)組,page數(shù)組和物理頁面系列完全是線性對應(yīng),page用來管理該物理頁面狀態(tài),每個物理頁面的虛地址保存在page->virtual中;
    *
內(nèi)核建立好一個free_list,將沒有使用的物理頁面對應(yīng)的page放入其中,已經(jīng)使用的就不用放入了;

2.
內(nèi)核模塊申請內(nèi)存vaddr = get_free_pages(mask,order)

    *
內(nèi)存管理模塊從free_list找到一個page,將page->virtual作為返回值,該返回值就是對應(yīng)物理頁面的虛地址;
    *
pagefree_list中脫離;
    *
模塊使用該虛擬地址操作對應(yīng)的物理內(nèi)存;

3.
內(nèi)核模塊使用vaddr,例如執(zhí)行指令mov(eax, vaddr)

    * CPU
獲得vaddr這個虛地址,利用建立好的頁目錄頁表數(shù)據(jù)庫,找到其對應(yīng)的物理內(nèi)存地址;
    *
eax的內(nèi)容寫入vaddr對應(yīng)的物理內(nèi)存地址內(nèi);

4.
內(nèi)核模塊釋放內(nèi)存free_pages(vaddr,order)

    *
依據(jù)vaddr找到對應(yīng)的page
    *
將該page加入到free_list中;

5.
用戶進(jìn)程申請內(nèi)存vaddr = malloc(size)

    *
內(nèi)存管理模塊從用戶進(jìn)程內(nèi)存空間(0--3G)中找到一塊還沒使用的空間vm_area_struct(start--end)
    *
隨后將其插入到task->mm->mmap鏈表中;

6.
用戶進(jìn)程寫入vaddr(0-3G),例如執(zhí)行指令mov(eax, vaddr)

    * CPU
獲得vaddr這個虛地址,該虛地址應(yīng)該已經(jīng)由glibc庫設(shè)置好了,一定在3G一下的某個區(qū)域,根據(jù)CR3寄存器指向的current->pgd查當(dāng)前進(jìn)程的頁目錄頁表數(shù)據(jù)庫,發(fā)現(xiàn)該vaddr對應(yīng)的頁目錄表項為0,故產(chǎn)生異常;
    *
在異常處理中,發(fā)現(xiàn)該vaddr對應(yīng)的vm_area_struct已經(jīng)存在,為vaddr對應(yīng)的頁目錄表項分配一個頁表;
    *
隨后從free_list找到一個page,將該page對應(yīng)的物理頁面物理首地址賦給vaddr對應(yīng)的頁表表項,很明顯,此時的vaddrpaddr不是線性對應(yīng)關(guān)系了;
    *
pagefree_list中脫離;
    *
異常處理返回;
    * CPU
重新執(zhí)行剛剛發(fā)生異常的指令mov(eax, vaddr)
    * CPU
獲得vaddr這個虛地址,根據(jù)CR3寄存器指向的current->pgd,利用建立好的頁目錄頁表數(shù)據(jù)庫,找到其對應(yīng)的物理內(nèi)存地址;
    *
eax的內(nèi)容寫入vaddr對應(yīng)的物理內(nèi)存地址內(nèi);  

7.
用戶進(jìn)程釋放內(nèi)存vaddrfree(vaddr)

    *
找到該vaddr所在的vm_area_struct
    *
找到vm_area_struct:start--end對應(yīng)的所有頁目錄頁表項,清空對應(yīng)的所有頁表項;
    *
釋放這些頁表項指向物理頁面所對應(yīng)的page,并將這些page加入到free_list隊列中;
    *
有必要還會清空一些頁目錄表項,并釋放這些頁目錄表項指向的頁表;
    *
task->mm->mmap鏈中刪除該vm_area_struct并釋放掉;

綜合說明:

    *
可用物理內(nèi)存就是free_list中各page對應(yīng)的物理內(nèi)存;
    *
頁目錄頁表數(shù)據(jù)庫的主要目的是為CPU訪問物理內(nèi)存時轉(zhuǎn)換vaddr-->paddr使用,分配以及釋放內(nèi)存時不會用到,但是需要內(nèi)核內(nèi)存管理系統(tǒng)在合適時機(jī)為CPU建立好該庫;
    *
對于用戶進(jìn)程在6中獲得的物理頁面,有兩個頁表項對應(yīng),一個就是內(nèi)核頁目錄頁表數(shù)據(jù)庫的某個pte[i ],一個就是當(dāng)前進(jìn)程內(nèi)核頁目錄頁表數(shù)據(jù)庫的某個 pte[j],但是只有一個page和其對應(yīng)。如果此時調(diào)度到其他進(jìn)程,其他進(jìn)程申請并訪問某個內(nèi)存,則不會涉及到該物理頁面,因為其分配時首先要從 free_list中找一個page,而該物理頁面對應(yīng)的page已經(jīng)從free_list中脫離出來了,因此不存在該物理頁面被其他進(jìn)程改寫操作的情況。內(nèi)核中通過get_free_pages等方式獲取內(nèi)存時,也不會涉及到該物理頁面,原理同前所述。
posted on 2013-12-09 17:42 Torres 閱讀(487) 評論(0)  編輯 收藏 引用 所屬分類: Useful information

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲精品免费在线播放| 在线亚洲免费视频| 夜久久久久久| 亚洲经典在线看| 怡红院精品视频| 在线成人黄色| 亚洲精品一级| 亚洲性人人天天夜夜摸| 亚洲一区精品视频| 久久一区二区三区四区| 亚洲三级免费| 久久综合九色九九| 午夜精品久久久久久99热| 日韩一级精品视频在线观看| 亚洲日本va午夜在线影院| 日韩写真在线| 午夜精品久久久久久99热软件| 亚洲一区二区三区免费观看 | 久久夜色精品| 欧美日韩免费看| 国产欧美1区2区3区| 狠狠色丁香婷婷综合影院| 亚洲精品乱码久久久久久蜜桃91 | 久久久九九九九| 欧美黄色日本| 亚洲永久精品国产| 女人天堂亚洲aⅴ在线观看| 欧美午夜片欧美片在线观看| 国产综合久久久久久鬼色| 亚洲另类一区二区| 久久国产精品一区二区| 亚洲国产精品悠悠久久琪琪| 久久只有精品| 在线视频一区观看| 免费在线成人av| 国产精品亚洲精品| 99伊人成综合| 亚洲电影在线播放| 久久精品国产精品亚洲精品| 欧美日韩中文另类| 亚洲欧洲视频在线| 久久美女艺术照精彩视频福利播放| 亚洲激情图片小说视频| 小处雏高清一区二区三区| 欧美日韩国产小视频| 亚洲国产成人久久| 久久久夜色精品亚洲| 久久影院亚洲| 亚洲一区二区三区精品在线观看 | 久久精品免费电影| 亚洲区免费影片| 久久激情视频久久| 国产欧美在线视频| 午夜精品一区二区三区电影天堂 | 久久综合国产精品台湾中文娱乐网| 亚洲精品字幕| 欧美黄污视频| 亚洲美女诱惑| 亚洲国产精品成人精品| 性做久久久久久久久| 亚洲高清免费在线| 性久久久久久| 国产午夜精品久久| 欧美一区二区三区另类| 一本久道综合久久精品| 欧美日韩在线播放| 在线一区观看| 亚洲一区二区高清视频| 国产麻豆一精品一av一免费| 性做久久久久久| 久久九九99| 亚洲高清视频的网址| 欧美成人r级一区二区三区| 久久精品成人| 亚洲国产欧美一区| 亚洲精品少妇| 国产精品久久久久久久久免费| 午夜视频在线观看一区二区| 亚洲欧美一区二区三区久久| 性色av香蕉一区二区| 亚洲在线一区二区| 国产精品亚洲网站| 久久久成人精品| 久久综合九色99| 亚洲视频免费看| 午夜精品久久久久久久99樱桃| 激情久久久久久| 亚洲国产精品久久久久婷婷老年 | 亚洲一区二区精品在线| 亚洲一区二区三区中文字幕| 国产日韩欧美91| 欧美福利视频网站| 欧美午夜电影在线观看| 久久免费99精品久久久久久| 欧美.www| 午夜精品久久久久久久99热浪潮| 欧美激情视频一区二区三区免费| 亚洲欧洲在线免费| 欧美中文字幕视频| 久久精品国产999大香线蕉| 亚洲国产另类精品专区| a4yy欧美一区二区三区| 狠狠色综合日日| 亚洲毛片一区二区| 国内精品久久久久影院 日本资源| 欧美大片免费| 国产精品性做久久久久久| 欧美承认网站| 国产精品一区三区| 91久久久国产精品| 国产在线播精品第三| 一本色道久久99精品综合| 国产又爽又黄的激情精品视频| 亚洲精品少妇网址| 久久久噜噜噜久久久| 免费成人黄色| 久久久久国产精品一区三寸 | 久久天天躁狠狠躁夜夜爽蜜月| 欧美不卡一区| 久久综合电影| 国产女优一区| 亚洲最新视频在线播放| 亚洲欧洲日产国产网站| 久久影视精品| 欧美91福利在线观看| 国产午夜精品一区理论片飘花| 中文欧美在线视频| 亚洲香蕉网站| 国产精品黄视频| 国产精品99久久99久久久二8| 亚洲精品乱码久久久久久日本蜜臀 | 欧美国产日韩一二三区| 亚洲在线播放电影| 久久久久久久久久久久久女国产乱 | 欧美国产国产综合| 精品91在线| 久久精品盗摄| 久久青青草原一区二区| 国产日产欧美精品| 午夜精品一区二区三区四区| 亚洲欧美亚洲| 国产精品免费区二区三区观看| 亚洲激情一区二区三区| 尹人成人综合网| 久久久视频精品| 乱中年女人伦av一区二区| 欧美日韩一区二区国产| 欧美久久电影| 亚洲欧洲精品一区二区精品久久久 | 欧美三级网址| 亚洲在线不卡| 久久人体大胆视频| 在线日韩欧美视频| 欧美高清自拍一区| 亚洲裸体在线观看| 午夜精品久久久久影视 | 久久综合中文| 亚洲福利在线观看| 日韩亚洲精品电影| 国产精品剧情在线亚洲| 欧美诱惑福利视频| 欧美国产视频一区二区| 亚洲国产成人午夜在线一区| 亚洲无人区一区| 亚洲美女av在线播放| 亚洲图片在区色| 国产欧美在线| 欧美不卡视频一区| 一区二区三区欧美亚洲| 欧美日韩精品中文字幕| 亚洲桃色在线一区| 免费视频一区二区三区在线观看| 亚洲三级免费| 国产欧美在线播放| 欧美精品免费播放| 亚洲午夜视频| 欧美大片免费观看在线观看网站推荐| 在线一区二区视频| 在线观看不卡| 国产精品美女在线| 你懂的国产精品永久在线| 在线一区视频| 欧美1区3d| 欧美一级午夜免费电影| 亚洲黄页视频免费观看| 国产精品永久免费| 午夜精品国产| 久久久www免费人成黑人精品| 欧美亚洲视频在线观看| 免费在线成人av| 亚洲一区二区三| 亚洲国产另类久久精品| 国产精品午夜视频| 欧美日韩另类视频| 女人色偷偷aa久久天堂| 久久久999精品视频| 中日韩高清电影网| 日韩一本二本av| 亚洲国产日韩一区| 蜜桃久久精品一区二区|