摘要: __virt_to_phys与__phys_to_virt unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order) { struct page *page; /* * __get_free_pages() returns 阅读全文
posted @ 2020-11-01 18:47 aspirs 阅读(1462) 评论(0) 推荐(0)
摘要: 内存管理子系统的架构如图1.1所示,分为用户空间、内核空间和硬件3个层面。 图1.1 内存管理架构 1.用户空间 应用程序使用malloc()申请内存,使用free()释放内存。 malloc()和free()是glibc库的内存分配器ptmalloc提供的接口,ptmalloc使用系统调用brk或 阅读全文
posted @ 2020-11-01 14:52 aspirs 阅读(3159) 评论(0) 推荐(0)
摘要: 相关背景: 文章开始前,先聊聊相关的背景知识,我们知道64位处理器的虚拟地址已经支持到了64bit,但是64位处理器的物理地址总线实际位宽并没有达到64bit,常用的地址线宽有39bit和48bit,最新的ARMv8.2架构也已经可以支持到52bit了。那为什么没有支持到64bit呢?以常用的48b 阅读全文
posted @ 2020-11-01 14:19 aspirs 阅读(3370) 评论(0) 推荐(0)