摘要: 内核提供了各种函数来操作进程的虚拟内存区域。在建立或删除映射时,创建和删除区域(以及查找用于新区域的适当的内存位置)是所需要的标准操作。如图4-10所示。 将虚拟地址关联到区域 通过虚拟地址,find_vma可以查找用户地址空间中结束地址在给定地址之后的第一个区域,即满足addr < vm_area 阅读全文
posted @ 2022-03-24 21:44 while(true);; 阅读(62) 评论(0) 推荐(0) 编辑
摘要: struct mm_struct提供了进程在内存中布局的所有必要信息。另外,它还包括下列成员,用于管理用户进程在虚拟地址空间中的所有内存区域。(其中管理虚拟地址空间所有内存区域) <mm_types.h> struct mm_struct { struct vm_area_struct * mmap 阅读全文
posted @ 2022-03-24 20:09 while(true);; 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 由于所有用户进程总的虚拟地址空间比可用的物理内存大得多,因此只有最常用的部分才与物理页帧关联。我们考察一下通过文本编辑器操作文件的情况。通常用户只关注文件结尾处,因此尽管整个文件都映射到内存中,实际上只使用了几页来存储文件末尾的数据。至于文件开始处的数据,内核只需要在地址空间保存相关信息,如数据在磁 阅读全文
posted @ 2022-03-24 18:00 while(true);; 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 虚拟地址空间中包含了若干区域。其分布方式是特定于体系结构的,但所有方法都有下列共同成分。  当前运行代码的二进制代码。该代码通常称之为text,所处的虚拟内存区域称之为text段。  程序使用的动态库的代码。  存储全局变量和动态产生的数据的堆。  用于保存局部变量和实现函数/过程调用的栈。 阅读全文
posted @ 2022-03-24 17:49 while(true);; 阅读(164) 评论(0) 推荐(0) 编辑