第10章 内存管理.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 内存管理

虚拟空间管理 有关数据结构 mm_struct结构体 定义了每个进程的虚存用户区,首地址在 任务结构体中,定义在 /include/linux/schedul.h中。 虚拟空间管理 struct mm_struct { int count; pgd_t * pgd; unsigned long context; unsigned long start_code, end_code, start_data, end_data; unsigned long start_brk, brk, start_stack, start_mmap; unsigned long arg_start, arg_end, env_start, env_end; unsigned long rss, total_vm, locked_vm; unsigned long def_flags; struct vm_area_struct * mmap; struct vm_area_struct * mmap_avl; struct semaphore mmap_sem; }; 进程虚存区域 一个虚存区域是虚存空间中一个连续区域,每个虚拟区域用一个vm_area_struct结构体描述,定义在/include/linux/mm.h中。 虚拟空间管理 struct vm_area_struct { struct mm_struct * vm_mm; unsigned long vm_start; unsigned long vm_end; pgprot_t vm_page_prot; unsigned short vm_flags; short vm_avl_height; struct vm_area_struct * vm_avl_left; struct vm_area_struct * vm_avl_right; struct vm_area_struct * vm_next; struct vm_area_struct * vm_next_share; struct vm_area_struct * vm_prev_share; struct vm_operations_struct * vm_ops; unsigned long vm_offset; struct inode * vm_inode; unsigned long vm_pte; }; 说明: vm_mm指针指向进程的mm_struct结构体 vm_start和vm_end 虚拟区域的开始和终止地址。 vm_page_prot 虚存区域的页面的保护特性 vm_inode 若虚存区域映射的是磁盘文件或设备文件内容,则vm_inode指向这个文件的inode结构体,否则vm_inode为NULL。 虚拟空间管理 vm_flags指出了虚存区域的操作特性: VM_READ 虚存区域允许读取 VM_WRITE 虚存区域允许写入 VM_EXEC 虚存区域允许执行 VM_SHARED 虚存区域允许多个进程共享 VM_GROWSDOWN 虚存区域可以向下延伸 VM_GROWSUP 虚存区域可以向上延伸 VM_SHM 虚存区域是共享存储器的一部分 VM_LOCKED 虚存区域可以加锁 VM_STACK_FLAGS 虚存区域做为堆栈使用 虚拟空间管理 vm_offset 该区域的内容相对于文件起始位置的偏移量,或相对于共享内存首址的偏移量。 vm_next 所有vm_area_struct结构体链接成一个单向链表 vm_next指向下一个vm_area_struct结构体。链表首地址由mm_struct中成员项mmap指出。 vm_ops是指向vm_operations_struct结构体的指针,该结构体中包含着指向各种操作函数的指针。 虚拟空间管理 vm_avl_left 左指针指向相邻的低地址虚存区域 vm_avl_right 右指针指向相邻的高地址虚存区域 mmap_avl 表示进程AVL树的根 vm_avl_hight 表示AVL树的高度。 vm_next_share和vm_prev_share 把有关vm_area_struct结合成一个共享内存时使 用的双向链表。

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档