![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux内核
aa图图aa
这个作者很懒,什么都没留下…
展开
-
简述linunx内存管理初始化流程
本文基于linux-4.4.6 ,arm64平台 在汇编阶段,需要完成identity map和kernel image map两个工作,假设arm64 使用48位虚拟地址,4级translation table :9(level 0 or PGD) + 9(level 1 or PUD) + 9(level 2 or PMD) + 9(level 3 or PTE) + 12(page...原创 2020-04-01 18:02:03 · 185 阅读 · 0 评论 -
内存初始化代码分析(三):创建系统内存地址映射
一、前言经过内存初始化代码分析(一)和内存初始化代码分析(二)的过渡,我们终于来到了内存初始化的核心部分:paging_init。当然本文不能全部解析完该函数(那需要的篇幅太长了),我们只关注创建系统内存地址映射这部分代码实现,也就是解析paging_init中的map_mem函数。同样的,我们选择的是4.4.6的内核代码,体系结构相关的代码来自ARM64。二、准备阶段在进入...转载 2020-03-13 10:40:45 · 369 阅读 · 0 评论 -
arm64内存管理初始化汇编阶段--identity mapping和kernel image mapping
本文是在阅读完linuxer大神的内存管理文章,阅读内核源码所作的简单的注释和说明,大神文章请参考:http://www.wowotech.net/memory_management/__create_page_tables_code_analysis.htmlarch/arm64/kernel/head.S一:代码主体流程__create_page_tables:adr...原创 2020-03-12 14:44:28 · 590 阅读 · 0 评论 -
基于arm64内存管理初始化概述
一:启动之前在内核启动之前,bootloader会将kernel image和DTB搬移到内存的指定位置。其中TEXT_OFFSET是kernel image相对内存起始地址的偏移。这时候MMU是关闭的,因此CPU看到的地址即是物理地址空间。二:初始化MMU跳转到内核执行,内核便完全掌控了内存系统的控制权。它首先要做的事情就是打开MMU,而为了打开MMU,必须要创建ke...转载 2020-03-11 15:59:35 · 694 阅读 · 0 评论