
kernel-mem
kernel-driver-mem
kunkliu
good good study
展开
-
三读bootmem
转载地址:https://blog.youkuaiyun.com/lights_joy/article/details/2704788bootmem是内核中使用的一种较简单的内存分配策略,它用于在系统启动时使用,在buddy等内存分配系统初始化完成后将不再使用。其基本思想是将SDRAM的可用存储空间分成许多页,每页的大小为4K,在分配时以页为单位分配,分配方法是从低往高找直到找到一块或连续多块满足大小要求...转载 2018-10-08 09:51:33 · 295 阅读 · 0 评论 -
Linux内存模型之bootmem分配器 二
简介:介绍一下上文遗留的两个结构memblock以及meminfo.相关阅读:http://www.linuxidc.com/Linux/2012-02/53139.htm *********************************** 在arch/arm/kernel/setup.c中,* sanity_check_meminfo();***************...转载 2018-10-08 15:11:46 · 205 阅读 · 0 评论 -
Linux内存模型之bootmem分配器 一
转载地址:https://www.linuxidc.com/Linux/2012-02/53139p3.htm简介:bootmem分配器是系统启动初期的内存分配方式,在耳熟能详的伙伴系统,slab系统建立前内存都是利用bootmem分配器来分配的,伙伴系统框架建立起来后,bootmem会过度到伙伴系统,bootmem大致思想就是收集内存中的可用内存,然后建立bit位图,然后需要的内存从这些空闲...转载 2018-10-08 15:08:30 · 264 阅读 · 0 评论 -
启动过程期间的内存管理--bootmem分配器
转载地址:https://github.com/gatieme/LDD-LinuxDeviceDrivers/tree/master/study/kernel/02-memory/03-initialize/02-bootmem日期 内核版本 架构 作者 GitHub 优快云 2016-06-14 Linux-4.7 X86 & a...转载 2018-10-08 14:38:36 · 233 阅读 · 0 评论 -
启动过程期间的内存管理--memblock分配器
转载地址:https://github.com/gatieme/LDD-LinuxDeviceDrivers/tree/master/study/kernel/02-memory/03-initialize/03-memblock日期 内核版本 架构 作者 GitHub 优快云 2016-06-14 Linux-4.7 X86 & ...转载 2018-10-08 14:56:44 · 688 阅读 · 0 评论 -
linux中bootmem分析
转载地址:https://blog.youkuaiyun.com/u010383937/article/details/78596635bootmem机制是在linux启动期间,buddy管理器,slab管理器没有初始化好时使用的内存管理方法。之后系统起来之后,就交由buddy等方法来管理了。在多核系统中,每个核都对应这个一个node_data结构体,其中就记录着这个核使用的内存,也包括了bootme...转载 2018-10-08 10:22:05 · 299 阅读 · 0 评论 -
linux 内存管理---bootmem(三)
转载地址:https://blog.youkuaiyun.com/whuzm08/article/details/80135358为什么要使用bootmem分配器,内存管理不是有buddy系统和slab分配器吗?由于在系统初始化的时候需要执行一些内存管理,内存分配的任务,这个时候buddy系统,slab分配器等并没有被初始化好,此时就引入了一种内存管理器bootmem分配器在系统初始化的时候进行内存...转载 2018-10-08 11:58:42 · 357 阅读 · 0 评论 -
全面了解 ARM CP15协处理器
ARM926EJ-S/ARM920T协处理器CP14,CP15详解ARM微处理器可支持多达16个协处理器,用于各种协处理操作,在程序执行的过程中,每个协处理器只执行针对自身的协处理指令,忽略ARM处理器和其他协处理器的指令。ARM的协处理器指令主要用于ARM处理器初始化ARM协处理器的数据处理操作,以及在ARM处理器的寄存器和协处理器的...转载 2019-10-16 13:29:06 · 420 阅读 · 0 评论 -
MMU工作原理
一、MMU的产生许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多...转载 2019-10-15 18:51:32 · 330 阅读 · 0 评论 -
MMU内存管理单元
什么是MMUMMU(Memory Management Unit)主要用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权、多任务多进程操作系统。(来自百度百科,对其几个点不熟悉,因此可以只考虑加粗部分)发展历史注意:学习一个知识点,很重要的一步是了解其为什么而存在?它的存在是为了解决什么问题?然后,在学习的过程中带着这些问题去理解...转载 2019-10-15 18:54:24 · 481 阅读 · 0 评论 -
ARM协处理器的知识
在处理器中有协处理器来辅助处理器完成部分功能的,主要是协助作用。协处理器:协处理器用于执行特定的处理任务,如:数学协处理器可以控制数字处理,以减轻处理器的负担。ARM可支持多达16个协处理器,其中CP15是最重要的一个。在ARM9、ARM11、cortexa8等核中,CP15的功能都是一样的。在ARM11核的文档看到图1-1:The section gives an ov...转载 2019-10-16 13:17:46 · 756 阅读 · 0 评论 -
ARM MMU页表框架
学习于此先上一张arm mmu的页表结构的通用框图(以下的论述都由该图来逐渐展开):以上是arm的页表框图的典型结构:即是二级页表结构:其中第一级页表(L1)是由虚拟地址的高12bit(bits[31:20])组成,所以第一级页表有4096个item,每个item占4个字节,所以一级页表的大小为16KB,而在第一级页表中的每个entry的最低2bit可以用来区分具体是什么种类的...转载 2019-10-16 13:31:55 · 1543 阅读 · 0 评论 -
硬件篇之MMU
<背景>MMU即内存管理单元(Memory Manage Unit),是一个与软件密切相关的硬件部件,也是理解linux等操作系统内核机制的最大障碍之一。可以说,不懂MMU使很多人一直停滞在单片机与无OS的时代。<虚拟地址/物理地址>a:如果处理器没有MMU,CPU内部执行单元产生的内存地址信号将直接通过地址总线发送到芯片引脚,被内存芯片接收,这就是物理地址(p...转载 2019-10-15 17:37:54 · 259 阅读 · 0 评论 -
linux通过内核启动参数预留系统内存
1 首先正常启动内核 我们需要启动内核后查询一些信息。 2. 查看系统内存信息 内核启动后通过 cat /proc/iomem 查看内存的分布,结果类似: 100000000-10dffffff : System RAM 但是我们会看到有很多条这样的项,我们主要关注"System RAM"这样的项,因为这代表系统内存。 3. 在System RAM的段,找一个地址最高的RAM...转载 2021-06-29 11:29:58 · 2054 阅读 · 0 评论 -
mmap共享不及时更新问题
MIPS平台设备驱动中mmap实现如下:static int shm_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma){struct tee_shm *shm = dmabuf->priv;size_t size = vma->vm_end - vma->vm_start;vma->vm_flags |= VM_IO | VM_SHARED;vma->vm_page_prot = pgprot_no.转载 2020-10-20 19:49:35 · 1682 阅读 · 0 评论 -
Linux设备驱动之内存映射--mmap
1. 内存映射 所谓的内存映射就是把物理内存映射到进程的地址空间之内,这些应用程序就可以直接使用输入输出的地址空间,从而提高读写的效率。Linux提供了mmap()函数,用来映射物理内存。 在驱动程序中,应用程序以设备文件为对象,调用mmap()函数,内核进行内存映射的准备工作,生成vm_area_struct结构体,然后调用设备驱动程序中定义的mmap函数。 2. 映射的种类 把同一个物理地址映射为虚拟地址有两种方法,第一种是mmap()函...转载 2020-10-20 19:30:30 · 833 阅读 · 0 评论 -
Linux驱动mmap内存映射
mmap在linux哪里? 什么是mmap? 上图说了,mmap是操作这些设备的一种方法,所谓操作设备,比如IO端口(点亮一个LED)、LCD控制器、磁盘控制器,实际上就是往设备的物理地址读写数据。 但是,由于应用程序不能直接操作设备硬件地址,所以操作系统提供了这样的一种机制——内存映射,把设备地址映射到进程虚拟地址,mmap就是实现内存映射的接口。 操作设备还有很多方法,如ioctl、ioremap mmap的好处是,mmap把设备内存映射到虚拟内存...转载 2020-10-20 18:58:35 · 383 阅读 · 0 评论 -
深入理解计算机系统-之-内存寻址(五)--页式存储管理
1 前景回顾前面我们讲解了操作系统段式存储管理的主要内容。32位,在保护方式下,其能够访问的线性地址空间可达4GB,而且允许...转载 2019-10-24 19:02:06 · 1105 阅读 · 0 评论 -
深入理解计算机系统-之-内存寻址(四)--linux中分段机制的实现方式
linux中的分段机制前面说了那么多关于分段机制的实现,其实,Linux以非常有限的方式使用分段。因为,Linux基本不使用分段的...转载 2019-10-24 19:00:54 · 523 阅读 · 0 评论 -
深入理解计算机系统-之-内存寻址(三)--分段管理机制(段描述符,段选择子,描述符表)
逻辑地址-=>线性地址-=>物理地址前面我们提到了当使用80x86微处理器时,有三种不同的地址: 逻...转载 2019-10-24 18:58:38 · 1396 阅读 · 0 评论 -
深入理解计算机系统-之-内存寻址(二)--存储保护机制(CPU实模式与保护模式)
cpu的保护模式由来分段机制8086的诞生,标志着Intel 正式进入了x86时代,这是个多么具有纪念意义的日子:1978-6-...转载 2019-10-24 18:57:24 · 777 阅读 · 0 评论 -
深入理解计算机系统-之-内存寻址(一)--存储管理机制(虚拟地址,线性地址,物理地址)
参照 《深入理解计算机系统》 《深入理解linux内核》 《80x86汇编语言程序设计》 《操作系统的设...转载 2019-10-24 18:56:22 · 515 阅读 · 0 评论 -
Linux分页机制之分页机制的实现详解--Linux内存管理(八)
日期 内核版本 架构 作者 GitHub 优快云 2016-09-01 Linux-4....转载 2019-10-24 18:36:05 · 547 阅读 · 0 评论 -
Linux分页机制之分页机制的演变--Linux内存管理(七)
日期 内核版本 架构 作者 GitHub 优快云 2016-09-01 Linux-4....转载 2019-10-24 18:34:26 · 219 阅读 · 0 评论 -
Linux分页机制之概述--Linux内存管理(六)
日期 内核版本 架构 作者 GitHub 优快云 2016-09-01 Linux-4....转载 2019-10-24 18:33:20 · 385 阅读 · 0 评论 -
《深入理解LINUX内存管理》学习笔记
引子 为什么要写这个笔记: 1,这本书的中文版翻译了太垃圾,没法阅读。阅读英文原版,可以很好的理解作者的思路。作此笔记备忘 2,一直以来学习LINUX kernel的知识缺乏系统化,借对这本书的学习,系统...转载 2019-10-24 09:10:24 · 720 阅读 · 0 评论 -
启动期间的内存管理之pagging_init初始化分页机制--Linux内存管理(十四)
日期 内核版本 架构 作者 GitHub 优快云 2016-09-01 Linux-4....转载 2019-10-24 09:10:02 · 481 阅读 · 0 评论 -
启动期间的内存管理之build_zonelists初始化备用内存域列表zonelists--Linux内存管理(十三)
日期 内核版本 架构 作者 GitHub 优快云 2016-09-01 Linux-4....转载 2019-10-24 09:09:16 · 303 阅读 · 0 评论 -
启动期间的内存管理之bootmem_init初始化内存管理–Linux内存管理(十二)
初始化内存管理日期 内核版本 架构 作者 GitHub 优快云 2016-06-14 Linux-4.7 X86 & arm gatieme LinuxDeviceDrivers Linux内存管理 在内存管理的上下文中, 初始化(initialization)可以有多种含义. 在许多CPU上, 必须显式设置适用于L...转载 2019-10-24 09:08:54 · 429 阅读 · 0 评论 -
启动期间的内存管理之memblock分配器--Linux内存管理(十一)
日期 内核版本 架构 作者 GitHub 优快云 2016-06-14 Linux-4....转载 2019-10-23 18:53:59 · 540 阅读 · 0 评论 -
启动期间的内存管理之引导分配器bootmem--Linux内存管理(十)
...转载 2019-10-23 18:52:43 · 209 阅读 · 0 评论 -
启动期间的内存管理之初始化过程概述----Linux内存管理(九)
转载地址:https://blog.youkuaiyun.com/gatieme/article/details/52403148 日期 内核版本 架构 作者 GitHub 优快云 2016-09-01 Linux-4.7 X86 & arm gatieme LinuxDeviceDrivers...转载 2018-10-08 14:23:54 · 358 阅读 · 0 评论 -
Linux内存描述之高端内存--Linux内存管理(五)
日期 内核版本 架构 作者 GitHub 优快云 2016-09-01 Linux-4....转载 2019-10-23 16:22:40 · 305 阅读 · 0 评论 -
Linux内存描述之内存页面page--Linux内存管理(四)
日期 内核版本 架构 作者 GitHub 优快云 2016-09-01 Linux-4....转载 2019-10-23 15:40:28 · 840 阅读 · 0 评论 -
Linux内存描述之内存区域zone--Linux内存管理(三)
日期 内核版本 架构 作者 GitHub 优快云 2016-08-31 Linux-4....转载 2019-10-23 14:25:44 · 340 阅读 · 1 评论 -
Linux内存描述之内存节点node--Linux内存管理(二)
日期 内核版本 架构 作者 GitHub 优快云 2016-09-01 Linux-4....转载 2019-10-23 14:03:19 · 875 阅读 · 0 评论 -
基于多核处理器的RTOS多核扩展分析与研究
本文是我写得一篇关于RTOS SMP扩展的硕士论文,希望对有志于了解RTOS-SMP工作机制的兄弟们提供些许帮助,O(∩_∩)O~。一直以来人们通过提高主频来提升微处理器的性能,但是高功耗制约着主频的进一步提升,这种矛盾在仅依靠电池供电的嵌入式设备上表现的尤为突出。多核处理器将多个较低主频的处理核心集成到一个芯片内部,通过提高IPC(Instruction Per Clock)来提升处...转载 2019-09-29 16:39:21 · 3553 阅读 · 0 评论 -
Linux内核学习笔记:SMP、UMA、NUMA
1. 概述 SMP称为共享存储型多处理机(Shared Memory mulptiProcessors), 也称为对称型多处理机(Symmetry MultiProcessors)。 共享存储型多处理机有三种模型:均匀存储器存取(Uniform-Memory-Access,简称UMA)模型、非均匀存储器存取(Nonuniform-Memory-Access,简称NUMA)模型和只用高速缓...转载 2019-10-23 11:02:18 · 530 阅读 · 0 评论 -
服务器体系(SMP, NUMA, MPP)与共享存储器架构(UMA和NUMA)
1 3种系统架构与2种存储器共享方式1.1 架构概述从系统架构来看,目前的商用服务器大体可以分为三类 对称多处理器结构(SMP:Symmetric Multi-Processor) 非一致存储访问结构(NUMA:Non-Uniform Memory Access) 海量并行处理结构(MPP:Massive Parallel Processing)。 共享存储型...转载 2019-10-23 13:43:44 · 363 阅读 · 0 评论 -
Linux内存描述之概述--Linux内存管理(一)
日期 内核版本 架构 作者 GitHub 优快云 2016-09-01 Linux-4....转载 2019-10-23 13:23:36 · 202 阅读 · 0 评论