【kernel】内存管理

进程页表与内核页表

所有的进程共享一份内核页表,所有的进程页表各不相同

内核页表在bring up的时候创建,而进程页表在进程创建的时候填写,对于内存页申请的同步(比如内核申请了一块内存,在进程页表中的同步)往往发生在pagefault的时候

CPU访问虚拟地址的时候总是通过MMU先访问TLB,再访问memory中的页表从而访问实际物理地址

内存分配

内粗分配策略和接口中,常常会出现以链表或其他数据结构组织页的情形,那么这些数据结构(接下来以buddy system的链表为例),它们与页表又有什么关系呢

事实上页表只反映虚拟内存到物理内存的映射,而这些分配策略中的链表实际上是管理的是虚拟地址,关注点是不同的

一个关注的是实际的访问地址

一个关注的是如何将内存更加合理、不浪费的分配出去

这其实很好理解,new和malloc最终返回的都是指向虚拟内存的指针,而链表正是通过指针组织起来的

 

posted on 2022-09-14 10:19  甲鱼写代码  阅读(41)  评论(0编辑  收藏  举报

导航