LINUX存储管理讲述.ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 LINUX存储管理 LINUX的分页管理机制 LINUX的地址划分 每一个用户进程都可以访问4GB的线性虚拟内存空间。 从0到3GB的虚拟内存地址是用户空间,用户进程可以直接对其进行访问。 从3GB到4GB的虚拟内存地址为核心态空间,存放仅供核心态访问的代码和数据,用户态进程不可访问。 所有进程从3GB到4GB的虚拟空间都是一样的,有同样的页目录项,同样的页表,对应到同样的物理内存段。LINUX以此方式让内核态进程共享代码段和数据段。 内核态虚拟空间从3GB到3GB+4M的一段(也就是进程页目录第768项所管辖的范围),被映射到物理空间0到4M段。因此,进程处于核心态时,只要通过访问虚拟空间3GB到3GB+4M段,偏移地址0到4M,即访问了物理空间0到4M段。 虚拟地址转换 mm_struct (include/linux/sched.h) 203 struct mm_struct { 204 struct vm_area_struct * mmap; /* list of VMAs */ 205 struct vm_area_struct * mmap_avl; /* tree of VMAs */ 206 struct vm_area_struct * mmap_cache; /* last find_vma result */ 207 pgd_t * pgd; 208 atomic_t mm_users; /* How many users with user space? */ 209 atomic_t mm_count; /* How many 进程/线程 refer to struct mm_struct (users count as 1) */ 210 int map_count; /* number of VMAs */ 211 struct semaphore mmap_sem; /* 对mmap操作的信号量 */ 212 spinlock_t page_table_lock; 214 struct list_head mmlist; /* List of all active mms */ 216 unsigned long start_code, end_code, start_data, end_data; 217 unsigned long start_brk, brk, start_stack; 218 unsigned long arg_start, arg_end, env_start, env_end; 219 unsigned long rss, total_vm, locked_vm; 220 unsigned long def_flags; 221 unsigned long cpu_vm_mask; 222 unsigned long swap_cnt; /* number of pages to swap on next pass */ 223 unsigned long swap_address; 226 mm_context_t context; /* Architecture-specific MM context */ 227 }; PCB对内存的控制(之一) struct mm_struct结构的成员 pgd_t * pgd; 表示进程页目录的起始地址。 PCB对内存的控制 第二章 LINUX存储管理 虚存段(vma)的组织和管理 (克服页表中空表项过烂问题) vma段 (vitual memory area) 一个vma段是某个进程的一段连续的虚存空间; 在这段虚存里的所有单元拥有相同的特征。例如:属于同一进程,相同的访问权限,同时被锁定(locked),同时受保护(protected),等等。 vm_area_struct (include/linux/mm.h) 41 struct vm_area_struct { 42 struct mm_struct * vm_mm; /* VM are

您可能关注的文档

文档评论(0)

整理王 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档