首先简单说一下标准库中malloc实现原理:
标准库内部通过一个双向链表,管理在堆中动态分配的内存。
malloc函数分配内存时会附加若干(通常是12个)字节,存放控制信息。
该信息一旦被意外损坏,可能在后续操作中引发异常。
mmap/munmap 底层不维护任何东西,只是返回一个首地址,所分配内存位于堆中。
brk/sbrk 底层维护一个...
分类:
其他好文 时间:
2014-10-12 15:23:58
阅读次数:
224
IPC是进程间通信的简称.传统上该术语描述的是运行在某个操作系统之上的不同进程间消息传递的不同方式.我们讨论分为四个领域:消息传递(管道,FIFO,消息队列(system v消息队列,posix消息队列));同步(互斥锁,条件变量,读写锁,信号灯)共享内存区(匿名共享内存区,有名共享内存区)过程调用...
分类:
系统相关 时间:
2014-10-11 19:06:56
阅读次数:
237
共享内存的方式原理就是将一份物理内存映射到不同进程各自的虚拟地址空间上,这样每个进程都可以读取同一份数据,从而实现进程通信。因为是通过内存操作实现通信,因此是一种最高效的数据交换方法。共享内存在 Windows 中是用 FileMapping 实现的,从具体的实现方法上看主要通过以下几步来实现:1、...
星期三,2013年11月6日volatile关键字 : 1. 与synchronized几乎相同,但是volatile在多读少写的情况下,性能更优2. 用来定义成员变量时,可以保证多线程每次读取成员变量都是从共享内存中读取,保证值相等ConcurrentLinkedQueue:1. 无锁的并发线程安...
分类:
编程语言 时间:
2014-10-10 23:49:14
阅读次数:
332
简介
许多类型的驱动程序编程都需要了解一些虚拟内存子系统如何工作的知识当遇到更为复杂、性能要求更为苛刻的子系统时,本章所讨论的内容迟早都要用到本章的内容分成三个部分
讲述mmap系统调用的实现过程讲述如何跨越边界直接访问用户空间的内存页讲述了直接内存访问(DMA)I/O操作,它使得外设具有直接访问系统内存的能力
Linux的内存管理
地址类型
Linux是一个虚拟内存...
分类:
系统相关 时间:
2014-10-09 17:12:38
阅读次数:
279
Windows 从 Vista 開始又一次改动了其系统的权限管理机制,于是如今就会碰到一些 xp 能过而 win7 不能过的代码。比方 Service 程序和一般应用程序用共享内存的方式来通讯,CreateFileMapping 的第二个參数我们往往都是填 NULL 使用默认权限(Service 的...
分类:
其他好文 时间:
2014-10-09 00:22:47
阅读次数:
196
UNIX and Linux Shared Memory and Oracle
The UNIX and LINUX operating systems allocate memory based on an interprocess communication model (IPC) to manage memory segments for Oracle database envir...
分类:
数据库 时间:
2014-10-06 20:12:10
阅读次数:
341
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空...
分类:
其他好文 时间:
2014-10-06 18:13:40
阅读次数:
179
在动态网络下实现分布式共享存储http://cacm.acm.org/magazines/2014/6/175173-implementing-distributed-shared-memory-for-dynamic-networks译者序 共享内存系统是普通单机程序开发者熟悉的开发范式,通过简单...
分类:
其他好文 时间:
2014-10-03 14:06:44
阅读次数:
291
概述1、Linux使用的进程间通信方式主要包括:(1)管道(pipe)和有名管道 (2)信号(signal) (3)共享内存 (4)消息队列 (5)信号量 (6)套接字(socket)2、问:为什么进程间需要通信?(1)数据传输 一个进程需要将它的数据发送给另外一个进程(2)资源共享 ...
分类:
其他好文 时间:
2014-10-02 18:46:03
阅读次数:
183