vma
  • 2024-06-15linux内存管理(八)- 反向映射RMAP
    这里有一篇博客讲的不错。linux内存管理笔记(三十八)----反向映射_linux反向映射-CSDN博客页表是把虚拟地址映射到物理页面,但是如何根据一个物理页找到所有映射它的pte呢?答案是用反向映射ReverseMapping(RMAP)。这在页面回收中很有用。回收页面需要将到物理页的映射断开(改一下pte
  • 2024-06-11linux内存管理(四)- 用户空间的内存分配在kernel中的实现
    malloc是常用的用户态分配内存的接口,它会调用brk系统调用来请内存分配内存。下面看看该系统调用的实现。插一句,每次调用malloc的时候未必都会调用brk去从kernel分配实际的内存,因为每次系统调用都是有开销的,为了避免频繁的陷入内核,malloc会多申请一部分内存当作内存池,之后要申请内
  • 2024-06-11linux内存管理(七)- 写时复制
    在fork进程的时候子进程会共享父进程的页表,但并没有分配新页。此时页表时只读的,如果父进程或者子进程写内存就会触发pagefault,内核会重新分配内存更改页表,从此分道扬镳。因此写时复制包含两部分内容,第一是fork进程时复制页表并设置pte为只读,第二是写内存发生pagefault。先来看
  • 2024-06-11linux内存管理(五)- 缺页处理
    分析一下缺页的处理。缺页的意思是在访问内存的时候该地址还没有建好页表,页面尚未分配,或者页面被swap出去或者没有权限。缺页是同步异常,用户态发生缺页异常会等待内核解决,当然这一切对于用户态都是透明的。缺页处理的核心函数是do_page_fault,这个函数是架构相关的所以这个函数分布
  • 2024-06-10【操作系统】页表映射
    页表的一些术语现在Linux内核中支持四级页表的映射,我们先看下内核中关于页表的一些术语:全局目录项,PGD(PageGlobalDirectory)上级目录项,PUD(PageUpperDirectory)中间目录项,PMD(PageMiddleDirectory)页表项,(PageTable)大家在看内核代码时会经常看的以上术语,但在ARM的
  • 2024-06-07【Linux驱动设备开发详解】11.内存与I/O访问
    1.内存管理单元高性能处理器一般会提供一个内存管理单元(MMU),用于辅助操作系统尽心修改内存管理,提供虚拟地址和物理地址的映射、内存访问权限保护和Cache缓存控制等硬件支持。1.1MMU基本概念1.1.1概念含义1.TLB(TranslationLookasideBuffer):旁路转换缓存,TLB是MMU的核心
  • 2024-04-04CSC3150Unix的教学操作系统
    CSC3150-说明书-A3介绍这项任务使用xv6,一个简单的、类似Unix的教学操作系统,作为平台指导您实现mmap和munmp系统调用。这两个用来共享进程之间的内存,并将文件映射到进程地址空间。一般来说,这项任务的重点是内存映射文件。支持内存映射的机制文件可以处理文件,就好像它们是程序内存
  • 2024-02-23[MIT 6.S081] Lab: mmap
    Lab:mmap在本次实验中,我们要实现的是一个比较简简单的mmap实现,将文件映射到内存中的某个块,并根据权限设置这块内存的行为,以及为其提供延迟分配策略。mmap对于将文件映射到内存,其实是先规划好一块区域给文件使用,为什么要提供延迟分配,是因为如果需要映射一个文件时,就规划好一
  • 2024-02-14【XV6】 mmap
    代码:https://github.com/JasenChao/xv6-labs.git文件映射到进程地址题目要求实现两个系统调用:mmap和munmap。主要功能就是将文件映射到进程的内存中。题目给出了mmap和munmap的声明:void*mmap(void*addr,size_tlen,intprot,intflags,intfd,off_toffset)
  • 2024-02-11[转帖]linux参数之max_map_count
    https://www.cnblogs.com/duanxz/p/3567068.html “Thisfilecontainsthemaximumnumberofmemorymapareasaprocessmayhave.Memorymapareasareusedasaside-effectofcallingmalloc,directlybymmapandmprotect,andalsowhenloadingsharedlibr
  • 2024-02-04Bounds checking strategy - mprotect()-based protection - why does not saturate the CPU like other me
    Boundscheckingstrategy-mprotect()-basedprotection-DoesnotsaturatetheCPUlikeothermechanismsSourceSzewczyk,R.,Stonehouse,K.,Barbalace,A.,&Spink,T.(2022).Leapsandbounds:AnalyzingWebAssembly’sperformancewithafocusonboun
  • 2024-01-28linux内存管理(三)进程地址空间(上)v5.0
    每个进程都有自己的虚拟机地址空间。在task_struct数据结构中有一个mm_struct专门用来描述进程的虚拟地址空间。structtask_struct{...structmm_struct*mm;...}structmm_struct{struct{structvm_area_struct*mmap;/*listofVMAs*
  • 2023-12-23linux内核中的zero-page
    zero-page操作系统给用户新分配的内容(通过mmap或者brk)都是清零过的,但是这些虚拟地址通常都是按需分配物理页面。这里的“按需”的需求可能是读取,也可能是写入。如果只是读取,只要保证读取内容是零即可,在MMU的基础上,可以让“所有”虚拟地址都映射到内容为0的物理页面中。这样如
  • 2023-12-17mmap内存映射 --- 字符设备驱动,用户空间和内核空间映射到同一个物理内存
    内存映射可实现用户程序对设备驱动内存的直接存取示例代码:驱动层#include<linux/init.h>#include<linux/module.h>#include<linux/miscdevice.h>#include<linux/fs.h>#include<linux/slab.h>//定义kmalloc接口#include<asm/io.h>//定义virt_to_phys接
  • 2023-12-05Unevictable LRU Infrastructure (翻译 by chatgpt)
    原文:https://www.kernel.org/doc/html/latest/mm/unevictable-lru.htmlIntroductionThisdocumentdescribestheLinuxmemorymanager's"UnevictableLRU"infrastructureandtheuseofthistomanageseveraltypesof"unevictable"folios
  • 2023-11-08一次Binder通信最大可以传输多大的数据?
    前言在第六章中,我通过匿名共享内存的方式解决Binder通信是无法传递大数据的问题,一次Binder通信最大可以传输是1MB-8KB(PS:8k是两个pagesize,一个pagesize是申请物理内存的最小单元)但是这个答案对不对呢,我只能说不准确,接下来我们来仔细研究一下1MB-8KB的限制来源于哪里frameworks/
  • 2023-11-01android ebpf之uprobe原理和检测方法
    uprobe通过内核层对用户层进程的指定地址的原指令copy到其他位置,然后写入指定类型中断指令,然后内核中设置对应的中断处理程序,中断处理程序中执行uprobe设置的回调过滤函数,然后设置单步执行copy的原指令后恢复寄存器状态继续执行。ida查看被uprobehook的函数头部,指令被修改为了中断
  • 2023-09-28编译链接概念,VMA/LMA是什么
    编译基础概念为了描述链接器脚本语言,我们需要定义一些基本概念和词汇。链接器干的主要事情就是把输入文件整合成一个输出文件。那么输入是什么?输出是什么?怎么整合?整合的是什么信息?输入和输出文件都是object文件格式。它们都称为目标文件。输出文件又称为可执行文件。它们的内容
  • 2023-09-24crash —— 查看进程的vma结构体
    crash提供了vm命令来输出进程的vma相关的信息。输出当前当进程的vma列表crash>vmPID:3319TASK:ffff889760358000CPU:6COMMAND:"kvm"MMPGDRSSTOTAL_VMffff893ada165000ffff893a8c4e200045772k9535832kVMA
  • 2023-07-04字符设备驱动另一种写法—mmap方法操作LED
    最近在看韦老师的视频,讲解了很多种字符设备的驱动写法。经过自己的研究之后,我发现还有另外一种写法,直接在应用层操作,省去了内核中的地址映射部分,使得用户可以在应用层直接操作LED。       mmap方法是把设备物理地址直接映射到用户空间的一种系统调用方法,他
  • 2023-06-15虚拟文件系统
    虚拟文件系统虚拟文件系统是负责组织和管理文件系统的,就像虚拟内存用来实现管理内存系统.而在计算机中因为存储介质的问题,所以通常存在多个文件系统.比如:硬盘,光盘,闪盘这些存储介质的不同,还有例如一些操作系统的不同,以及文件特性的不同,因此不同的文件系统在实现上会有所
  • 2023-06-02do_page_fault源码阅读
    前言参考《Linux内核源码情景分析》对缺页异常的处理过程,但是书中的kernelversion版本较老,因此本文基于kernelversion4.19.20源码,参考oldversion的内核源码剖析,再次进行了阅读。缺页异常的产生原因缺页异常就在通过虚拟地址去访问物理内存的过程中出现失败时抛出的异常,访问
  • 2023-04-10CH32V系列——关于指定函数在RAM中运行
     注意:以下修改,都只是在原来基础上添加,不做删减在启动文件做修改,增加下列代码:2:/*LoaddatasectionfromflashtoRAM*/laa0,_highcode_lmalaa1,_highcode_vma_startlaa2,_highcode_vma_endbgeua1,a2,2f1:lwt0,(a0)swt0,(a1)addia0,a0,4addia1,
  • 2023-04-02转载:mmap
    https://www.jianshu.com/p/0ce91e10d026https://gewu.pcwanli.com/front/article/21147.htmlhttps://blog.csdn.net/m0_53157173/article/details/1275785581、mmap基础概念mmap是一种内存映射文件的方法,即将一个文件或者其他对象映射到进程的地址空间,实现文件磁盘地址和进
  • 2023-02-22Linux内存管理 一个进程究竟占用多少空间?-VSS/RSS/PSS/USS【转】
    转自:https://www.cnblogs.com/arnoldlu/p/9375377.html 在Linux里面,一个进程占用的内存有不同种说法,可以是VSS/RSS/PSS/USS四种形式,这四种形式首字母分别是Virtual/Res