2.5 内存映射:
当一个映像被执行时,该可执行映像的内容必须被放到进程的虚拟地址空间。对于可执
行映像链接到的共享库也是如此。可执行文件并非真正地被读到物理内存,而只是链接到进
程的虚拟内存。然后,随着运行的应用对程序部分的引用,该映像被从可执行映像读到内存。
这种将一个映像链到一个进程的虚拟地址空间的技术也被称为内存映射(memery mapping)。
每个进程的虚拟内存都通过一个m m _ s t r u c t数据结构表示。它包含当前正执行的映像(如
b a s h )的信息以及一些指向v m _ a r e a _ s t r u c t数据结构的指针。每个v m _ a r e a _ s t r u c t数据结构描述
虚拟内存区的开始和结束、进程对该内存的访问权以及对该内存的一组操作 .
当当一个可执行映像被映射到进程虚拟地址空间时,一组v m _ a r e a _ s t r n c t数据结构将被产生。
每个v m _ a r e a _ s t r u c t数据结构表示可执行映像的一部分;是可执行代码,或是初始化的数据(变
量),以及未初始化数据等。L i n u x支持一些标准虚拟内存操作并且当v m _ a r e a _ s t r u c t数据结构
被创建时,相应的虚拟内存操作集将和它们关联起来。