• 2023-12-09引导时内存管理 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/core-api/boot-time-mm.html#c.memblock_flags"Boottimememorymanagement"(引导时间内存管理)早期系统初始化不能简单地使用“正常”的内存管理,因为它还没有设置。但是仍然需要为各种数据结构分配内存,例如物理页面分配器。一种名为mem
  • 2023-07-01zImage自解压起始地址:ZRELADDR
    由于内存较小,zImage的起始地址受限。按照内存规划,修改zImage的加载地址,但是解压后Linux运行产生异常,可能是DataAbort,或者PrefetchAbort,或者UndefinedInstruction。1.定位zImage自解压后,Kernel启动异常问题T32启动运行后发现Kernel进入异常处理。大概位置在zImage自解压成功后,L
  • 2023-06-24linux memblock 介绍
    memblock作用内核初始化阶段是用引导内存分配器memblock进行管理,因为内核里面有很多内存结构体,不可能在静态编译阶段就静态初始化所有的这些内存结构体。另外,在系统启动过程中,系统启动后的物理内存分配器本身也需要初始化,如伙伴分配器,那么伙伴分配器如何获取内存来初始化自己
  • 2023-06-11内存池(MemPool)技术详解
    概述内存池(MemPool)技术备受推崇。我用google搜索了下,没有找到比较详细的原理性的文章,故此补充一个。另外,补充了boost::pool组件与经典MemPool的差异。同时也描述了MemPool在sgi-stl/stlport中的运用。经典的内存池技术经典的内存池(MemPool)技术,是一种用于分配大量大小相同的小对象的
  • 2023-06-04内存管理之memblock管理之移除块
    此函数是整个memblock中分配和释放内存的核心函数,主要是对region操作。详细实现如下:staticint__init_memblockmemblock_remove_range(structmemblock_type*type, phys_addr_tbase,phys_addr_tsize){ intstart_rgn,end_rgn; inti,ret;//先确定移除的逻辑块
  • 2023-05-12模板
    #include<iostream>using namespace std;template <class T,int n>class mysequence {T memblock[N];public:void setmember(int x,T value){memblock[x]=value; }T getmember(int x){return memblock[x];}}; int main(){mysequence<int
  • 2023-03-28kernel——内存管理
    0.背景知识0.1.硬件sram:硬件复杂,成本高,CPU通过A0-A18个地址线一次输入要访问的地址,就能获得数据,所以CPU能直接访问ddrsdram:硬件简单,成本低,但CPU需要通过a0-a10
  • 2023-03-21(一)内存扫描器(面向过程版)
    以下是一个基于C语言和Win32API的内存扫描器的实现代码首先定义一个结构体MEMBLOCK,用来存储内存块的信息点击查看代码typedefstruct_MEMBLOCK{ HANDLEhProcess;/
  • 2023-03-20动态内存管理——通讯录
    本文主要介绍通讯录的动态实现,静态版可见此文——>静态通讯录,文章主要介绍了两次实现的不同,以及涉及到的基本知识。希望可以帮助到大家。一、动态内存函数1、申请函数a
  • 2023-01-05操作系统-内存管理-内存读取
    文章大部分表述图片来自:https://www.jeanleo.com/2021/07/06/linux内存管理剖析/。非原创内存是如何给读取的计算机上电启动的时候,BIOS会检测并计算物理内存大小
  • 2022-11-17buddy初始化
    1、memblock初始化start_kernelsetup_arch(将初始化配置memblock)memblock_reserve(__pa_symbol(_text),(unsignedlong)__end_of_kernel_reserve-(unsigne