日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

Linux之内存描述符mm_struct

發(fā)布時(shí)間:2025/5/22 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux之内存描述符mm_struct 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Linux對(duì)于內(nèi)存的管理涉及到非常多的方面,這篇文章首先從對(duì)進(jìn)程虛擬地址空間的管理說(shuō)起。(所依據(jù)的代碼是2.6.32.60)

無(wú)論是內(nèi)核線程還是用戶進(jìn)程,對(duì)于內(nèi)核來(lái)說(shuō),無(wú)非都是task_struct這個(gè)數(shù)據(jù)結(jié)構(gòu)的一個(gè)實(shí)例而已,task_struct被稱(chēng)為進(jìn)程描述符(process descriptor),因?yàn)樗涗浟诉@個(gè)進(jìn)程所有的context。其中有一個(gè)被稱(chēng)為'內(nèi)存描述符‘(memory descriptor)的數(shù)據(jù)結(jié)構(gòu)mm_struct,抽象并描述了Linux視角下管理進(jìn)程地址空間的所有信息。 mm_struct定義在include/linux/mm_types.h中,其中的域抽象了進(jìn)程的地址空間,如下圖所示:

?

1 struct mm_struct { 2 struct vm_area_struct * mmap; //指向虛擬區(qū)間(VMA)的鏈表 3 struct rb_root mm_rb; //指向線性區(qū)對(duì)象紅黑樹(shù)的根 4 struct vm_area_struct * mmap_cache; //指向最近找到的虛擬區(qū)間 5 unsigned long(*get_unmapped_area) (struct file *filp, 6 unsigned long addr, unsigned long len, 7 unsigned long pgoff, unsigned long flags);//在進(jìn)程地址空間中搜索有效線性地址區(qū) 8 unsigned long(*get_unmapped_exec_area) (struct file *filp, 9 unsigned long addr, unsigned long len, 10 unsigned long pgoff, unsigned long flags); 11 void(*unmap_area) (struct mm_struct *mm, unsigned long addr);//釋放線性地址區(qū)間時(shí)調(diào)用的方法 12 unsigned long mmap_base; /* base of mmap area */ 13 unsigned long task_size; /* size of task vm space */ 14 15 unsigned long cached_hole_size; 16 unsigned long free_area_cache; //內(nèi)核從這個(gè)地址開(kāi)始搜索進(jìn)程地址空間中線性地址的空閑區(qū)域 17 pgd_t * pgd; //指向頁(yè)全局目錄 18 atomic_t mm_users; //次使用計(jì)數(shù)器,使用這塊空間的個(gè)數(shù) 19 atomic_t mm_count; //主使用計(jì)數(shù)器 20 int map_count; //線性的個(gè)數(shù) 21 struct rw_semaphore mmap_sem; //線性區(qū)的讀/寫(xiě)信號(hào)量 22 spinlock_t page_table_lock; //線性區(qū)的自旋鎖和頁(yè)表的自旋鎖 23 24 struct list_head mmlist; //指向內(nèi)存描述符鏈表中的相鄰元素 25 26 /* Special counters, in some configurations protected by the 27 * page_table_lock, in other configurations by being atomic. 28 */ 29 mm_counter_t _file_rss; //mm_counter_t代表的類(lèi)型實(shí)際是typedef atomic_long_t 30 mm_counter_t _anon_rss; 31 mm_counter_t _swap_usage; 32 33 unsigned long hiwater_rss; //進(jìn)程所擁有的最大頁(yè)框數(shù) 34 unsigned long hiwater_vm; //進(jìn)程線性區(qū)中最大頁(yè)數(shù) 35 36 unsigned long total_vm, locked_vm, shared_vm, exec_vm; 37 //total_vm 進(jìn)程地址空間的大小(頁(yè)數(shù)) 38 //locked_vm 鎖住而不能換出的頁(yè)的個(gè)數(shù) 39 //shared_vm 共享文件內(nèi)存映射中的頁(yè)數(shù) 40 41 unsigned long stack_vm, reserved_vm, def_flags, nr_ptes; 42 //stack_vm 用戶堆棧中的頁(yè)數(shù) 43 //reserved_vm 在保留區(qū)中的頁(yè)數(shù)或者在特殊線性區(qū)中的頁(yè)數(shù) 44 //def_flags 線性區(qū)默認(rèn)的訪問(wèn)標(biāo)志 45 //nr_ptes 進(jìn)程的頁(yè)表數(shù) 46 47 unsigned long start_code, end_code, start_data, end_data; 48 //start_code 可執(zhí)行代碼的起始地址 49 //end_code 可執(zhí)行代碼的最后地址 50 //start_data已初始化數(shù)據(jù)的起始地址 51 // end_data已初始化數(shù)據(jù)的最后地址 52 53 unsigned long start_brk, brk, start_stack; 54 //start_stack堆的起始位置 55 //brk堆的當(dāng)前的最后地址 56 //用戶堆棧的起始地址 57 58 unsigned long arg_start, arg_end, env_start, env_end; 59 //arg_start 命令行參數(shù)的起始地址 60 //arg_end命令行參數(shù)的起始地址 61 //env_start環(huán)境變量的起始地址 62 //env_end環(huán)境變量的最后地址 63 64 unsigned long saved_auxv[AT_VECTOR_SIZE]; /* for /proc/PID/auxv */ 65 66 struct linux_binfmt *binfmt; 67 68 cpumask_t cpu_vm_mask; //用于惰性TLB交換的位掩碼 69 /* Architecture-specific MM context */ 70 mm_context_t context; //指向有關(guān)特定結(jié)構(gòu)體系信息的表 71 72 73 unsigned int faultstamp; 74 unsigned int token_priority; 75 unsigned int last_interval; 76 77 unsigned long flags; /* Must use atomic bitops to access the bits */ 78 79 struct core_state *core_state; /* coredumping support */ 80 #ifdef CONFIG_AIO 81 spinlock_t ioctx_lock; //用于保護(hù)異步I/O上下文鏈表的鎖 82 struct hlist_head ioctx_list;//異步I/O上下文 83 #endif 84 #ifdef CONFIG_MM_OWNER 85 struct task_struct *owner; 86 #endif 87 88 #ifdef CONFIG_PROC_FS 89 unsigned long num_exe_file_vmas; 90 #endif 91 #ifdef CONFIG_MMU_NOTIFIER 92 struct mmu_notifier_mm *mmu_notifier_mm; 93 #endif 94 #ifdef CONFIG_TRANSPARENT_HUGEPAGE 95 pgtable_t pmd_huge_pte; /* protected by page_table_lock */ 96 #endif 97 #ifdef __GENKSYMS__ 98 unsigned long rh_reserved[2]; 99 #else 100 //有多少任務(wù)分享這個(gè)mm OOM_DISABLE 101 union { 102 unsigned long rh_reserved_aux; 103 atomic_t oom_disable_count; 104 }; 105 106 /* base of lib map area (ASCII armour) */ 107 unsigned long shlib_base; 108 #endif 109 };

?

?

?Reference:

http://www.cnblogs.com/Rofael/archive/2013/04/13/3019153.html

http://blog.csdn.net/persistence_s/article/details/70179419

轉(zhuǎn)載于:https://www.cnblogs.com/linhaostudy/p/7484587.html

總結(jié)

以上是生活随笔為你收集整理的Linux之内存描述符mm_struct的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美黑人粗大 | 精品乱子伦一区二区 | 亚洲成在线 | 国产中文字幕91 | 91天堂在线观看 | 国产影视一区二区三区 | 黄色片在哪里看 | 亚洲国产欧美在线观看 | 成年人免费看毛片 | 欧美精品一区二区久久婷婷 | 一级黄色在线播放 | 美女交配| 天堂俺去俺来也www久久婷婷 | 美女污软件 | 成人性生生活性生交3 | 亚洲国产精品免费在线观看 | 亚洲人精品 | 1769国产精品视频 | 国产高清二区 | 2024av视频 | 人与动物2免费观看完整版电影高清 | 亚洲精品国产一区二区 | 波多野结衣中文一区 | 国产盗摄一区二区三区 | 99久久久无码国产精品免费 | 艳母日本动漫在线观看 | 日本亚洲一区二区三区 | aaaaa毛片| 91国内 | 污片视频在线观看 | 波多野结衣av中文字幕 | 哪个网站可以看毛片 | 同心兄弟| 特级a级片 | 国产精品久久久久久久久免费 | 欧美乱欲视频 | 精品无码一区二区三区 | 久久精品国产精品 | 在线中文字幕一区二区 | 黄色成人在线播放 | 国产精品久久久久久免费播放 | 添女人荫蒂视频 | 亚州av综合色区无码一区 | 99有精品| 美女又爽又黄免费视频 | 国产片网址 | 国产不卡a | 亚洲一区高清 | 日韩一区二区三区四区五区 | 免费午夜视频 | 欧美综合网 | 蜜桃av成人永久免费 | 午夜在线免费观看视频 | 夜操操 | 人人草人人 | 黄色av电影在线观看 | 日本www高清视频 | 亚洲天堂手机在线 | 亚洲午夜视频在线观看 | 开心激情综合 | 日韩一区二区三区在线看 | 日本乱论视频 | 日本肉体xxxx裸体137大胆图 | 网站在线观看你懂的 | 91精品国产综合久久香蕉922 | 91午夜影院| 色人人 | 69视频网| 欧美日本国产 | 一级特黄毛片 | 在线观看av网页 | av无码一区二区三区 | 饥渴放荡受np公车奶牛 | 国模大胆一区二区三区 | 在线观看精品国产 | 国产高清片 | 99久久精品免费 | 武侠古典av | 少妇被又大又粗又爽毛片久久黑人 | 九九热视频在线免费观看 | 日日日操操操 | 欧美大色网 | 性猛交╳xxx乱大交 偷偷操不一样的久久 | 久久久电影| 日韩欧美网址 | 午夜大片在线观看 | 国产另类视频 | 久久国产免费 | www.av在线| 激情视频区 | 亚洲欧美中文字幕 | 黄色片在线免费观看视频 | 国产无遮挡免费观看视频网站 | 日韩av中文在线观看 | 国产吞精囗交免费视频网站 | 国产新婚疯狂做爰视频 | 日本精品视频一区 | a级性生活视频 | 色婷婷av久久久久久久 |