共享内存初始化

现在就来看看共享内存的初始化(过程是非常复杂的,也看了好多次)
1.内存池(其实这个也是放到共享内存里面)
{
    其中包括小,中,大三种模式,就以小举个例子
    1.是否初始化m_镜像,表示2是否初始化,
    2.托管内存队列:就是把shareDataEx类型的对象填充到托管的内存队列中
    3.内存池:针对内存池分配的内存,这个应该和托管的队列是有联系的
}

进程锁:boost进程锁

共享内存:真正交互的是这个内存,到时细看下,这个和内存池是怎么交互的

m_a2b--->GS->NET(名字叫"网络")
m_b2a--->NET->GS(名字叫"网络-回发")

2.接下来就创建了子进程
NET进程开始从共享内存读取,读取对于共享内存的地址,共享内存是在GS初始化的时候建立的
时间: 2024-11-03 21:46:03

共享内存初始化的相关文章

一个基于共享内存的ipc通信框架

一个基于共享内存的ipc通信框架 与共享内存相关的操作主要包括共享内存的初始化, 共享内存的释放, 共享内存的锁的相关操作, 在这里操作共享内存的环境是: 1 多个进程没有亲缘关系, 也没有server/client关系, 是多个不相关进程并发操作共享内存 2 共享内存一开始不存在, 由第一个访问他的进程创建 3 当共享内存退出时, 由最后一个离开的进程释放共享内存, 并清除信号量 在这个问题之中, 主要有两个比较大的问题: 1 怎样新建并初始化共享内存 新建共享内存的数据都可以用信号量来控制,

Nginx之共享内存与slab机制

1. 共享内存 在 Nginx 里,一块完整的共享内存以结构体 ngx_shm_zone_t 来封装,如下: typedef struct ngx_shm_zone_s ngx_shm_zone_t; typedef ngx_int_t (*ngx_shm_zone_init_pt) (ngx_shm_zone_t *zone, void *data); typedef struct { /* 执行共享内存的起始地址 */ u_char *addr; /* 共享内存的长度 */ size_t s

服务器打开共享内存的初始化

服务器共享内存以及客户端打开服务器获得通知过程 打开GS就会进行共享内存的初始化,过程很复杂,看了很多次,今天看的时候终于了解了大概了 bool DataLayer::init() { int pid = GetCurrentProcessId(); auto path = Plug::GetCurrentPath(); path += L"pid.txt"; auto file = _wfopen(path.c_str(), L"wb"); char buf[10

(转载)linux下的僵尸进程处理SIGCHLD信号Linux环境进程间通信(五): 共享内存(下)

Linux环境进程间通信(五): 共享内存(下) 在共享内存(上)中,主要围绕着系统调用mmap()进行讨论的,本部分将讨论系统V共享内存,并通过实验结果对比来阐述两者的异同.系统V共享内存指的是把所有共享数据放在共享内存区域(IPC shared memory region),任何想要访问该数据的进程都必须在本进程的地址空间新增一块内存区域,用来映射存放共享数据的物理内存页面. 系统调用mmap()通过映射一个普通文件实现共享内存.系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内

由共享内存引发的思考

1.共享内存段被映射进进程空间之后,存在于进程空间的什么位置?共享内存段最大限制是多少? 存在于进程数据段,最大限制是0x2000000Byte 将一块内存映射到两个或者多个进程地址空间.通过指针访问该共享内存区.一般通过mmap将文件映射到进程地址共享区. Linux对共享内存的实现,在2.6采用了内存映射技术.对于内存共享,主要集中在三个内核函数,他们是do_shmat,sys_shmat和sys_shmdt.其中,sys_shmat调用了do_shmat最终实现了共享内存的attach.s

ACE框架 基于共享内存的进程间通讯

ACE框架将基于共享内存的进程间通讯功能,如其它IO组件或IPC组件一样,设计成三个组件.流操作组件ACE_MEM_Stream,连接器组件ACE_MEM_Connector,以及接收连接组件ACE_MEM_Accpter.ACE框架为基于共享内存的进程间通讯提供了两种数据传输(分发deliver)策略.一种是使用生产者-消费者队列的一对多的多用户MT策略,另一种是使用socket流的可以使用反应器响应数据接收事件的Reactor策略.不论哪一种策略都要通过socket进行TCP连接,并进行进程

C# 进程间通信(共享内存)

原文:C# 进程间通信(共享内存) 进程间通信的方式有很多,常用的方式有: 1.共享内存(内存映射文件,共享内存DLL). 2.命名管道和匿名管道. 3.发送消息 本文是记录共享内存的方式进行进程间通信,首先要建立一个进程间共享的内存地址,创建好共享内存地址后,一个进程向地址中写入数据,另外的进程从地址中读取数据. 在数据的读写的过程中要进行进程间的同步. 进程间数据同步可以有以下的方式 1. 互斥量Mutex 2. 信号量Semaphore 3. 事件Event 本文中进程间的同步采用 信号量

进程间通信(9) - 共享内存(System V)

1.前言 本篇文章的所有例子,基于RHEL6.5平台(linux kernal: 2.6.32-431.el6.i686). 2.介绍 共享内存也是一种IPC,它是目前最快的IPC,它的使用方式是将同一个内存区映射到共享它的不同进程的地址空间中,这样这些进程间的通信就不再需要通过内核,只需对该共享的内存区域进程操作就可以了. 共享内存与其他的进程间通信最大的优点是:数据的复制只有两次,一次是从输入文件到共享内存区,一次从共享内存区到输出文件.而其他的则是需要复制4次:服务器将输入文件读入自己的进

进程间通信IPC:消息队列,信号量,共享内存

2015.3.4星期三 阴天 进程间通信:IPC 文件对象:记录文件描述符,文件开关等 IPC标示符:系统全局的流水号两个进程要通信,打开的是唯一的对象进行通讯,通过key操作 XSI IPC:消息队列,信号量,共享内存. ipcs 查看ip对象共享内存,信号量,消息队列等信息ipcrm 删除一个IP对象 Linux为用户提供了完善的,强大的网络功能完善的内置网络:其他操作系统不包含如此紧密的和内核结合在一起的网络部分 共享内存标示符的获取有两种方法:ftok(pathname,id)另一个是K