红联Linux门户
Linux帮助

Linux memory management----(进程虚存空间的管理)

发布时间:2006-10-12 16:53:23来源:红联作者:qqlucky
Linux memory management----(进程虚存空间的管理)
1.内核空间和用户空间
进程运行时能访问的存储空间只是它的虚拟内存空间。对当前该进程而言只有属于它的虚拟内存是可见的。
在进程的虚拟内存包含着进程本身的程序代码和数据。
进程在运行中还必须得到操作系统的支持。进程的虚拟内存中还包含着操作系统内核。
Linux把进程的虚拟内存分成两部分,内核区和用户区。
操作系统内核的代码和数据等被映射到内核区。
进程的可执行映像(代码和数据)映射到虚拟内存的用户区。
进程虚拟内存的内核区的访问权限设置为0级,用户区为3级。
内核访问虚存的权限为0级,而进程的访问权限为3级
(1)Linux的用户地址空间分布
进程描述符中的struct mm_struct *mm用来管理已分配给该进程的线性地址空间
每一个连续的线性地址区间由一个vm_area_struct管理,简称vma
mm中的vma按地址排序由线性链表连接起来,当vma的数量相当大的时候启用avl树,与线性链表同时管理vma以提高访问效率
随着vma的动态改变,vma之间存在归并和拆分等操作
分配vma并不立即分配页帧。
(2)Linux的内核地址空间分布
线性地址0xC0000000
物理映射区最大为896M,如果实际物理内存不足896M,则该区与实际物理内存大小相等
两个隔离区的作用是防止越界造成的致命损害
Linux的存储管理主要是管理进程虚拟内存的用户区。
进程虚拟内存的用户区分成代码段、数据段、堆栈
以及进程运行的环境变量、参数传递区域等。
2.进程的虚存区域
一个虚存区域是虚存空间中一个连续的区域,在这个区域中的信息具有相同的操作和访问特性。每个虚拟区域用一个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;
};
(1)vm_mm指针指向进程的mm_struct结构体。
(2)vm_start和vm_end 虚拟区域的开始和终止地址。
(3)vm_flags指出了虚存区域的操作特性:
VM_READ 虚存区域允许读取
VM_WRITE 虚存区域允许写入
VM_EXEC 虚存区域允许执行
VM_SHARED 虚存区域允许多个进程共享
VM_GROWSDOWN 虚存区域可以向下延伸
VM_GROWSUP 虚存区域可以向上延伸
VM_SHM 虚存区域是共享存储器的一部分
VM_LOCKED 虚存区域可以加锁
VM_STACK_FLAGS 虚存区域做为堆栈使用
(4)vm_page_prot 虚存区域的页面的保护特性。
(5)若虚存区域映射的是磁盘文件或设备文件的的内容,则vm_inode指向这个文件的inode结构体,否则vm_inode为NULL。
(6)vm_offset是该区域的内容相对于文件起始位置的偏移量,或相对于共享内存首址的偏移量。
(7)所有vm_area_struct结构体链接成一个单向链表,vm_next指向下一个vm_area_struct结构体。链表的首地址由mm_struct中成员项mmap指出。
(8)vm_ops是指向vm_operations_struct结构体的指针。该结构体中包含着指向各种操作的函数的指针。
(9)所有vm_area_struct结构体组成一个AVL树。
(10)vm_next_share和vm_prev_share,把有关的vm_area_struct
结合成一个共享内存时使用的双向链表。
系统为每个进程提供了4GB的虚拟内存空间。各个进程的虚拟内存彼此独立。
文章评论

共有 0 条评论