一、内存管理单元MMU介绍内存管理单元简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。MMU使得每个用户进程拥有自己独立的地址空间,并通过内存访问权限的检查保护每个进程所用的内存不被其他进程破坏。重点就在于地址映射:页表的结构与建立、映射的过程。1、S3C2440MMU...
分类:
其他好文 时间:
2015-01-27 00:14:10
阅读次数:
383
windows TLS (线程本地存储)
一、TLS简述和分类
我们知道在一个进程中,所有线程是共享同一个地址空间的。所以,如果一个变量是全局的或者是静态的,那么所有线程访问的是同一份,如果某一个线程对其进行了修改,也就会影响到其他所有的线程。不过我们可能并不希望这样,所以更多的推荐用基于堆栈的自动变量或函数参数来访问数据,因为基于堆栈的变量总是和特定的线程相联系的。
不...
分类:
编程语言 时间:
2015-01-26 21:06:12
阅读次数:
258
一:kmap()和kunmap()函数永久内核映射允许内核建立高端页框到内核地址空间的长期映射。他使用主内核页表中一个专门的页表,其页表地址存放在pkmap_page_table中,页表包含512项或1024项,因此,内核一次最多访问2M或4M的高端内存(地址范围是 4G-8M 到 4G-4M 之间...
分类:
系统相关 时间:
2015-01-26 21:02:29
阅读次数:
194
一:内存分段和分页。点击打开链接每个用户空间的linux进程都有3G的地址空间,(虚拟地址空间3G-4G空间是linux内核使用的),用户空间看到的进程地址都是指虚拟地址空间,然后操作系统通过MMU再将虚拟地址映射到实际的物理地址。分段:就是将整个程序映射到linux内存的物理地址,假设有两个进程 ...
分类:
系统相关 时间:
2015-01-26 20:58:14
阅读次数:
157
一,为什么需要高端内存答:对于32位机器,linux虚拟内存最大为4G,其中3-4G空间是用作内核空间,考虑到如果物理内存大于1G,那么物理内存不能得到完全的映射,因此,Linux 规定“内核直接映射空间” 最多映射 896M 物理内存,ARM体系架构上有高端内存的概念,不过不是固定在896M以上的...
分类:
系统相关 时间:
2015-01-26 20:50:33
阅读次数:
302
1,ARM MMUARM体系结构与编程第五章MMU的基本概念:MMU基本原理系统通过MMU将物理地址映射成虚拟地址,最小单位为页,虚拟地址空间一个页对应物理地址的一个页框ARM MMU原理
分类:
系统相关 时间:
2015-01-26 20:49:19
阅读次数:
171
1,kmalloc()函数和vmalloc()函数的区别:kmalloc()函数分配的内存是物理上连续的,而Vmalloc()函数分配的内存仅仅是虚拟地址连续的,正常内核编程通常使用kmalloc(),这主要是处于性能的考虑,因为vmalloc()将物理不连续的页转换为虚拟地址空间上连续的页,必须专...
分类:
系统相关 时间:
2015-01-26 20:38:06
阅读次数:
176
变量引用: 引用的作用就是给变量起个别名,假如有一个变量a,想给它起个别名b, 可以这么写:int a;//定义a是整型变量。int &b=a;//声明b是a的引用。 上面就是b是a的引用,即b是a的别名。在上面“&”是引用声明符,并不代表地址。a和b占同一个地址空间和内存单元。声明b是...
分类:
编程语言 时间:
2015-01-24 23:59:42
阅读次数:
343
基础数据类型直接在栈空间分配, 方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收。 引用数据类型,需要用new来创建,既在栈空间分配一个地址空间,又在堆空间分配对象的类变量 。 方法的引用参数,在栈空间分配一个地址空间,并指向堆空间的对象区,当方法调用完成后从栈空间回收。局部变量 ne...
分类:
编程语言 时间:
2015-01-22 00:06:23
阅读次数:
187
本文总结一下,Linux下面几种访问内存的方式方法。相关资料转载自:Linux 内存与I/O访问 X86体系结构下,内存空间分为I/O空间和内存空间,I/O空间通过特定的指令in、out来访问,内存空间采用mov等指令访问。 arm体系结构下,内存空间和I/O空间统一划分,他们在一个地址空间内。 在...
分类:
其他好文 时间:
2015-01-21 15:03:41
阅读次数:
237