目 录
前言
第一部分 Solaris内核简介
第1章 So1aris入门
1. 1 Solaris简史
1. 2 关键的不同之处
1. 3 内核概述
1. 3. 1 Solaris内核体系结构
1. 3. 2 内核的模块化实现
1. 4 进程. 线程和调度
1. 4. 1 两级线程模型
1. 4. 2 全局进程优先级和调度
1. 5 进程间通信
1. 5. 1 传统的UNIX IPC
1. 5. 2 System V IPC
1. 5. 3 POSDC IPC
1. 5. 4 高级Solaris IPC
1. 6 信号
1. 7 存储管理
1. 7. 1 全局内存分配
1. 7. 2 内核存储管理
1. 8 文件和文件系统
1. 8. 1 文件描述符和文件系统调用
1. 8. 2 虚拟文件系统结构
1. 9 I/0体系结构
第2章 内核服务
2. 1 访问内核服务
2. 2 进入内核模式
2. 2. 1 上下文
2. 2. 2 内核线程和中断上下文
2. 2. 3 UltraSPARC I&II陷阱
2. 3 中断
2. 3. 1 中断优先级
2. 3. 2 中断监控
2. 3. 3 处理器内部中断和交叉调用
2. 4 系统调用
2. 4. 1 一般的系统调用
2. 4. 2 快速陷阱系统调用
2. 5 内核标注表
2. 5. 1 Solaris 2. 6和7的标注表
2. 5. 2 Solaris 2. 5. 1标注表
2. 6 系统时钟
2. 6. 1 进程执行时间的统计
2. 6. 2 高按时钟中断
2. 6. 3 高频计时器
2. 6. 4 日期时间时钟
第3章 内核同步原语
3. 1 同步
3. 2 并行系统体系结构
3. 3 加锁和同步的硬件考虑
3. 4 关于同步对象的介绍
3. 4. 1 同步过程
3. 4. 2 同步对象操作向量
3. 5 互斥锁
3. 5. 1 概述
3. 5. 2 Solaris 7互斥锁的实现
3. 6 读/写锁
3. 6. 1 Solaris 7中的读/写锁
3. 6. 2 Solaris 2. 6中RW锁的差异
3. 6. 3 Solaris 2. 5. 1中的RW锁的差异
3. 7 旋转栅门和优先级继承
3. 7. 1 Solaris 7中的旋转栅门
3. 7. 2 Solaris 2. 5. 1和2. 6中的旋转栅门
3. 8 调度锁
3. 9 内核信号量
第4章 内核引导和初始化
4. 1 内核的目录层次
4. 2 内核引导和初始化
4. 2. 1 加载引导块
4. 2. 2 加载ufsboot
4. 2. 3 定位核心内核映像和链接
4. 2. 4 加载内核模块
4. 2. 5 创建内核结构. 资源和组件
4. 2. 6 完成引导过程
4. 2. 7 引导过程中创建系统内核线程
4. 3 内核模块的加载和链接
第二部分 Solaris内存管理
第5章 So1aris内存体系结构
5. 1 为什么需要虚拟内存系统
5. 2 模块化的实现
5. 3 虚拟地址空间
5. 3. 1 可执行代码和库的共享
5. 3. 2 SPARC地址空间
5. 3. 3 Intel芯片地址空间的布局
5. 3. 4 进程内存分配
5. 3. 5 栈
5. 3. 6 地址空间管理
5. 3. 7 虚拟内存保护模式
5. 3. 8 地址空间的页错误
5. 4 内存的段
5. 4. 1 vnod6段:seg_vn
5. 4. 2 写入时拷贝
5. 4. 3 页保护与通知
5. 5 匿名内存
5. 5. 1 匿名内存层
5. 5. 2 Swapfs层
5. 5. 3 匿名内存统计
5. 6 虚拟内存观测点
5. 7 全局页管理
5. 7. 1 页——So1aris内存的基本单元
5. 7. 2 页的Hash列表
5. 7. 3 特定MMU的页结构
5. 7. 4 物理页列表
5. 7. 5 页级函数接口
5. 7. 6 页的中止
5. 7. 7 页面大小
5. 7. 8 页的分配
5. 8 页扫描程序
5. 8. 1 页扫描程
5. 8. 2 出页算法和参数
5. 8. 3 共享库的优化
5. 8. 4 优先级分页算法
5. 8. 5 页扫描程序的实现
5. 8. 6 内存调度程序
5. 9 硬件地址转换层
5. 9. 1 虚拟内存上下文和地址空间
5. 9. 2 UltraSPARC-I和II型的HAT
5. 9. 3 地址空间标识符
5. 9. 4 大页面
第6章 内核内存
6. 1 内核虚拟地址规划
6. 1. 1 内核地址空间
6. 1. 2 内核正文段和数据段
6. 1. 3 虚拟内存数据结构
6. 1. 4 SPARC V8和V9内核的
核心程序
6. 1. 5 可加载的内核模块正文和数据
6. 1. 6 内核地址空间和段
6. 2 内核内存的分配
6. 2. 1 内核映射
6. 2. 2 资源映射分配程序
6. 2. 3 内核内存段驱动程序
6. 2. 4 内核内存片分配程序
第7章 内存的监控
7. 1 内存监控的简单介绍
7. 1. 1 物理内存总数
7. 1. 2 内核内存
7. 1. 3 空闲内存
7. 1. 4 文件系统缓存内存
7. 1. 5 内存不足的检测
7. 1. 6 交换空间
7. 2 内存监控工具
7. 3 vmstat命令
7. 3. 1 空闲内存
7. 3. 2’交换空间
7. 3. 3 页调度计数器
7. 3. 4 进程内存的使用情况, ps和
pmap命令
7. 4 MemToo1:没有绑定的内存工具
7. 4. 1 Memtoo1的实用程序
7. 4. 2 命令行工具
7. 4. 3 MemToo1的图形用户界面
7. 5 其他内存工具
7. 5. 1 运行空间的监视程序:wsm
7. 5. 2 一个扩充vmstat的命令:memstat
第三部分 线程. 进程和IPc
第8章 Solaris多线程的进程体系
结构
8. 1 So1aris进程简介
8. 1. 1 进程的体系结构
8. 1. 2 进程映像
8. 2 进程结构
8. 2. 1 进程结构
8. 2. 2 用户区
8. 2. 3 轻量级进程
8. 2. 4 内核线程
8. 3 内核进程表
8. 3. 1 进程限制
8. 3. 2 LWP限制
8. 4 进程创建
8. 5 进程终止
8. 5. 1 LWP/kthead模型
8. 5. 2 deadthrow
8. 6 Procfs———进程文件系统
8. 6. 1 Procfs的实现
8. 6. 2 进程资源使用
8. 6. 3 微状态计数器
8. 7 信号
8. 7. 1 信号的实现
8. 7. 2 SICWAITING特殊信号
8. 8 会话和进程组
第9章 So1aris内核调度程序
9. 1 概述
9. 1. 1 调度等级
9. 1. 2 调度表
9. 2 内核调度程序
9. 2. 1 调度队列
9. 2. 2 线程优先级
9. 2. 3 调度程序功能
9. 3 内核睡眠/唤醒程序
9. 3. 1 条件变量
9. 3. 2 睡眠队列
9. 3. 3 睡眠过程
9. 3. 4 唤醒机制
9. 4 调度程序激活
9. 4. 1 用户线程激活
9. 4. 2 LWP池激活
9. 5 内核处理器控制和处理器集
9. 5. 1 处理器控制
9. 5. 2 处理器集
第10章 进程间通信
10. 1 通用System V IPC支持
10. 1. 1 模块创建
10. 1. 2 资源映射
10. 2 System共享内存
10. 2. 1 共享内存内核实现
10. 2. 2 相似共享内存
10. 3 System V信号量
10. 3. 1 信号量内核资源
10. 3. 2 System V信号量的内核实现
10. 3. 3 Solaris内部的信号量操作
10. 4 System V消息队列
10. 4. 1 消息队列使用的内核资源
10. 4. 2 消息队列的内核实现
10. 5 POSIX IPC
10. 5. 1 P0SIX共享内存
10. 5. 2 POSIX信号量
10. 5. 3 P0SIX消息队列
10. 6 Solaris门
10. 6. 1 门概述
Io. 6. 2 门实现
第四部分 文件和文件系统
第11章 So1aris文件和文件I/0
11. 1 Solaris的文件
11. 2 文件的应用程序编程接口
11. 2. 1 标准I/0
11. 2. 2 C运行期文件句柄
11. 2. 3 标准I/0缓冲区大小
11. 3 系统文件I/0
11. 3. 1 文件I/0系统调用
11. 3. 2 文件打开模式和文件描述符
标志
11. 4 异步I/0
11. 4. 1 文件系统异步I/0
11. 4. 2 内核异步I/0
11. 5 内存映射文件I/0
11. 5. 1 映射选项
11. 5. 2 为存储系统提供建议
11. 6 Solaris中的64位文件
11. 6. 1 Solaris 2. 0中的64位设备
支持
11. 6. 2 Solaris 2. 5. t中的以位文件
应用程序编程接口
11. 6. 3 Solaris 2. 6:大文件0S
11. 6. 4 文件系统对大文件的支持
第12章 文件系统综述
12. 1 为什么要有文件系统
12. 2 支持多个文件系统类型
12. 3 普通文件系统
12. 3. 1 分配和存储策略
12. 3. 2 文件系统容量
12. 3. 3 支持可变块大小
12. 3. 4 访问控制列表
12. 3. 5 文件系统日志报表
12. 3. 6 扩大和缩小文件系统
12. 3. 7 直接I/0
第13章 文件系统框架
13. 1 Solaris文件系统框架
13. 1. 1 统一的文件系统接口
13. 1. 2 文件系统框架程序
13. 2 vnode
13. 2. 1 vnode类型
13. 2. 2 Vnode方法
13. 2. 3 vnde引用计数
13. 2. 4 分页vnde缓存的接口
13. 2. 5 vnode页上的块I/0
13. 3 vfs对象
13. 3. 1 文件系统交换表
13. 3. 2 安装的vfs列表
13. 4 文件系统I/0
13. 4. 1 内存映射I/0
13. 4. 2 系统调用read()和write()
13. 4. 3 Seg_map段
13. 5 路径名管理
13. 5. 1 lookupname()和lookuppn()方g
13. 5. 2 vop_lookup()方法
13. 5. 3 vop_readdir()方法
13. 5. 4 路径名遍历函数
13. 5. 5 目录名查询缓存
13. 5. 6 文件系统模块
13. 5. 7 安装和拆卸
13. 6 文件系统刷新守护进程
第14章 UNIX文件系统
14. 1 UFS发展历史
14. 2 UFS磁盘格式
14. 2. 1 UFSInode
14. 2. 2 UPS目录
14. 2. 3 UFS硬链接
14. 2. 4 UFS结构
14. 2. 5 磁盘块定位
14. 2. 6 UFS块分配
14. 2. 7 UFS分配和参数
14. 3 UFS的实现
14. 3. 1 文件映射到磁盘块
14. 3. 2 读写UFS文件的方法
14. 3. 3 核心内的UFS Inode
14. 3. 4 UF5目录和路径名
第15章 Solaria文件系统缓存
15. 1 文件缓存简介
15. 1. 1 Solaris页缓存
15. 1. 2 块缓冲区缓存
15. 2 页缓存和虚存系统
15. 3 分页对系统到底好不好
15. 4 影响文件系统性能的分页参数
15. 5 用直接I/0绕过页缓存
15. 5. 1 UFS直接I/0
15. 5. 2 Veritas VxFS的直接I/0
15. 6 目录名缓存
15. 7 Inode缓存
15. 7. 1 UFSInode缓存大小
15. 7. 2 VxFSInode缓存
第五部分 吩 录
附录A 内核的调整. 开关和限制参数
附录B 内核虚拟地址映射
附录C 一个Procfs程序示例
参考文献