小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

關(guān)于Linux內(nèi)存管理的一些問題

 昵稱3397319 2011-01-31

關(guān)于Linux內(nèi)存管理的一些問題

[日期:2007-07-03] 來(lái)源:Linux公社  作者:Linuxidc
  這段時(shí)間被linux的內(nèi)存管理弄得有點(diǎn)頭暈,今天終于“頓悟”。

  至于一些基礎(chǔ)性的知識(shí)就不說(shuō)了,很多書都有,說(shuō)得很精彩。這里主要談?wù)剝?nèi)核對(duì)于內(nèi)存管理的一些比較沒人提到的部分。

  我們都知道,內(nèi)核把線性地址(大多數(shù)情況也叫虛擬地址)分為三個(gè)部分:物理內(nèi)存映射區(qū),VMALLOC映射區(qū)以及固定映射地址區(qū)。這里主要討論前兩種。

所謂的物理內(nèi)存映射區(qū)是指與物理內(nèi)存一一映射的區(qū)域。舉個(gè)例子來(lái)說(shuō),如果系統(tǒng)有物理內(nèi)存512M,那么從0xc0000000至 0xc00000000+512M的線性地址就屬于物理內(nèi)存映射區(qū)。這塊線性地址在系統(tǒng)初始化時(shí)就與物理內(nèi)存建立起一一對(duì)應(yīng)的關(guān)系。這里的一一映射是指物 理地址和線性地址就差一個(gè)偏移量0xc0000000,函數(shù)__pa()就是直接把線性地址減去0xc0000000得到物理地址。所以該函數(shù)應(yīng)用范圍也 就局限于物理地址映射區(qū)。對(duì)另兩個(gè)地址區(qū)進(jìn)行__pa()是錯(cuò)誤的。道理很簡(jiǎn)單,物理地址都沒那么大。

  VMALLOC映射區(qū)的特點(diǎn)是 連續(xù)的線性地址,其物理地址不一定連續(xù)。這種映射特點(diǎn)和用戶地址空間的映射方式是一樣的。而前面講的物理內(nèi)存映射區(qū),線性地址和物理地址顯然都是連續(xù)的。 當(dāng)然了,最后的映射肯定是指線性地址和物理地址之間的映射。所以這部分的線性地址最終也需映射到物理內(nèi)存中。這就會(huì)和物理內(nèi)存映射區(qū)產(chǎn)生沖突:因?yàn)樗械? 物理內(nèi)存在物理內(nèi)存映射區(qū)已經(jīng)有了一個(gè)線性地址了。但是我們知道,物理內(nèi)存并不是每時(shí)每刻都在使用的,也就是說(shuō)雖然它已經(jīng)映射了,但是還沒有人使用它。那 么我們可以在VMALLOC映射區(qū)中先映射到那些沒使用的內(nèi)存并鎖住。這樣這些內(nèi)存就不會(huì)再被分配作為其他用途。所以雖然映射有沖突,但是沒有兩個(gè)線性地 址在同時(shí)使用。

  因?yàn)閂MALLOC映射區(qū)的線性地址和物理地址沒有固定的映射關(guān)系,我們只能通過查找頁(yè)表來(lái)找到對(duì)應(yīng)的物理頁(yè)框。值得 一提的是,物理頁(yè)框(struct page結(jié)構(gòu)體)的vitual字段仍然存放的是物理內(nèi)存映射區(qū)的線性地址,也就是說(shuō)如果對(duì)該物理地址進(jìn)行__page_to_vir()運(yùn)算后,所得的 線性地址不是VMALLOC映射區(qū)的線性地址。

  以上就是我對(duì)linux內(nèi)存管理的一些理解。歡迎大家討論

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多