老师您好!我是《现代操作系统 原理与实践》的读者。书上63页说伙伴系统被用于分配连续的物理页。我有些不明白我们为什么需要策略来管理物理内存的分配呢? 在我的理解中,物理内存应该是已经被划分成一页一页的了,当虚拟内存被分配以后,将虚拟内存直接映射到空闲的物理页就可以了,进程使用的是虚拟内存地址,它只需要连续的虚拟内存,而连续的虚拟内存完全可以映射到不连续的物理页啊?我们只需要记录哪些物理页已经被映射, 哪些物理页是未被映射的,这些物理页连不连续无所谓啊? 我们为什么需要管理物理内存的分配呢?
一些资料中说到在linux系统中mmap使用了伙伴系统的思想,但mmap也只是对虚拟内存进行了分配,当进程需要实际读写所分配到的虚拟内存时,会触发缺页异常,然后才会将进程所访问的虚拟内存页映射到一个空闲的物理内存页。
我的以上理解肯定有疏漏或者不对的地方,麻烦老师指出并解答我的疑问, 十分感谢!