内存管理
文章平均质量分 72
DADA2ndTIAN
这个作者很懒,什么都没留下…
展开
-
linux 内存管理之五bootmem 分配器 2.4.22
其初始化过程 已在 上篇[ARM 架构物理内存初始化],(https://blog.csdn.net/zsj1126/article/details/116430903)介绍。内核的bootmem 分配器 又叫自举内存分配器,其内涵即 自己初始化自己的一个内存分配器。以页为单位分配,起始地址对齐和计算,如goal 非0 ,则从goal 开始扫描。last_offset: 上次分配的bootmem页内偏移。last_pos: 上次分配的bootmem页结束id。209-210 : 判断是否可以合并分配。原创 2023-06-19 12:45:32 · 507 阅读 · 0 评论 -
linux 内核页表初始化源码分析2.4.22
一 静态页表初始化如下图,swapper_pg_dir 代表着一级页表,pg0,pg1,分别为这个页表的前两个页表项,包含8m空间,存储内核镜像,由于vmlinux 的编译基址址是PAGE_OFFSET + 1MiB,所以,这里这三个虚拟地址分别为swapper_pg_dir:PAGE_OFFSET + 1MiB +0x1000arch/i386/kernel/head.S............原创 2022-07-06 17:01:36 · 811 阅读 · 0 评论 -
LINUX 2.4.22 内存管理 之三ARM物理内存初始化(二)
上一篇:物理内存初始化(一)下一篇:页表管理(上)前文介绍系统启动后 内存的初始化入口,以及BOOTMEM 分配器的初始化,接下来进入paging_init函数,该函数主要负责页表初始化,struct map_desc {unsigned long virtual; //node start vitural addressunsigned long physical; // node start physical addressunsigned long length; //node size原创 2022-07-06 16:55:10 · 532 阅读 · 0 评论 -
LINUX 2.4.22 内存管理 之四 页表管理【中】
[上一篇]ch3 上页表管理文章目录3.4 翻译和设置页表条目3.5 分配和释放页表3.6 内核页表3.6.1 bootstrap3.6.2 第二阶段3.4 翻译和设置页表条目下面这组宏用来地址映射(虚拟地址到物理地址)以及单个的页表条目的设置,ptep_get_and_clear用来保护和修改页表条目或物理页名称功能mk_pte()通过 struct page ......原创 2021-06-16 05:56:03 · 1077 阅读 · 0 评论 -
LINUX 2.4.22 内存管理 之三 ARM 架构物理内存初始化(一)
arm 物理内存原创 2021-05-21 00:34:03 · 641 阅读 · 0 评论 -
LINUX 2.4.22 内存管理之二 物理内存管理的数据结构
内存管理原创 2019-11-12 22:07:29 · 368 阅读 · 0 评论 -
LINUX 2.4.22 内存管理 之四 页表管理【上】
文章目录前言3.1 Describing the Page Directory3.2 Describing a Page Table Entry3.3 Using Page Table Entries前言linux 采用独立于底层架构的三级页表,从概念上容易理解,但也意味着不同类型架构的页面之间的差异变得模糊,这种结构不同于其他OS的页表结构,其他os需要管理最下层的物理页面,例如bsd 的 ......原创 2019-11-12 22:05:49 · 990 阅读 · 0 评论 -
LINUX 2.4.22 内存管理 之一 物理内存管理的基本概念
文章目录概述NUMAUMAnodezonepage概述LINUX 内存管理 主要有两大类,物理内存管理以及虚拟内存管理物理内存管理即特定平台架构实际物理内存空间的管理虚拟内存管理即特定处理器体系架构的虚拟地址空间的管理下面分别介绍linux 物理内存管理中的相关概念与数据结构目前系统内存架构主要有两种模型NUMA即非一致性内存访问模型使用这种模型的总是多处理器系统,系统物理内存被...原创 2019-07-19 22:23:18 · 431 阅读 · 0 评论 -
使用mmap 修改用户空间文件
这本是《深圳理解计算机系统》第九章的练习题题目假设有一个文件hello.txt,内容是“Hello,world!\n“,用 c 编写一个程序,使用mmap 修改文件内容 为 “Jello,word!\n”#include <unistd.h>#include <sys/mman.h>#include <fcntl.h>void main(){ i...原创 2019-10-18 13:57:14 · 900 阅读 · 0 评论