- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux存储管理机制分析.doc
Linux存储管理机制分析
北京工业大学软件学院
谭志远
G200518029
目录
摘要 2
关键字 2
1、数据结构表及变量说明 3
1.1、数据结构及变量表 3
1.2、数据结构描述 3
2、完成功能的主要函数表 4
3、页面失效处理(有效性失效)代码框图 4
4、程序段代码注释 6
5、Linux中存储器管理的相关概念及实现 41
5.1、伙伴算法 42
5.2、Slab 43
5.3、缓冲区 44
5.4、地址映射机制 44
5.5、进程的虚拟空间 45
5.6、页故障的产生 47
5.7、交换机制 47
5.8、Linux中新页框的分配方案 48
5.9、缓冲区高速缓存 48
5.10、刷新机制 49
6、收获和感想 49
7、参考文献 50
摘要
作者针对Linux 2.4.18版本中的memory.c文件进行了代码阅读和分析,通过阅读该文件进一步地理解了Linux中的存储管理机制,尤其是页面失效处理在Linux中的实现方式。作者把对源代码的分析和理解通过文字的形式在本文中整理、归纳出来。在文章中列出了一些与存储管理机制实现有关的数据结构和重要变量,了解这些数据结构和变量有助于对源代码的阅读和理解;除此以外,还给出了memory.c文件实现页面失效处理的主要函数。作者认为在开始分析源代码前对代码的执行流程有一个初步的理解是十分必要的,所在进入代码分析前以原理框图的显示介绍了代码的执行流程。最后,对Linux存储管理的相关概念和实现方案进行了讲述,并且谈了一下作者在对memory.c文件进行了代码阅读和分析后的一些收获和感想。
关键字
页目录 中间页目录 页表 地址映射 页面分配
1、数据结构表及变量说明
1.1、数据结构及变量表
主要数据结构或变量名 具体含义 struct page 描述一个物理页框 struct vm_area_struct 描述一个进程地址空间 vm_operations_struct 对进程地址空间的一些操作 struct free_area_struct 主要用于描述buddy算法中的一个空闲页框 long max_mapnr 是当前系统中物理内存的页面数目 long num_physpages 物理页面的数目 void *high_memory 高端内存的地址指针 struct page *highmem_start_page 高位内存的起始页指针 1.2、数据结构描述
typedef struct page {
struct list_head list; /* 指向链表中的下一页 */
struct address_space *mapping; /* 用来指定我们正在映射的索引节点(inode)*/
unsigned long index; /* 在映射表中的偏移. */
struct page *next_hash; /* 指向页高速缓存哈希表中下一个共享的页*/
atomic_t count; /* 引用这个页的个数 */
unsigned long flags; /* 页中各种不同的属性 */
struct list_head lru; /* 用在active list中 */
wait_queue_head_t wait; /* 等待这一页的页队列 */
struct page **pprev_hash; /* 与next_hash相对应 */
struct buffer_head * buffers; /* 把缓冲区映射到一个磁盘块 */
void *virtual; /* Kernel virtual address (NULL if
not kmapped, ie. highmem) */
struct zone_struct *zone; /* 页所在的内存管理区 */
} mem_map_t;
struct vm_area_struct {
struct mm_struct * vm_mm; /* 虚拟区域的参数 */
unsigned long vm_start; /* 虚拟区域的起始地址 */
unsigned long vm_end; /* 虚拟区域的结束地址 */
struct vm_area_struct *vm_next; /* 指向下一个vm_area_struct结构的指针 */
pgprot_t vm_page_prot; /* 虚拟区域的保护掩码 */
您可能关注的文档
最近下载
- 【消防史话】台湾地区消防历史沿革.doc VIP
- 2025年铁路职业技能竞赛(调车长赛项)参考试题库(含答案).docx
- 2023ESC糖尿病患者心血管疾病管理指南.pdf VIP
- 青岛海关缉私局辅警招聘考试真题2024.docx VIP
- 中国自由贸易试验区制度创新研究.docx VIP
- Al Brooks 价格行为交易区间篇.pdf VIP
- 鼓楼临床医学院消化科——病例 [ 典型病例分析 ] .pdf VIP
- 中国自由贸易试验区(港)制度创新十周年观察报告 2023.docx VIP
- 2025年人教部编版语文四年级上册进度安排表.docx VIP
- 鼓楼临床医学院消化科——上消化道出血 [ 典型病例分析 ] .pdf VIP
文档评论(0)