- 论坛徽章:
- 3
|
回复 1# tc1989tc
高端内存: 指的是物理内存中不能被virtual address直接映射的物理内存部分. 也就是说不能直接通过virtual address来获得physical address.
低端内存: 指的是物理内存中直接被virtual address直接映射的物理内存部分。 直接通过virtual address就可以知道physical address。
那么不能直接映射的部分必须通过paging hierarchy来记录它们的virtual address和physical address的映射关系, 也就是哪个virtual address对应哪个physical address.
问题是每个进程不可能知道哪些地址被别的进程使用了. 所以内存管理抽象了一个address space给每个进程.
这个address space(struct mm_struct{}描述)就是进程允许使用的virutal address 的集合.也就是你提到的多个VMA构成一个address space.
当进程需要从内存取信息时, 它就需要根据address space对应的paging hierarchy(mm->pgd)来翻译virutal address, 得到真实的物理address.
你也知道内存是按页来组织的。内存管理必须知道哪个页已经被使用来映射了, 于是他必须通过一个描述符来描述物理页的现状:有没有被映射, 被映射了多少次. |
|