[linux内存]系统启动过程中的内存管理

内核启动过程的内存管理
1,memblock机制
 kernel/arm/mm/memblock.c arm_memblock_init()函数
 系统刚启动的时候不是所有的内存都是可以作为分配使用的,比如有些内存是默认给rootfs或者kernel使用的,memblock机制
 作用就是决定哪些内存是可以分配的,哪些是默认已经被使用的。
 涉及的三个主要API是memblock_init() memblock_reserve()  memblock_add()函数

2,bootmem机制
 http://blog.csdn.net/gdt_a20/article/details/7229329
   bootmem机制用于在内核启动过程早期分配内存,该分配器使用位图来管理所有的低端内存,一个bite代表一个物理页帧,
   在需要内存的时候,分配器逐位扫描位图,直到找到一个能提供足够连续页的位置,
   bootmem涉及的数据结构是struct bootmem_data数据结构,每个节点有一个这样的数据结构

[cpp] view plaincopy

  1. 30 typedef struct bootmem_data {
  2. 31         unsigned long node_min_pfn;
  3. 32         unsigned long node_low_pfn;
  4. 33         void *node_bootmem_map;
  5. 34         unsigned long last_end_off;
  6. 35         unsigned long hint_idx;
  7. 36         struct list_head list;
  8. 37 } bootmem_data_t;

[cpp] view plaincopy

    1. bootmem机制的初始化函数是bootmem_init(),分配和回收内存的函数分别是alloc_bootmem*()和 free_bootmem*()
时间: 2024-08-08 05:36:02

[linux内存]系统启动过程中的内存管理的相关文章

驱动移植过程中DMA内存相关接口替换

1. 相关概念介绍及移植简介 1.1 物理地址与总线地址         1)物理地址是与CPU相关的.在CPU的地址信号线上产生的就是物理地址,在程序指令中的的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址线上.         2)总线地址,顾名思义,是与总线相关的,外设使用的就是总线地址.         在x86平台下,外设的I/O地址是独立的,即有专门的指令访问外设I/O,I/O地址就是所谓的"总线地址".而"物理地址"就

浅谈-LINUX 操作系统启动过程

LINUX 操作系统启动过程 通过一段时间的学习已经对linux有了一定的了解,接下来就开始研究一下linux 操作系统的启动过程吧.当然这是为了让大家比较容易发现linux启动过程中容易发生问题的地方以及解决办法. 目录 一.简述 二.详解 1.BIOS加电自检 2.读取MBR 三.加载内核 1.Grub引导分为三个阶段 2.Stage1.5阶段存在的原因 3.详解三阶段引导过程 四.调用init进程 1.init的功能作用 2.init初始化流程 3.init 执行 run-level 的各

linux驱动程序之电源管理之新版linux系统设备架构中关于电源管理方式的变更

新版linux系统设备架构中关于电源管理方式的变更 based on linux-2.6.32 一.设备模型各数据结构中电源管理的部分 linux的设备模型通过诸多结构体来联合描述,如struct device,struct device_type,struct class, struct device_driver,struct bus_type等. @kernel/include/linux/devices.h中有这几中结构体的定义,这里只列出和PM有关的项,其余查看源码: struct d

Lucene索引过程中的内存管理与数据存储

Lucene的索引过程分两个阶段,第一阶段把文档索引到内存中:第二阶段,即内存满了,就把内存中的数据刷新到硬盘上.          倒排索引信息在内存存储方式 Lucene有各种Field,比如StringField,TextField,IntField,FloatField,DoubleField-,Lucene在处理的过程中把各种Field都处理成相应的byte[],以最本质的方式来看待各种Field的内容,统一了数据的存储形式. 在写入内存阶段,第一步就是需要理清各个类之间的关系. 在索

为什么要有uboot?带你全面分析嵌入式linux系统启动过程中uboot的作用

1.为什么要有uboot 1.1.计算机系统的主要部件 (1)计算机系统就是以CPU为核心来运行的系统.典型的计算机系统有:PC机(台式机+笔记本).嵌入式设备(手机.平板电脑.游戏机).单片机(家用电器像电饭锅.空调) (2)计算机系统的组成部件非常多,不同的计算机系统组成部件也不同.但是所有的计算机系统运行时需要的主要核心部件都是3个东西: CPU + 外部存储器(Flash/硬盘) + 内部存储器(DDR SDRAM/SDRAM/SRAM) 1.2.PC机的启动过程 (1)部署:典型的PC

Linux学习笔记(1)Linux虚拟机安装过程中的知识点及常用管理工具

1. VMware的相关知识 (1)建议的VMware的配置: CPU 主频1GHz以上 内存 1GB以上 硬盘 分区空闲空间8GB以上 (2)VMware创建快照 快照的作用是保存虚拟机的现有状态,以便以后可返回到相同状态.快照的特点是:① 可以快速启动虚拟机:② 虚拟机系统崩溃时,可以快速恢复. 创建快照的方法是,点击VMware工具栏上的标志,然后填写快照名称,如下图所示: 恢复快照的方法是单击VMware工具栏上的标志,选择弹出的对话框中创建的快照,然后单击"转到"按钮,即可打

轻松识破linux内核启动过程中的“”套路“”

内核启动流程相关的内容让很多热爱linux的小伙伴既爱又恨,因为这是了解linux系统基本构造的良好过程同时由于其本身复杂且底层,脑子中的脉络不是很清晰,本文就总结了一些优秀博文,以自己的理解来解构一下. 本文的环境是CentOS 6.8, 基本过程: 庖丁解牛: 1.POST BIOS的功能由两部分组成, 步骤1:上电自检POST(Power-on self test),主要负责检测系统外围关键设备(如:CPU.内                 存.显卡.I/O.键盘鼠标等)是否正常.例如,

[转载] linux 程序运行过程中替换文件

今天被朋友问及“Linux下可以替换运行中的程序么?”,以前依稀记得Linux下是可以的(而Windows就不让),于是随口答道“OK”.结果朋友发来一个执行结果:(test正在运行中)# cp test2 test cp: cannot create regular file `test': Text file busy 看起来是程序被占用,无法覆盖.于是自己又再做了几个实验: (1)先rm删除正在运行的test,然后cp test2 test就没有错误了.(2)先mv改名正在运行的test,

Linux下安装过程中编译PHP时报错:configure: error: libjpeg.(a|so) not found

在Linux下安装PHP过程中,编译时出现configure: error: libjpeg.(a|so) not found 错误的解决的方法: 检查之后发现已经安装libjpeg.可是/usr/lib文件夹下没有libjpeg.so这个文件,在/usr/lib64下是有的,使用–with-jpeg-dir=/usr/lib64 依旧无效, 最后用ln -s /usr/lib64/libjpeg.so /usr/lib/libjpeg.so问题解决 libpng报错解决方法一样