【0342】分配并初始化 Proc Signal 共享内存 (1)
1. Proc Signal (procsignal)共享内存
Postgres内核在启动postmaster守护进程时候, 会通过函数 ProcSignalShmemInit() 去为 Proc Signal 分配并初始化指定大小的共享内存空间。整个调用链路如下。
- (gdb) bt
#0ProcSignalShmemInit ()
at procsignal.c:118
#1 0x00000000008fc23a in CreateSharedMemoryAndSemaphores () at ipci.c:250
#2 0x000000000087d7bb in reset_shared () at postmaster.c:2666
#3 0x000000000087b3b5 in PostmasterMain (argc=3, argv=0x1003980) at postmaster.c:1020
#4 0x0000000000783156 in main (argc=3, argv=0x1003980) at main.c:210
1.1 统计 procsignal 所需共享内存大小
与创建Postgres内核其他共享内存空间一样, 每个xxxInit() 函数的第一步均是通过 xxxSize() 函数去计算所有的共享内存空间大小。 Proc Signa