一、地址空间映射 这里要说的是Intel构架下的CPU地址空间布局,注意这里没有说是内存地址空间布局。 我们说的内存通常是指DRAM,DRAM相对于CPU也可以算是外部设备,CPU地址空间是CPU访问外部设备过程中的一个概念,CPU除了访问DRAM外还会访问许多其他的设备。可以粗略的认为CPU地址空...
分类:
其他好文 时间:
2015-02-28 10:08:21
阅读次数:
205
1、EXC_BAD_ACCESS内存错误与NSZombieEnabledEXC_BAD_ACCESS是最常见的错误了,这个一般是访问了释放了的内存地址空间造成的。比如一个对象已经dealloc了,如果你仍向这个对象发送消息,就会出现这个错误。由于出现这个错误时,几乎不显示什么有用的信息,我们根本.....
分类:
移动开发 时间:
2015-02-03 10:45:38
阅读次数:
174
引言 最近无聊看了看征服C指针,看到函数的不定参数时想起在这方面还没有做过一些总结,只是略微了解一些,意识到其实完全不需要借用va_list,va_start,va_arg这些标准函数也可以自己实现操作,具体我们来看看。函数栈 首先我们需要了解一下linux下一个进程的内存地址空间是如何布局的,.....
分类:
其他好文 时间:
2015-01-16 19:01:21
阅读次数:
180
8086CPU地址总线宽度为20, 也就是说一个内存物理地址是5位,内存地址空间为1Mb;数据总线为16位;寄存器为16位。16位结构的CPU包括以下特性:1,运算符最多处理16位数据。2,寄存器最大宽度为16位。3,寄存器与运算器之间的通路是16位。这里就出现了一个问题,如果由16位推出20位的物...
分类:
其他好文 时间:
2014-12-11 15:18:03
阅读次数:
214
通常通过读写设备寄存器对设备进行编程,在X86系统上,有专门的IO指令进行编程,在其他诸如MIPS、SPARC这类系统上,通过将设备的寄存器映射到内存地址空间直接使用读写内存的方式对设备进行编程。 Radeon显卡提供两种方式对硬件进行编程,一种称为“推模式”(push mode)即直接写寄存...
分类:
系统相关 时间:
2014-11-29 08:24:23
阅读次数:
412
重写hashCode的成员变量发生变化,Set中对象无法找到 1、使用对象的hashCode函数来初步确定内存位置,如果该位置没有存储对象,则将此对象存放于此 2、如果hash函数直接计算出的内存地址空间已经有对象存在,则会...
分类:
编程语言 时间:
2014-10-18 12:46:49
阅读次数:
164
Varnish---原理及应用原理如下图:用户请求到达Varnish服务器,经由网卡将请求接入进来到达tcp/ip协议栈解封装后由varnish将报文中请求资源的uri进行hash计算,而后根据计算的得到的键,到进程维持的hash表对比,若键相同,则根据相应的键去值指针所标识的,内存地址空间或是硬盘地址..
分类:
其他好文 时间:
2014-09-30 04:54:13
阅读次数:
552
Linux对于内存的管理涉及到非常多的方面,这篇文章首先从对进程虚拟地址空间的管理说起。(所依据的代码是2.6.32.60)
无论是内核线程还是用户进程,对于内核来说,无非都是task_struct这个数据结构的一个实例而已,task_struct被称为进程描述符(process descriptor),因为它记录了这个进程所有的context。其中有一个被称为'内存描述符‘(memory de...
分类:
系统相关 时间:
2014-09-24 12:32:06
阅读次数:
365
buffer ---- flush()buffer是一个内存地址空间,Linux系统默认大小一般为4096(1kb),即一个内存页。主要用于存储速度不同步的设备或者优先级不同的 设备之间传办理数据的区域。通过buffer,可以使进程这间的相互等待变少。这里说一个通俗一点的例子,你打开文本编辑器编辑一...
分类:
其他好文 时间:
2014-09-17 20:06:02
阅读次数:
199
Linux虚拟内存的大小为2^32(在32位的x86机器上),内核将这4G字节的空间分为两部分。最高的1G字节(从虚地址0xC0000000到0xFFFFFFFF)供内核使用,称为“内核空间”。而较低的3G字节(从虚地址0x00000000到0xBFFFFFFF),供各个进程使用,称为“用户空间”。因为每个进程可以通过系统调用进入内核,因此,Linux内核空间由系统内的所有进程共享。于是,从具体进...
分类:
系统相关 时间:
2014-09-11 17:25:32
阅读次数:
267