页
1.32位体系结构支持4KB的页,如果1GB的物理内存,物理内存被划分为262144个页
2.系统中每一个物理页都有一个struct page结构体
区
Linux内核主要使用四种区:
- ZONE_DMA 这个区包含的页能执行DMA操作
- ZONE_DMA32 和ZOME_DMA类似,但是只能被32位设备访问
- ZONE_NORMAL 能正常映射的页
- ZONE_HIGHEM 包含高端内存,其中的页不能永久的映射到内核地址空间
ZONE_HIGHEM叫做高端内存,其余的叫做低端内存
内存分配可以占用其它区,但是不能够同时在两个区分配
获得页/释放页malloc()
获得页
内核内分配和释放内存的接口,所有的接口以页为单位分配内存
释放页
释放页时只能释放属于你的页,否则可能导致系统崩溃,这点内核和用户空间还是不同的
以字节为单位的kmalloc()
如果需要的是整个页,还是使用malloc一族的函数
kmalloc确保页在物理地址上是连续的,在虚拟地址上也是连续的
释放内存的时候要注意,不要释