对PostgreSQL中 共享内存指针的再认识
2012-11-06 17:32
281 查看
开始
先给 shmem.c 中增加代码(用来打印全局变量 ShmemIndex)
然后,分别在 bgwriter.c 和 walwriter.c 中,增加如下代码:
然后,启动运行后,出现:
得出的结论是,所有的后台进程,恐怕其拥有的指向共享内存的指针,其中的地址完全相同。也就是它们都指向一个共同的共享内存。
结束
先给 shmem.c 中增加代码(用来打印全局变量 ShmemIndex)
void getmemPointer() { fprintf(stderr,"ShmemIndex ShmemIndex is %ld \n", ShmemIndex); return; }
然后,分别在 bgwriter.c 和 walwriter.c 中,增加如下代码:
/* * Main entry point for bgwriter process * * This is invoked from AuxiliaryProcessMain, which has already created the * basic execution environment, but not enabled signals yet. */ void BackgroundWriterMain(void) { //added by gaojian fprintf(stderr,"BackgroundWriterMain........"); getmemPointer(); … }
/* * Main entry point for walwriter process * * This is invoked from AuxiliaryProcessMain, which has already created the * basic execution environment, but not enabled signals yet. */ void WalWriterMain(void) { //added by gaojian fprintf(stderr,"WalWriterMain..........."); getmemPointer(); ...... }
然后,启动运行后,出现:
[postgres@localhost bin]$ ./postgres -D /usr/local/pgsql/data LOG: database system was shut down at 2012-11-06 16:59:15 CST BackgroundWriterMain........ShmemIndex ShmemIndex is 128175904 WalWriterMain...........ShmemIndex ShmemIndex is 128175904 LOG: autovacuum launcher started LOG: database system is ready to accept connections
得出的结论是,所有的后台进程,恐怕其拥有的指向共享内存的指针,其中的地址完全相同。也就是它们都指向一个共同的共享内存。
结束
相关文章推荐
- PostgreSQL 后台进程对共享内存的指针
- PostgreSQL的内存管理机制十一:初始化共享内存shared memory及其哈希表索引
- 笔记:shmat 共享内存中,如果包含指针,指针数据出错的原因
- 共享内存不能使用指针《转载》
- PostgreSQL 聚合函数共享申请的内存空间
- PostgreSQL启动过程中的那些事七:初始化共享内存和信号十九:shmem中初始化BTree相关结构
- PostgreSQL启动过程中的那些事七:初始化共享内存和信号五:shmem中初始化multixact 编辑
- 风险指针(Hazard Pointer) 内存空间共享模型
- PostgreSQL启动过程中的那些事七:初始化共享内存和信号十三:shmem中初始化SharedInvalidationState
- PostgreSQL启动过程中的那些事七:初始化共享内存和信号一:初始化shmemIndex和信号
- 共享内存内使用指针引起的一个问题。
- go语言笔记——切片底层本质是共享数组内存!!!绝对不要用指针指向 slice切片本身已经是一个引用类型就是指针
- PostgreSQL启动过程中的那些事七:初始化共享内存和信号八:shmem中初始化常规锁管理器
- C++虚拟继承中_对象内存的分布_虚继承会多余分配虚表v-tab的指针vptr_图1-1清楚的描述了虚继承类对象内存的分布_转载淘宝共享数据平台
- 共享内存能否存放带有指针的结构体?
- PostgreSQL启动过程中的那些事七:初始化共享内存和信号七:shmem中初始化bufferpool
- PostgreSQL启动过程中的那些事七:初始化共享内存和信号十二:shmem中初始化SharedBackendStatus
- 共享内存区一定要使用偏移量,而非指针!
- PostgreSQL启动过程中的那些事七:初始化共享内存和信号十四:shmem中初始化PMSignal
- PostgreSQL启动过程中的那些事七:初始化共享内存和信号十八:shmem中初始化WalSender和WalRecv相关结构