0%

这是<Linux内核内存管理>系列的第八篇:

第一篇为内核内存管理过程知识点的的简单梳理

第二篇介绍了内核的数据结构

第三篇介绍了从内核第一行代码加载到跳转到C代码前的内存处理。

第四篇概览了初始化C代码中的内存处理

第五篇(上)第五篇(下)介绍了Memblock和伙伴系统分配器

第六篇介绍了内存检测工具KFence工作原理

第七篇介绍了进程内存分配malloc的原理

第八篇介绍了MMAP映射和反向映射原理

Read more »

这是<Linux内核内存管理>系列的第八篇:

第一篇为内核内存管理过程知识点的的简单梳理

第二篇介绍了内核的数据结构

第三篇介绍了从内核第一行代码加载到跳转到C代码前的内存处理。

第四篇概览了初始化C代码中的内存处理

第五篇(上)第五篇(下)介绍了Memblock和伙伴系统分配器

第六篇介绍了内存检测工具KFence工作原理

第七篇介绍了进程内存分配malloc的原理

Read more »

这是<Linux内核内存管理>系列的第七篇:

第一篇为内核内存管理过程知识点的的简单梳理

第二篇介绍了内核的数据结构

第三篇介绍了从内核第一行代码加载到跳转到C代码前的内存处理。

第四篇概览了初始化C代码中的内存处理

第五篇(上)第五篇(下)介绍了Memblock和伙伴系统分配器

第六篇介绍了内存检测工具KFence工作原理

Read more »

注意:这只是一个Work Around方法,并非完全解决方案

背景

MAC升级Big Sur后,每次运行Virtual Box都会有如下报错:

1
2
3
4
5
Kernel driver not installed (rc=-1908)

Make sure the kernel module has been loaded successfully.

where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - The support driver is not installed. On linux, open returned ENOENT.
Read more »

这是<Linux内核内存管理>系列的第六篇

第一篇为内核内存管理过程知识点的的简单梳理

第二篇介绍了内核的数据结构

第三篇介绍了从内核第一行代码加载到跳转到C代码前的内存处理。

第四篇概览了初始化C代码中的内存处理

第五篇(上)第五篇(下)介绍了Memblock和伙伴系统分配器

前言

Read more »

前言

PlantUML可以算是最成功最知名的开源绘图工具了,它可以方便地将您输入文字型描述,转化成您想要的各种图(当然,要遵循其语法)。近日,在做流程图的时候,到网站上去翻语法,赫然发现其增加了一个新的主题功能。

用法

用法也很简单, 在文件头部增加如下配置即可:

1
!theme 主题名

例如,如下图采用内置的spacelab主题:

Read more »

这是<Linux内核内存管理>系列的第六篇

第一篇为内核内存管理过程知识点的的简单梳理

第二篇介绍了内核的数据结构

第三篇介绍了从内核第一行代码加载到跳转到C代码前的内存处理。

第四篇概览了初始化C代码中的内存处理

第五篇(上)第五篇(下)介绍了Memblock和伙伴系统分配器

为了避免晦涩难懂,本文及之后均主要使用图表+文字描述,尽量避免涉及过多代码。专注点会在:

  1. 背景
  2. 架构及其思想
  3. 流程
  4. 特殊处理及其原因
Read more »

书接前文,本文介绍《Memblock和Buddy System》的第二篇,第一篇见前文

伙伴系统

Mem Block向Buddy System过渡

伙伴系统便是使用页为单位对内存进行管理的方法。伙伴系统接管前,处理建立mem_section结构,也必须先从Mem Block中释放出不再使用的内存交给伙伴系统管理。本文Figure 2中略有体现,实现这个过渡的函数是memblock_free_all:

Read more »

这是<Linux内核内存管理>系列的第四篇

第一篇为内核内存管理过程知识点的的简单梳理

第二篇介绍了内核的数据结构

第三篇介绍了从内核第一行代码加载到跳转到C代码前的内存处理。

第四篇概览了初始化C代码中的内存处理

概述

参考内核文档,系统初始化早期是不能使用我们常用的 kmallocvmalloc 等函数,这是因为此时对应的功能还没初始化好。

Read more »

这是<Linux内核内存管理>系列的第四篇

第一篇为内核内存管理过程知识点的的简单梳理

第二篇介绍了内核的数据结构

第三篇介绍了从内核第一行代码加载到跳转到C代码前的内存处理。

x86_64体系结构C代码处理

前文我们从汇编代码跳转到了x86_64_start_kernel,该函数代码如下:

Read more »