1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      Linux系統下內存申請應用的方法原理總結

      更新時間: 2008-06-13 15:25:22來源: 粵嵌教育瀏覽量:1020

        1. 地址空間的管理

        物理地址都是有內核管理的, node-->zone-->mem_map-->page, 所有的物理頁面都在mem_map數組中的頁幀對應, 然后不同的page有分為DMA,normal,highmem三個zone。

        內核線性地址空間, 實際上只是低端內存才有線性地址,0---896MB部分。

        內核虛擬地址, 低端內存的虛擬地址與線性地址是一樣的。 高端內存只有在映射了以后才有虛擬地址

        用戶空間地址, tast_struct ---> mmap --> mm_struct ---> vm_area_struct

        2.內存的申請或使用

        物理內存的分配, 在內核中終都要調用__alloc_pages().它是核心的分配函數,申請大小不超過2的MAX_ORDER次冪,在現在好像定義為4MB。

        線性地址, kmalloc和get_free_pages,線性地址, 對應的物理內存就是低端內存,kmalloc是基于slab的分配技術, 不能超過128KB。

        虛擬地址, vmalloc申請, 他只是在內核中建立類似與用戶空間的vm_area的一個虛擬內存空間到vmlist中, 終的物理內存分配還是基于缺頁的。

        用戶空間的虛擬內存, malloc之類的, 終在內核中都是do_map()和do_brk()。實際上也只是建立了一塊虛擬空間,終的物理內存還是在缺頁異常時分配的。

        3. 內存的交換問題

        在page結構和用戶層的vm_area_struct結構中, 都包含locked和reserved標志。通過合適的途徑設置這些標志, 可以是頁面鎖存在物理內存中, 不被交換出去。

        4. 設備內存可以通過ioremap映射到內核虛擬地址空間, 也可以通過mmap方法映射到用戶空間。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲无线观看国产精品 | 制服.丝袜.亚洲.中文.综合 | 日本熟女中文字幕DVD | 中文精品亚洲二区 | 中文字幕久久少妇 | 亚洲欧美日韩在线综合专区 |