一.共享内存数据结构
对于每个共享内存区,内核维护如下信息结构,定义在, 在ubuntu中路径:/usr/include/linux/shm.h
二. System V共享内存函数:
#include
#include
int shmget(key_t key, size_t size, int shmflg);
void *shmat(...
分类:
其他好文 时间:
2015-05-24 08:55:18
阅读次数:
224
linux应用开发-内存共享
一 虚拟内存
程序运行时,将需要的数据载入物理内存,其他的载入虚拟内存
内核态和用户态是系统内的方式
二 命令ipcs查看系统当前的通信方式
三 操作函数
获取共享内存地址shmget
映射到进程空间shmat
操作空间memcpy
关闭映射shmdt
根据需要是否删除该空间shmctl
...
分类:
系统相关 时间:
2015-05-18 14:48:01
阅读次数:
174
共享内存API#include
#include
int shmget(key_t key, size_t size, int shmflg);
void *shmat(int shmid, const void *shmaddr, int shmflg);
int shmdt(const void *shmaddr);
int shmctl(int shmid, int cmd, stru...
分类:
系统相关 时间:
2015-02-19 15:06:52
阅读次数:
228
shmdt函数功能:将共享内存段与当前进程脱离原型:int shmdt(const void *shmaddr);参数: shmaddr: 由shmat所返回的指针 返回值: 成功返回0;失败返回-1//实践:运行程序,观察ipcs输出
int main()
{
//获取或者打开共享内存
int shmid = shmget(0x15764221, 1024 * siz...
分类:
系统相关 时间:
2014-11-27 16:16:35
阅读次数:
332
函数: (1)int shmget(key_t key, int size, int shmflg),开辟或使用一块共享内存。 (2)void *shmat(int shmid, const void *shmaddr, int shmflg), 将参数shmid所指向的共享内存与当前进程连接。当使用某共...
分类:
系统相关 时间:
2014-10-29 00:30:39
阅读次数:
217
1) 用ftok()函数获得一个ID号.2) shmget()用来开辟/指向一块共享内存的函数3) shmat()将这个内存区映射到本进程的虚拟地址空间。4) shmdt()函数删除本进程对这块内存的使用5) shmctl() 控制对这块共享内存的使用1) mmap()系统调用使得进程之间通过映射同...
分类:
系统相关 时间:
2014-10-28 00:18:18
阅读次数:
387
本文首先介绍了众所周知的共享内存API,然后介绍了相关的内核主要数据结构,并逐一分析了shmget、shmat、数据访问、shmdt的内核实现及数据结构之间的动态关系,从数据的关联图即可一窥共享内存的实现机制。...
分类:
系统相关 时间:
2014-09-23 01:59:03
阅读次数:
537