【kernel】内存管理
进程页表与内核页表
所有的进程共享一份内核页表,所有的进程页表各不相同
内核页表在bring up的时候创建,而进程页表在进程创建的时候填写,对于内存页申请的同步(比如内核申请了一块内存,在进程页表中的同步)往往发生在pagefault的时候
CPU访问虚拟地址的时候总是通过MMU先访问TLB,再访问memory中的页表从而访问实际物理地址
内存分配
内粗分配策略和接口中,常常会出现以链表或其他数据结构组织页的情形,那么这些数据结构(接下来以buddy system的链表为例),它们与页表又有什么关系呢
事实上页表只反映虚拟内存到物理内存的映射,而这些分配策略中的链表实际上是管理的是虚拟地址,关注点是不同的
一个关注的是实际的访问地址
一个关注的是如何将内存更加合理、不浪费的分配出去
这其实很好理解,new和malloc最终返回的都是指向虚拟内存的指针,而链表正是通过指针组织起来的