国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

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

2024-06-28 13:04:28
字體:
來源:轉載
供稿:網友
 

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方法映射到用戶空間。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 余江县| 万年县| 澜沧| 湖北省| 江城| 喀什市| 法库县| 彩票| 凉山| 靖远县| 荆州市| 沅江市| 夏河县| 惠州市| 金山区| 璧山县| 垫江县| 宾川县| 钟祥市| 古交市| 大埔区| 新丰县| 醴陵市| 来凤县| 无锡市| 枞阳县| 阳谷县| 通渭县| 梁山县| 伊川县| 永兴县| 剑河县| 江门市| 渝北区| 广州市| 济阳县| 淮南市| 象州县| 台南市| 台南市| 九寨沟县|