出版社: 机械工业出版社
副标题: 第2版
原作名: Solaris Internals: Solaris 10 and OpenSolaris Kernel Architecture (2nd Edition)
译者: Sun中国工程研究院
出版年: 2007-6
页数: 594
定价: 75.00元
丛书: Sun公司核心技术丛书
ISBN: 9787111214854
内容简介 · · · · · ·
本书与其配套出版物《Solaris性能与工具》(该书已由机械工业出版社同步出版)共同提供了Solaris及OpenSolaris操作环境的最优秀、最全面的介绍。《Solaris内核结构》深入探索了Solaris操作系统的内部原理和体系结构;《Solanis性能与工具》阐释了大量实用工具的使用,为内核开发人员、系统程序员和系统管理员深入理解系统的行为及性能提供了系统化方法。
本书描述了Solaris10和OpenSolaris内核中所有主要子系统的算法和数据结构,对第1版进行了大幅修订,加入了很多新的内容。集成的Solaris工具和实用程序贯穿全书,目的是让读者细致观察到Solaris内核的工作过程,深入理解、分析系统的性能和行为,包括内存、进程、线程、文件系统、网络TCP/IP实现、资源管理工具,等等。
本书适合使用Solaris操作系统的各类技...
本书与其配套出版物《Solaris性能与工具》(该书已由机械工业出版社同步出版)共同提供了Solaris及OpenSolaris操作环境的最优秀、最全面的介绍。《Solaris内核结构》深入探索了Solaris操作系统的内部原理和体系结构;《Solanis性能与工具》阐释了大量实用工具的使用,为内核开发人员、系统程序员和系统管理员深入理解系统的行为及性能提供了系统化方法。
本书描述了Solaris10和OpenSolaris内核中所有主要子系统的算法和数据结构,对第1版进行了大幅修订,加入了很多新的内容。集成的Solaris工具和实用程序贯穿全书,目的是让读者细致观察到Solaris内核的工作过程,深入理解、分析系统的性能和行为,包括内存、进程、线程、文件系统、网络TCP/IP实现、资源管理工具,等等。
本书适合使用Solaris操作系统的各类技术人员阅读。
目录 · · · · · ·
原序
前言
关于作者
致谢
目录
第一部分 Solaris内部结构介绍
第1章 介绍
1.1 Solaris 10、Solaris 9和Solaris 8的关键特性
1.1.1 Solaris 10
1.1.2 Solaris 9
1.1.3 Solaris 8
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 POSIX IPC
1.5.4 Solaris门:高级Solaris IPC
1.6 信号
1.7 内存管理
1.7.1 全局内存分配
1.7.2 循环页面高速缓存
1.7.3 内核内存管理
1.8 文件和文件系统
1.9 资源管理
1.9.1 处理器控制和域
1.9.2 Solaris资源管理
1.9.3 网际协议服务质量
1.9.4 资源管理和可观察性
第二部分 进程模型
第2章 Solaris进程模型
2.1 进程的组成部分
2.1.1 线程对象
2.1.2 进程的核心组成部分
2.2 进程模型的演变
2.2.1 线程模型的演变
2.2.2 统一的进程模型
2.3 可执行对象
2.4 进程数据结构
2.4.1 proc数据结构
2.4.2 用户区域
2.4.3 轻量级进程
2.4.4 内核线程
2.5 内核进程表
2.5.1 进程限制
2.5.2 线程限制
2.6 进程资源属性
2.7 进程创建
2.8 系统调用
2.8.1 SPARC体系结构上的系统调用
2.8.2 系统调用过程介绍
2.9 进程终止
2.9.1 LWP和内核线程退出
2.9.2 deathrow列表
2.10 进程文件系统
2.10.1 procfs的实现
2.10.2 进程资源使用
2.10.3 微状态统计
2.11 信号
2.11.1 信号的实现
2.11.2 观察信号活动
2.11.3 小结
2.12 会话和进程组
2.13 MDB参考
第3章 调度类型和调配器
3.1 基础知识
3.2 处理器的抽象化
3.3 调配器队列、结构和变量
3.3.1 调配器结构
3.3.2 调配器结构的链接
3.3.3 查看调配器结构
3.4 调配器锁
3.4.1 调配器锁函数
3.4.2 线程锁
3.4.3 线程锁函数
3.4.4 锁状态统计
3.5 调配器的初始化
3.6 调度类型
3.6.1 调度类型数据
3.6.2 调度类型函数
3.6.3 调度类型调配器表
3.7 线程优先级
3.7.1 全局优先级
3.7.2 用户优先级
3.7.3 设置线程优先级
3.8 调配器函数
3.8.1 调配器队列管理
3.8.2 调配器的心脏:swtch()
3.9 抢占
3.10 内核睡眠与唤醒机制
3.10.1 条件变量
3.10.2 睡眠队列
3.10.3 睡眠过程
3.10.4 唤醒机制
3.11 中断
3.11.1 中断优先级
3.11.2 作为线程的中断
3.11.3 中断线程优先级
3.11.4 高优先级中断
3.11.5 中断管理
3.11.6 中断的观测
3.11.7 处理器间中断和交叉调用
3.12 小结
3.13 MDB参考
第4章 进程间通信
4.1 System V IPC框架
4.1.1 IPC对象
4.1.2 IPC框架设计
4.1.3 锁
4.1.4 模块创建
4.2 System V IPC资源控制
4.3 配置Solaris 10 IPC可调参数
4.4 System V共享内存
4.4.1 共享内存的内核实现
4.4.2 紧密共享内存
4.4.3 动态ISM共享内存
4.5 System V信号量
4.5.1 信号量内核资源
4.5.2 信号量机制的内核实现
4.5.3 信号量操作
4.6 System V消息队列
4.6.1 消息队列的内核资源
4.6.2 消息队列的内核实现
4.7 POSIX IPC
4.7.1 POSIX共享内存
4.7.2 POSIX信号量机制
4.7.3 POSIX消息队列
4.8 Solaris门
4.8.1 门概述
4.8.2 门实现
4.9 MDB参考
第5章 进程权限管理
5.1 进程权限管理方式的演变
5.2 Solaris中的最小权限
5.3 进程权限模型
5.3.1 传统的Solaris超级用户模型
5.3.2 用进程权限扩展Solaris
5.3.3 Solaris 10最小权限模型是如何被选中的
5.3.4 其他UNIX的实现
5.4 权限知晓:细节
5.4.1 每个进程的状态
5.4.2 权限知晓状态转换
5.4.3 权限状态操作
5.4.4 防止权限升级
5.4.5 uid 0的麻烦
5.4.6 基本权限
5.4.7 权限与运行期环境
5.4.8 权限与NFS
5.4.9 权限与第三方文件系统
5.5 最小权限接口
5.5.1 位集合与常量之间的阴谋
5.5.2 权限名与常量
5.5.3 内核数据结构
5.5.4 内核接口
5.5.5 系统调用接口
5.5.6 库接口
5.5.7 与基于角色的访问控制一起使用权限
5.5.8 使用DTrace跟踪权限
5.5.9 强化proc(4)和核心文件
5.5.10 权限调试
5.5.11 权限审计
5.5.12 设备保护
第三部分 资源管理
第6章 zone
6.1 概述
6.1.1 zone的基础知识
6.1.2 zone的设计原则
6.2 zone的运行期
6.2.1 zone状态模型
6.2.2 zone的名字和数字标识
6.2.3 zone运行期的支持
6.2.4 列出zone的信息
6.3 启动zone
6.4 安全
6.4.1 证书处理
6.4.2 细粒度的权限
6.4.3 基于角色的访问控制
6.4.4 chroot交互操作
6.5 进程模型
6.5.1 信号和进程控制
6.5.2 全局zone的可见性和访问
6.5.3 /proc
6.5.4 核心文件
6.6 文件系统
6.6.1 配置
6.6.2 zone的大小限制
6.6.3 特定文件系统问题
6.6.4 文件系统遍历问题
6.7 网络
6.7.1 网络划分
6.7.2 接口
6.7.3 IPv6
6.7.4 IPsec
6.7.5 原始IP套接字访问
6.7.6 DLPI访问
6.7.7 路由
6.7.8 TCP连接的拆卸
6.8 设备
6.8.1 设备类型
6.8.2 /dev和/devices命名空间
6.8.3 设备管理:zone的配置
6.8.4 zone运行时的设备管理
6.8.5 zone控制台的设计
6.8.6 ftpd
6.9 进程间通信
6.9.1 管道、STREAMS和套接字
6.9.2 门
6.9.3 环回传输提供者
6.9.4 System V IPC
6.9.5 POSIX IPC
6.10 资源管理和观察
6.10.1 性能
6.10.2 Solaris资源管理与zone的互操作
6.10.3 kstat
6.11 MDB命令参考
第7章 项目、任务和资源控制
7.1 项目和任务框架
7.1.1 概述
7.1.2 项目
7.1.3 任务
7.1.4 为什么我们要在Solaris中增加任务的概念
7.2 项目数据库
7.3 项目和任务的API
7.4 项目和任务的内核基础架构
7.4.1 系统调用与项目的交互操作
7.4.2 proc(4)
7.4.3 内核中的项目数据结构
7.5 资源控制
7.5.1 对于资源控制的介绍
7.5.2 什么是rctl
7.5.3 资源控制的数字值
7.5.4 资源控制定义
7.5.5 策略
7.5.6 超出rctl限度的结果
7.5.7 超出控制限度时的信号和siginfo语义
7.5.8 把硬限制和软限制一般化
7.5.9 资源控制和任务
7.5.10 通过/proc进行观察:特权和所有者
7.6 资源控制接口
7.6.1 项目的“名字-服务”属性
7.6.2 源自Solaris的属性
7.6.3 属性的语法
7.6.4 rctl属性的解释
7.6.5 /etc/project例子
7.6.6 系统调用和私有内核接口
7.6.7 库函数
7.7 资源控制的内核接口
7.7.1 数据结构
7.7.2 操作向量
7.7.3 接口概述
7.7.4 接口定义
7.7.5 资源控制例子
第四部分 内存
第8章 Solaris内存介绍
8.1 虚拟内存简介
8.2 两级内存结构
8.3 内存共享和保护
8.4 页:物理内存的基本单元
8.5 虚拟内存到物理内存的转换
8.6 物理内存管理:分页和交换
8.7 作为文件系统缓存的虚拟内存
8.8 虚拟内存系统实现的新特性
第9章 虚拟内存
9.1 设计概览
9.2 虚拟地址空间
9.2.1 共享可执行文件和库
9.2.2 SPARC系统上的地址空间
9.2.3 x86和x64地址空间布局
9.2.4 堆的增长
9.2.5 栈
9.2.6 使用pmap查看映射
9.3 追踪VM系统
9.4 虚拟地址空间管理
9.4.1 地址空间管理
9.4.2 地址空间回调函数
9.4.3 虚存保护模式
9.4.4 地址空间中的页面错误
9.5 段驱动程序
9.5.1 vnode段:seg_vn
9.5.2 写入时拷贝
9.5.3 页面保护及建议
9.6 匿名内存
9.7 匿名内存层
9.8 swapfs层
9.9 虚拟内存观测点
9.10 为支持大页面所做的改变
9.10.1 大页面的系统概述
9.10.2 空闲列表组织
9.10.3 大页面错误
9.10.4 释放大页面
9.10.5 干扰大页面的操作
9.10.6 HAT支持
9.10.7 procfs的改变
9.11 MDB参考
第10章 物理内存
10.1 物理内存分配
10.2 页:Solaris内存的基本单元
10.2.1 页面散列表
10.2.2 页面结构
10.2.3 空闲列表和缓存列表
10.2.4 物理页“memseg”列表
10.2.5 页级接口
10.2.6 页面分配抑制
10.2.7 页面着色
10.3 页面扫描程序
10.3.1 页面扫描程序的操作
10.3.2 页面换出算法和参数
10.3.3 共享库的优化
10.3.4 限制页面换出的参数
10.3.5 页面扫描程序的实现
10.3.6 内存调度程序
10.4 MDB参考
第11章 内核内存
11.1 内核虚拟内存布局
11.1.1 内核地址空间
11.1.2 内核正文和数据段
11.1.3 虚拟内存数据结构
11.1.4 UltraSPARC内核核心(nucleus)
11.1.5 可加载的内核模块正文及数据
11.1.6 内核地址空间和段
11.2 内核内存分配
11.2.1 内核堆
11.2.2 内核内存段驱动程序
11.2.3 内核内存slab分配程序
11.3 vmem分配程序
11.3.1 背景
11.3.2 vmem对象
11.3.3 vmem接口
11.3.4 vmem的实现
11.3.5 vmem的性能
11.3.6 小结
11.4 内核内存分配程序跟踪
11.4.1 启用KMA调试标志
11.4.2 使用MDB检查内核内存分配
11.4.3 检测内存破坏
11.4.4 检查一个已释放的缓冲区:Oxdeadbeef
11.4.5 使用Redzone指示器进行调试:Oxfeedface
11.4.6 检测未初始化数据:Oxbaddcafe
11.4.7 将崩溃信息与失败相联系
11.4.8 内存分配日志
11.4.9 使用高级技巧分析内存
11.4.10 使用::kmem_verify找到被破坏的缓冲区
11.4.11 使用分配程序日志功能
11.5 MDB参考
第12章 硬件地址转换
12.1 HAT简介
12.2 UltraSPARC的HAT层
12.2.1 介绍
12.2.2 hat数据结构
12.2.3 转换表
12.2.4 转换存储缓冲区
12.2.5 紧密共享内存
12.2.6 HAT层的同步
12.2.7 SPARC HAT层内核可调参数
12.2.8 SPARC HAT层kstats
12.3 x64的HAT层
12.3.1 MMU配置
12.3.2 struct mmu变量
12.3.3 虚拟地址空间分布
12.3.4 64位地址空间分布
12.3.5 32位地址空间分布
12.3.6 HAT的实现
12.4 MDB参考
第13章 在Solaris中使用多种页面尺寸
13.1 决定何时使用大页面
13.2 测量应用程序的性能
13.2.1 确定已分配的页面尺寸
13.2.2 得到支持的页面尺寸
13.3 配置多页面尺寸
13.3.1 启用大页面
13.3.2 用ppgsz建议页面尺寸
13.3.3 插入共享库libmpss.so
13.3.4 用编译器申请更大的页面尺寸
13.3.5 申请大尺寸页面的接口
13.3.6 特定CPU的大页面支持
第五部分 文件系统
第14章 文件系统框架
14.1 文件系统框架简介
14.2 进程级文件抽象
14.2.1 文件描述符
14.2.2 open代码路径
14.2.3 分配和释放文件描述符
14.2.4 文件描述符的限制
14.2.5 文件结构
14.3 Solaris文件系统框架
14.3.1 文件系统框架演变
14.3.2 Solaris文件系统接口
14.4 文件系统模块
14.4.1 安装选项接口
14.4.2 模块初始化
14.5 虚拟文件系统(vfs)接口
14.5.1 vfs方法
14.5.2 vfs支持函数
14.5.3 mount方法
14.5.4 umount方法
14.5.5 根v节点标识
14.5.6 使用MDB获取vfs信息
14.6 v节点
14.6.1 对象接口
14.6.2 v节点类型
14.6.3 v节点方法注册
14.6.4 v节点方法
14.6.5 v节点的支持函数
14.6.6 v节点的生命周期
14.6.7 v节点的创建和销毁
14.6.8 v节点的引用计数
14.6.9 页面化v节点缓存接口
14.6.10 v节点页面上的块I/O
14.6.11 使用mdb可获取的v节点信息
14.6.12 v节点层的DTrace探针
14.7 文件系统I/O
14.7.1 内存映射I/O
14.7.2 系统调用read()和write()
14.7.3 seg_kpm驱动程序
14.7.4 seg_map驱动程序
14.7.5 segmap与segkpm之间的交互操作
14.8 文件系统和内存分配
14.8.1 Solaris 8——循环的页缓存
14.8.2 旧的分配算法
14.8.3 新的分配算法
14.8.4 总结:物理内存的循环分配过程
14.9 路径名管理
14.9.1 lookuppn()方法
14.9.2 vop_lookup()方法
14.9.3 vop_readdir()方法
14.9.4 路径名遍历函数
14.10 目录名查询缓存
14.10.1 DNLC操作
14.10.2 主要的DNLC支持函数
14.10.3 DNLC负缓存
14.10.4 DNLC目录缓存
14.10.5 DNLC的内部管理线程
14.10.6 DNLC的统计信息
14.11 文件系统刷新守护进程
14.12 移植文件系统至Solaris 10
14.13 MDB命令参考
第15章 UFS文件系统
15.1 UFS发展历史
15.2 UFS磁盘格式
15.2.1 磁盘上的UFS i节点
15.2.2 UFS目录
15.2.3 UFS硬链接
15.2.4 影子i节点
15.2.5 引导块
15.2.6 超级块
15.2.7 柱面组
15.2.8 UFS结构总结
15.3 UFS i节点
15.3.1 内核UFS i节点
15.3.2 i节点缓存
15.3.3 块分配
15.3.4 读和写UFS文件的方法
15.4 UFS访问控制
15.5 UFS扩展属性
15.6 UFS锁
15.6.1 UFS锁描述
15.6.2 i节点锁顺序
15.6.3 UFS的文件系统锁协议
15.7 日志
15.7.1 磁盘日志数据结构
15.7.2 内核日志数据结构
15.7.3 摘要信息
15.7.4 事务
15.7.5 滚动日志
15.7.6 重定向读和写到日志
15.7.7 失败恢复
15.8 MDB参考
第六部分 平台相关性
第16章 对NUMA和CMT硬件的支持
16.1 内存层次结构设计
16.1.1 什么是NUMA
16.1.2 什么是CMT
16.2 内存放置优化框架
16.2.1 延迟模型
16.2.2 更复杂模型
16.3 初始的线程放置
16.4 调度
16.5 内存分配
16.6 lgroup实现
16.7 MPO API
16.7.1 介绍
16.7.2 验证接口的版本
16.7.3 位置组接口的初始化
16.8 位置组的结构
16.8.1 位置组的属性
16.8.2 位置组、线程和内存放置
16.9 MPO统计信息
16.10 MDB参考
第17章 锁和同步
17.1 同步
17.2 并行系统体系结构
17.3 锁和同步在硬件上的考虑
17.4 同步对象介绍
17.4.1 同步过程
17.4.2 同步对象操作向量
17.5 互斥锁
17.5.1 概述
17.5.2 Solaris互斥锁的实现
17.6 读/写锁
17.7 turnstile和优先级继承
17.8 内核信号量
17.9 DTrace lockstat提供者
17.9.1 简介
17.9.2 自适应锁探针
17.9.3 自旋锁探针
17.9.4 线程锁
17.9.5 读/写锁探针
第七部分 网络
第18章 Solaris网络协议栈
18.1 STREAMS和网络协议栈
18.1.1 STREAMS模型
18.1.2 通过STREAMS模块实现的网络协议栈
18.1.3 基于STREAMS的协议栈所存在的问题
18.2 Solaris 10协议栈设计目标
18.3 Solaris 10网络协议栈框架
18.3.1 纵向周界
18.3.2 IP分类器
18.3.3 同步机制
18.4 新框架的实现:TCP
18.4.1 TCP和IP之间的接口
18.4.2 TCP环回
18.5 UDP
18.5.1 在协议栈中丢弃的UDP报文
18.5.2 UDP模块
18.5.3 UDP和套接字的交互
18.6 同步STREAMS
18.6.1 TCP同步STREAMS
18.6.2 回退到传统STREAMS模式
18.7 IP
18.7.1 plumbing物理接口
18.7.2 IP网络多路径
18.7.3 多播
18.8 Solaris设备驱动框架
18.8.1 GLDv2与DLPI驱动(Solaris 9及之前的版本)
18.8.2 一个新的体系结构:GLDv3
18.8.3 GLDv3链路聚合体系结构
18.8.4 硬件校验和计算
18.9 中断模式和网卡线速
18.9.1 Solaris 9及之前的版本
18.9.2 中断和轮循状态的动态切换
18.9.3 中断负载均衡
18.10 小结
18.11 MDB参考
第八部分 内核服务
第19章 时钟和定时器
19.1 系统时钟线程
19.1.1 线程的嘀嗒处理
19.1.2 时钟嘀嗒处理的DTrace供应者
19.2 调出函数和调出函数表
19.3 系统时间工具
19.3.1 高精度定时器
19.3.2 当前时钟
19.4 cyclic子系统
19.4.1 cyclic子系统接口综述
19.4.2 cyclic子系统实现概述
19.4.3 cyclic子系统的客户
19.4.4 cyclic内核全部接口
19.4.5 cyclic内核子系统间的接口
19.4.6 cyclic后端接口
19.4.7 cyclic子系统后端提供的接口
第20章 任务队列
20.1 任务队列概览
20.2 动态任务队列
20.2.1 为什么要引入动态任务队列
20.2.2 动态任务队列解决的问题
20.2.3 任务池模型
20.2.4 动态任务队列引起的接口变化
20.3 任务队列内核编程接口
20.4 任务队列的设备驱动接口
20.5 任务队列的可观察性
20.5.1 Kstat计数器
20.5.2 DTrace SDT探针
20.6 任务队列实现摘要
20.6.1 kmem cache的使用
20.6.2 vmem arena的使用
20.6.3 散列的vmem arena
20.6.4 条目的cache列表
20.6.5 任务池实现的问题
20.6.6 动态任务池在STREAMS中的使用
第21章 kmdb的实现
21.1 简介
21.2 MDB的组件
21.3 kmdb的主要设计原则
21.4 kmdb结构
21.5 MDB的组件和它们在kmdb中的实现
21.6 结论
21.7 其余组件
附录
附录A 内核虚拟地址映射
附录B 为Solaris增加一个系统调用
附录C Procfs实用程序示例
参考文献
· · · · · · (收起)
丛书信息
· · · · · ·
喜欢读"Solaris内核结构"的人也喜欢的电子书 · · · · · ·
喜欢读"Solaris内核结构"的人也喜欢 · · · · · ·
- FreeBSD操作系统设计与实现 8.6
- GNU Make项目管理 7.9
- 莱昂氏UNIX源代码分析 9.0
- 操作系统:设计与实现(第二版) 9.1
- 编译器构造C语言描述 7.9
- Binary Hacks 6.4
- C安全编码标准 9.4
- 深入解析Oracle 8.2
- UNIX环境高级编程 9.5
- 深入Linux内核架构 9.0
Solaris内核结构的书评 · · · · · · ( 全部 3 条 )
file system framework
> 更多书评 3篇
这本书的其他版本 · · · · · · ( 全部4 )
-
Prentice Hall PTR (2000)暂无评分 2人读过
-
机械工业出版社 (2001)暂无评分 4人读过
-
机械工业出版社 (2007)暂无评分 3人读过
在哪儿借这本书 · · · · · ·
以下书单推荐 · · · · · · ( 全部 )
谁读这本书? · · · · · ·
二手市场
· · · · · ·
订阅关于Solaris内核结构的评论:
feed: rss 2.0
0 有用 popshvt 2014-08-17 11:27:12
经典书籍
0 有用 Zecho 2011-07-14 21:54:06
内容不错 翻译有待提高
0 有用 popshvt 2014-08-17 11:27:12
经典书籍
0 有用 Zecho 2011-07-14 21:54:06
内容不错 翻译有待提高