巴特西
首页
Python
Java
PHP
IOS
Andorid
NodeJS
JavaScript
HTML5
mmap读写物理内存
利用mmap /dev/mem 读写Linux内存
转载:http://blog.csdn.net/zhanglei4214/article/details/6653568 使用 hexedit /dev/mem 可以显示所有物理内存中的信息. 运用mmap将/dev/mem map出来,然后直接对其读写可以实现用户空间的内核操作. 以下是我写的一个sample #include<stdio.h> #include<unistd.h> #include<sys/mman.h> #include<sys/types.
devmem读写物理内存和devkmem读取内核虚拟内存
关键词:/dev/mem./dev/kmem.mmap.__va.__pa.remap_pfn_range等等. 在日常工作中常有直接操作寄存器或者某一物理地址的需求,busybox中提供了devmem.通过它可以读写物理内存. 它的实现借助mmap和/dev/mem,通过mmap将/dev/mem物理地址映射到用户空间,devmem就可以像操作虚拟地址一样进行读写. hexdump同样也可以类似devmem的功能. 如果需要在用户空间获取内核某个变量值,可以使用devkmem通过/dev/km
Linux读写物理内存
一.基础知识 1.打开设备文件: mem是一个字符设备文件,是计算机主存的一个映像.通常只有root用户对其有读写权限.因此只有root用户能进行这些操作. 如果要打开设备文件/dev/mem,需要系统调用open()函数,作用是打开一个文件或设备,其函数原型为: int open(const char *path, int flags); 返回值:如果操作成功则返回一个文件描述符,否则返回-1 形 参: path 被打开文件的路径即文件名描述. flags 文件的访问模式描述,可常用的选项见下
Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式
Linux就这个范儿 第15章 七种武器 linux 同步IO: sync.fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式 台湾作家林清玄在接受记者采访的时候,如此评价自己30多年写作生涯:“第一个十年我才华横溢,‘贼光闪现’,令周边黯然失色:第二个十年,我终于‘宝光现形’,不再去抢风头,反而与身边的美丽相得益彰:进入第三个十年,繁华落尽见真醇,我进入了‘醇光初现’的阶段,真正
mmap内存映射
http://blog.csdn.net/kongdefei5000/article/details/70183119 内存映射是个很有用,也很有意思的思想.我们都知道操作系统分为用户态和内核态,用户态是不能直接和物理设备打交道的,如果想把硬盘的一块区域读到用户态,则需要两次拷贝(硬盘->内核->用户),但是内存映射的设计只需要发生一次的拷贝,大大的提高了读取数据的效率.那么内存映射的原理和内核是如何实现的呢? 因为内存映射涉及到虚拟内存的管理,虚拟内存到物理内存的映射,因此在详细介绍内存映射
几个系统调用分析 glibc中的malloc调用和共享内存原理
本文主要分析内存以及I/O相关的系统调用和库函数的实现原理,根据原理给出在使用过程中需要注意的问题和优化的侧重点,本文涉及到的系统调用包括readahead,pread/pwrite,read/write,mmap,readv/writev,sendfile,fsync/fdatasync/msync,shmget,malloc. 本文先简单介绍应用程序对内存的使用以及I/O系统对内存的使用的基本原理,这对理解上述系统调用和库函数的实现有很大帮助. 1 内存管理基础 Linux对物理内存的管理是
宋宝华:swappiness=0究竟意味着什么?
http://mp.weixin.qq.com/s/BixMISiPz3sR9FDNfVSJ6w 本文解释swappiness的作用,以及swappiness=0究竟意味着什么. 内存回收 我们都知道,Linux一个进程使用的内存分为2种: file-backed pages(有文件背景的页面,比如代码段.比如read/write方法读写的文件.比如mmap读写的文件:他们有对应的硬盘文件,因此如果要交换,可以直接和硬盘对应的文件进行交换),此部分页面进page cache anonymous
Linux高级调试与优化——内存管理
1.物理地址和虚拟地址 Linux采用页表机制管理内存,32位系统中页大小一般为4KB,物理内存被划分为连续的页,每一个页都有一个唯一的页号. 为了程序的的可移植性,进程往往需要运行在flat memory中:另外为了方便内核统一管理所有进程的内存布局.诸如此类的原因,Linux进程运行在虚拟地址空间(几乎所有现代操作系统都是这么设计的),虚拟地址空间也是以页为单位进行管理. Linux进程的虚拟地址空间在实际使用的过程中需要映射到物理内存地址空间中,这是通过MMU和TLB硬件单元实现的. 虚拟
Windows内核 内存管理基本概念
内存管理概念: 1)物理内存 PC上有三条总线:数据总线.地址总线和控制总线.32位CPU的寻址能力是4GB个字节,用户最多可以使用4GB的真实物理内存.PC中很多设备都提供了自己的设备内存,例如显卡就提供了自己的显存.这部分内存会映射到PC的物理内存上,也就是读写这段物理地址,其实会读写的设备内存地址,而不会读写物理内存地址. 2)虚拟内存地址 Windows所有程序(包括Ring0层和Ring3层的程序)可以操作的都是虚拟内存.之所以称为虚拟内存,是因为对它的所有操作最终都会变成一系列对真实
Android系统启动过程-uBoot+Kernel+Android
摘要:本文是参考大量网上资源在结合自己查看源代码总结出来的,让自己同时也让大家加深对Android系统启动过程有一个更加深入的了解!再次强调,本文的大多数功劳应归功于那些原创者们,同时一些必要的参考链接我会一一附上. 注:由于本人采用Exynos4412开发板学习,所以本文大部分资料都是基于此处理器的 简介:对于整个Android系统的启动总的来说分为三个阶段: BootLoader引导即uBoot.bin linux内核启动即zImage Android系统启动即ramdisk.img与sys
剑指Offer——线程同步volatile与synchronized详解
(转)Java面试--线程同步volatile与synchronized详解 0. 前言 面试时很可能遇到这样一个问题:使用volatile修饰int型变量i,多个线程同时进行i++操作,这样可以实现线程安全吗?提到线程安全.线程同步,我们经常会想到两个关键字:volatile和synchronized,那么这两者有什么区别呢? 1. volatile与synchronized介绍 volatile是变量修饰符,其修饰的变量具有可见性(可见性也就是说一旦某个线程修改了该被volatile修饰的变
MIT-6.828-JOS-lab6:Network Driver
MIT-6.828 Lab 6: Network Driver (default final project) tags: mit-6.828 os 概述 本lab是6.828默认的最后一个实验,围绕网络展开.主要就做了一件事情. 从0实现网络驱动. 还提到一些比较重要的概念: 内存映射I/O DMA 用户级线程实现原理 The Network Server 从0开始写协议栈是很困难的,我们将使用lwIP,轻量级的TCP/IP实现,更多lwIP信息可以参考lwIP官网.对于我们来说lwIP就像一
利用Linux文件系统内存cache来提高性能
https://www.linuxjournal.com/article/6345 利用Linux文件系统内存cache来提高性能 本地磁盘文件->socket发送,4步骤数据流向: hard driver -> kernel space ---- [DMA copy] kernel space -> user space ---- [CPU copy] user space -> kernel space ---- [CPU copy] kernel space -> pr
实战经验 | Cassandra Java堆外内存排查经历全记录
背景 最近准备上线cassandra这个产品,同事在做一些小规格ECS(8G)的压测.压测时候比较容易触发OOM Killer,把cassandra进程干掉.问题是8G这个规格我配置的heap(Xmx)并不高(约6.5g)已经留出了足够的空间给系统.只有可能是Java堆外内存使用超出预期,导致RES增加,才可能触发OOM. 调查过程 0.初步怀疑是哪里有DirectBuffer泄漏,或者JNI库的问题.1.按惯例通过google perftools追踪堆外内存开销,但是并未发现明显的异常.2.然
超干货!Cassandra Java堆外内存排查经历全记录
背景 最近准备上线cassandra这个产品,同事在做一些小规格ECS(8G)的压测.压测时候比较容易触发OOM Killer,把cassandra进程干掉.问题是8G这个规格我配置的heap(Xmx)并不高(约6.5g)已经留出了足够的空间给系统.只有可能是Java堆外内存使用超出预期,导致RES增加,才可能触发OOM. 调查过程 0.初步怀疑是哪里有DirectBuffer泄漏,或者JNI库的问题.1.按惯例通过google perftools追踪堆外内存开销,但是并未发现明显的异常.2.然
【原创】(十四)Linux内存管理之page fault处理
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本:4.14 ARM64处理器,Contex-A53,双核 使用工具:Source Insight 3.5, Visio 1. 概述 上篇文章分析到malloc/mmap函数中,内核实现只是在进程的地址空间建立好了vma区域,并没有实际的虚拟地址到物理地址的映射操作.这部分就是在Page Fault异常
C++第三十三篇 -- 研究一下Windows驱动开发(一)内部构造介绍
因为工作原因,需要做一些与网卡有关的测试,其中涉及到了驱动这一块的知识,虽然程序可以运行,但是不搞清楚,心里总是不安,觉得没理解清楚.因此想看一下驱动开发.查了很多资料,看到有人推荐Windows驱动开发技术详解这本书,因此本篇文章也是基于这本书进行学习的.有些图片也是按照书上自己画的. Windows操作系统示意图 首先,需要下载相应的工具,将环境搭建起来,VS和WDK,由于我已经安装了VS2017,所以需要找对应版本的WDK(方法).如果想要查OS的版本,可以WIN+R输入winver就可以
[skill] mmap / fwrite / write linux磁盘读写的分层结构
转自:http://www.cnblogs.com/zhaoyl/p/5901680.html 看完此文,题目不言自明.转自 http://blog.chinaunix.net/uid-27105712-id-3270102.html 在Linux 开发中,有几个关系到性能的东西,技术人员非常关注:进程,CPU,MEM,网络IO,磁盘IO.本篇文件打算详细全面,深入浅出.剖析文件IO的细节.从多个角度探索如何提高IO性能.本文尽量用通俗易懂的视角去阐述.不copy内核代码. 阐述之前,要先有个大
Android平台上直接物理内存读写漏洞的那些事
/* 本文章由 莫灰灰 编写,转载请注明出处. 作者:莫灰灰 邮箱: minzhenfei@163.com */ 通过mmap直接操作物理内存的漏洞应该算是比較常见的一类漏洞了,在2012年.2013年的这段时间里,爆出了好几个物理内存读写相关的漏洞.主要是由于某些设备本身具有mmap物理内存的功能,可是其权限又是全局可读写的,最后,黑客通过精心构造的參数,patch相关函数或者数据结构达到权限提升的目的. 这种设备主要有下面几个 /dev/exynos-mem CVE-2012-6422
mmap和普通文件读写的区别和比较 &; mmap的注意点
参考 http://www.cnblogs.com/huxiao-tee/p/4660352.html 对linux文件系统不了解的朋友,请参阅我之前写的博文<从内核文件系统看文件读写过程>,我们首先简单的回顾一下常规文件系统操作(调用read/fread等类函数)中,函数的调用过程: 1.进程发起读文件请求. 2.内核通过查找进程文件符表,定位到内核已打开文件集上的文件信息,从而找到此文件的inode. 3.inode在address_space上查找要请求的文件页是否已经缓存在页缓存中.如
热门专题
docker 卸载 mysql
c#打开explorer 获取焦点
mac下安装Behinder(冰蝎)
antd 4.0 form表单渲染页面没有生效
linux 设置ipv4优先
Wpf 自定义实现数据显示
箭头函数没有this吗
rocketmq 开启自启动
子窗口在panel上显示不能随窗口大小变化
grep匹配某个字符出现两次
maven 淘宝镜像
objdump 反汇编
matlab两个一维数组合并
numpy 读取mongo
spring请求参数有"转义符
teamview 正在初始化会话特征
springboot jar相对路径shell文件运行
java随机生成6为整数
linux设置tab健四个空格
office 2016激活软件KMS