- 论坛徽章:
- 1
|
回复 1# 626788149
你问的问题,其实在《LINUX内核源代码情景分析》这本书中有你的答案。是在第二章,你把第二章好好看上三遍以上,才能懂这个道理,我这里大概跟你讲一下,具体的内容要看那里的内容。
1, 为线性区分配的页框是不是长度为2的n次方的连续的页?也就是从伙伴系统里分配的页。(order为1~10)。
这个问题是的。确实是这样的。但这只是相当于给了一个支票,没有实际兑现。什么时候兑现,要等到真正用的时候,什么叫真正用的时候,就是进程对这个地方进行读或者写的时候。
2,还是一个页一个页的分配?(order 为0)。
这个是实际分配的方式,也就是一读或者写到一个页面的地址的时候,进行分配。而且每次只分配一个页面。
你可能问这个到底是怎么回事,如果没有懂,我这么跟你说,这是因为虚拟内存,因为虚拟内存是先在页表分配了,后面到了缺页中断的时候才真正进行分配,这样的好处是减少了不必要的分配。LAZYMODE才是好的方法 。而从虚拟内存到物理内存的映射工作,这里有一个CPU的机制问题,其中有很复杂的内容。但说的简单一点。就是有一个数据结构来管理,CPU根据这个结构来检查要访问的物理内存与进行读写。而操作系统通过维护这个数据结构来实现内存管理 。这些内容都在我说的那本书的那个章节中讲到,非常细节的内容,那最后还是要看源代码的。 |
|