之一:管理和使用--对内和对外的接口
总的说来吧,任何事情都有两套机 构,一套是为使用而设置的,另一套是为管理而设置的,比如一个网站,普通的页面是为了让用户访问的,而一般还要有一系列的后台管理页面。 vm_struct的pages字段就是管理机构,而pte就是使用机构,当然管理时也可以用pte来查找,但是那样就太麻烦了,于是专门设置一个一个结 构进行vm_struct的管理。简单说,pte方式是提供给一套机制的,那就是MMU机制,MMU将不一致的用户访问集中到了一致的访问方式,那就是不 管cpu访问什么数据,什么类型的数据,都要通过MMU找到pgd的物理地址,然后按照 pmd,pte的方式找到最终页面,pte机制是被动被查找的,所有的支持mmu的操作系统都要使用这种机制,比如 linux,windows,bsd...;反过来.pages是内核主动管理vm_struct使用到的策略,不同的操作系统用到的机制不 同,linux中的方式想必很多人已经看过了,windows内核中引入了分页池和非分页池来管理内存,效果和linux一样,但是没有linux的如此 直观,简单。其实c语言的结构体不都是用来管理的吗?所以说vm_struct中的每一个字段都是用来进行管理。可以看一下一些很简单的嵌入式设备的内存 管理,它们不用结构体,直接在平坦模式的内存上分割一块自己用。
本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1274070