首页 > TAG信息列表 > vma

8-1 mmap设备方法

1、mmap函数原型 void *mmap(void *addr, size_t len, int prot, int flag, int fd, offset_t offset)作用:(1)内存映射函数mmap,负责把文件内容映射到进程的虚拟地址空间。这样做的目的就是减少read和write操作。(2)也可以通过匿名映射实现进程通信。addr:指定映射起始地址,通常为NULL,一

Lab10 mmap

Lab10 mmap(hard) (期末复习操作系统的时候,过于无聊,因为题目都写不来,于是做了这个lab,比做题有意思多了。这个实验是hard,不过我做的很顺利,感觉有一种自己变强的假象hhh) void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); 这个实验要

Linux内核内存布局

内核内存布局 64位Linux一般使用48位来表示虚拟地址空间,43位表示物理地址, 通过命令:cat /proc/cpuinfo。 cat /proc/meminfo ARM64架构处理器采用48位物理寻址机制,最大可寻找256TB的物理地址空间。对于目前应用完全足够,不需要扩展到64位的物理寻址。虚拟地址也同样最大支持4

Linux 内核内存布局与堆管理

内核内存布局 64位Linux一般使用48位来表示虚拟地址空间,43位表示物理地址, 通过命令:cat /proc/cpuinfo。 cat /proc/meminfo ARM64架构处理器采用48位物理寻址机制,最大可寻找256TB的物理地址空间。对于目前应用完全足够,不需要扩展到64位的物理寻址。虚拟地址也同样最大支持48位寻

内核安全:CVE-2016-5195分析

简介 本篇文章在介绍脏牛漏洞之前会先介绍一些写时复制页、多线程安全的知识,以便大家能更好地理解漏洞成因。在此之前,需要读者了解什么是分页、分段、以及虚拟内存与物理内存的区别。 参考文章: 从零入门linux内核安全:脏牛提权漏洞分析与补丁分析(CVE-2016-5195) [原创]Linux内核[CVE

Binder概述,快速了解Binder体系

前言 众所周知,Binder是Android系统中最主要的进程间通信套件,更具体一点,很多文章称之为Binder驱动,那为什么说它是一个驱动呢,驱动又是何物,让我们自底向上,从内核中的Binder来一步步揭开它的面纱。本文重点在帮助读者对于Binder系统有一个简略的了解,所以写得比较笼统,后续文章会详细分

清华操作系统实验ucore_lab3

lab3 练习0:填写已有实验 需要修改的文件: default_pmm.c: static struct Page *default_alloc_pages(size_t n) { assert(n > 0); if (n > nr_free) { //如果所有的空闲页的加起来的大小都不够,那直接返回NULL return NULL; } list_entry_t *le, *len

现货黄金k线图与均线的结合

移动平均线可能是最受现货黄金投资者欢迎的技术指标之一,即使是钟情于基本面分析的投资者,也会在图表上加上均线这个工具。作为一个普及程度极高的指标,几乎所有的行情软件都会提供。   均线受欢迎的原因很简单,因为它使用简单而且用途多样,而且能够带来盈利的机会,当然,前提是投资者

user space进程退出时,进程的mmap资源将由kernel进行unmap

user space进程退出时,进程的mmap资源将由kernel进行unmap user space进程退出时,会调用exit_mmap()将mmap都释放掉,callstack如下: do_exit exit_mm mmput __mmput exit_mmap   mm/mmap.c /* Release all mmaps. */ void exit_mmap(struct mm_struct *mm) { struct mmu_gathe

Linux下访问匿名页发生的神奇“化学反应”

1.实例代码 首先以一个简单的示例代码来说明: #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/mman.h> #define MAP_SIZE (100 * 1024 * 1024) int main(int argc, char *argv[]) { char *p; char val; int

Binder概述,快速了解Binder体系,面试

static int binder_open(struct inode *nodp, struct file *filp){…} static int binder_mmap(struct file *filp, struct vm_area_struct *vma){…} static int __init binder_init(void) { int ret; // 创建名为binder的单线程的工作队列 binder_deferred_workqueue = c

Linux内存管理 (19)总结内存管理数据结构和API【转】

转自:https://www.cnblogs.com/arnoldlu/p/8335568.html 专题:Linux内存管理专题 关键词:mm、vaddr、VMA、page、pfn、pte、paddr、pg_data、zone、mem_map[]。   1. 内存管理数据结构的关系图 在大部分Linux系统中,内存设备的初始化一般是在BIOS或bootloader中,然后把DDR的大小传递

linux /dev/mem /dev/kmem驱动分析

/dev/mem 说明驱动注册用户空间调用mmap方法/dev/mem/dev/kmem 说明 /dev/mem”是linux系统的一个虚拟字符设备,无论是标准linux系统还是嵌入式linux系统,都支持该设备。 物理内存的全镜像。可以用来访问物理内存 /dev/kmem: kernel看到的虚拟内存的全镜像。可以用来访问k

[内存管理] /proc/<pid>/maps 简要分析

本文转自:https://www.cnblogs.com/arnoldlu/p/10272466.html         定位内存泄漏基本上是从宏观到微观,进而定位到代码位置。         从/proc/meminfo可以看到整个系统内存消耗情况,使用top可以看到每个进程的VIRT(虚拟内存)和RES(实际占用内存),基本上就可以

Linux内存管理 brk(),mmap()系统调用源码分析2:brk()的内存释放流程

Linux brk(),mmap()系统调用源码分析 brk()的内存释放流程 荣涛 2021年4月30日 内核版本:linux-5.10.13注释版代码:https://github.com/Rtoax/linux-5.10.13 1. 基础部分 在上篇文章中已经介绍了基础部分 《Linux内存管理 brk(),mmap()系统调用源码分析1:基础部分》,

摄像头驱动--mmap

  看到之前在csdn 上写的摄像头驱动总结,首先得感谢摄像头驱动这个东西 让我在读书时挣到了一笔生活费!!------------ 现在把文章简要拷贝过来,以及去掉之前的代码然后随便扯一下文件的map吧   驱动核心: 将摄像头驱动中的yuv数据map到用户空间,便于访问。read 性能不够!! 原理是:通

【CVE复现NO.00001】“脏牛”漏洞CVE-2016-5195复现及简要分析

【CVE复现NO.00001】CVE-2016-5195复现及简要分析 [github blog addr](https://arttnba3.cn/2021/04/08/NOTE-0X04-CVE-2016-5195/)0x00.一切开始之前一、写时复制机制(Copy-on-Write)basic COWmmap 与 COW 二、缺页异常(page fault)分类①软性缺页异常(soft page fault)②硬性缺

Android Q app内存压缩优化方案介绍

Android Q app内存压缩优化方案介绍 原创文章,谢绝转载! Android Q新增了部分系统性能优化方案,这里简单学习下,本篇文章先分析app compaction。 一、愿景: 在保证后台进程尽量不被杀的基础上减少它们的内存占用。 二、思路: AMS与Kernel层联动对满足一定条件的App进行内存压缩。 goog

ChCore Lab1 机器启动

本文为阅读上海交大ipads研究所陈海波老师等人所著的《现代操作系统:原理与实现》的课程实验(LAB1)的学习报告。 电子书目录: 《现代操作系统:原理与实现》 PPT及课程地址:SE315 /2021 /Welcome Exercise one 阅读《ARM指令集参考指南》的A1、A3和D部分,以熟悉ARM ISA。请做好阅读笔记,如

链接脚本再探和VMA与LMA

链接脚本简单描述 连接脚本的描述都是以节(section)的单位的,网上也有很多描述链接脚本语法的好文章,再不济还有官方的说明文档可以用来学习,其实主要就是对编译构建的整个过程有了深入的理解后就能对链接脚本的理解更加容易了,我这里只是简单的记录一下链接脚本最基础核心的内容。链接

linux 逆向映射机制浅析

闲话不多说,之前一个问题是想要根据物理页框号得到映射的虚拟地址,一时间不知道如何下手了,在群里和一个朋友讨论了一番,记得之前看swap机制的交换缓存时,记载说系统当要换出一个页面时,可以很容易找到使用该页面的所有进程,然后撤销映射。这一点也就成了我的突破口。经过对源码的一番

Linux中匿名页的反向映射【转】

转自:https://www.dazhuanlan.com/2019/11/14/5dcd1e7420eb8/?__cf_chl_jschl_tk__=0aefb9e1da0873122a91c08e603da73bc881a913-1601304759-0-Ad5C4FdU3_dfZ1AdSWQNinV2tgnWg1J1IpYA1HpeDCEkivJ1mn-By1TdiM_lx8C4dG9tKMkkS1guo_Tcmigvz8XzKH7Y0gM9MhW0CxnL5ip6EVhCGUxtaUq2UKuvo

linux内存源码分析 - 内存回收(匿名页反向映射)【转】

转自:https://www.cnblogs.com/tolimit/p/5398552.html 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/   概述   看完了内存压缩,最近在看内存回收这块的代码,发现内容有些多,需要分几块去详细说明,首先先说说匿名页的反向映射,匿名页主要用于进程地址空间的堆、栈、还有私有

想掌握Android面试官必问的 Binder 机制?那别想绕开 Binder 驱动源码分析!

Binder 是 Android 系统的进程间通信机制,是了解 Android 运行机制必须要掌握的一个知识点,更是一线企业面试必问的知识点!比如: binder 有什么优势?(字节) binder 一次拷贝原理?(腾讯) Intent 传递大数据限制?(阿里) AIDL 原理?(字节) 谈谈你对 binder 驱动的了解?(字节) 你都能回答上来吗!? 到底

Linux kernel 绝对路径之d_path篇

摘自:https://blog.csdn.net/cenziboy/article/details/8761621一. d_path函数说明 d_path 是内核提供的根据dentry和vfsmount获取绝对路径函数 此函数有2个版本,以内核版本2.6.25为分界 extern char *d_path(const struct path *, char *, int);  extern char * d_path(struct den