System V 共享内存与信号量详解
1. System V 共享内存
1.1 映射结构差异
不同处理器的实际映射结构有所不同。UltraSPARC(SPARC V9)处理器实现了转换表(Translation Tables),由转换表项(TTEs)组成;SuperSPARC(SPARC V8)系统实现了页表(Page Tables),包含页表项(PTE)。它们本质上的功能相同,都是提供将虚拟地址映射到物理地址的方法。不过,这两种 SPARC 架构在内存管理单元(MMU)的实现上有很大差异。SPARC V8 定义了 SPARC 参考 MMU(SRMMU)并提供实现细节,而 SPARC V9 没有定义 MMU 实现,只是为芯片设计师提供了一些指导和边界,实际的 MMU 实现由芯片设计人员完成。此外,大量的内核代码(如转换表的创建和管理)都用于地址转换过程。
下面是一个简单的对比表格:
| 处理器架构 | 映射结构 | MMU 实现 |
| — | — | — |
| UltraSPARC(SPARC V9) | 转换表(Translation Tables) | 未定义,提供指导 |
| SuperSPARC(SPARC V8) | 页表(Page Tables) | 定义 SRMMU 并提供细节 |
1.2 ISM 与非 ISM 共享段
以数据库系统为例,数据库系统使用共享内存来缓存各种数据库对象,如数据、存储过程、索引等。假设配置了一个 2GB 的共享段,有 400 个数据库进程都连接到这个共享段。2GB 的 RAM 相当于 262,144 个 8KB 的页面。假设内核为每个页面映射需要维