| 作 者: | David Mosberger Stephane Eranian 梁金昆 梁金昆 |
| 出版社: | 清华大学出版社 |
| 丛编项: | 国外经典教材·计算机科学与技术 |
| 版权说明: | 本书为公共版权或经版权方授权,请支持正版图书 |
| 标 签: | Linux |
| ISBN | 出版时间 | 包装 | 开本 | 页数 | 字数 |
|---|---|---|---|---|---|
| 未知 | 暂无 | 暂无 | 未知 | 0 | 暂无 |
第1章 引言
1.1 微处理器:从CISC到EPIC
1.1.1 微处理器分类小结
1.1.2 IA-64的架构和安腾
1.2 Linux简史
1.2.1 早期发展
1.2.2 分支发展:Linux走向多平台
1.2.3 IA-64 Linux
1.2.4 Linux发展史小结
1.3 Linux内核概述
1.3.1 主要概念
1.3.2 硬件模型
1.3.3 内核组件
1.3.4 内核源码
1.4 小结
第2章 IA-64架构
2.1 用户级指令集的架构
2.1.1 指令格式
2.1.2 指令顺序化
2.1.3 寄存器组
2.1.4 指令集概述
2.1.5 整型数与SIMD指令
2.1.6 内存/信号量指令
2.1.7 分支指令
2.1.8 与寄存器堆栈有关的指令
2.1.9 控制指令
2.1.10 浮点型指令
2.1.11 模调度循环
2.2 运行时/软件规范
2.2.1 数据模型
2.2.2 寄存器用法
2.2.3 过程链接
2.2.4 内存堆栈
2.2.5 寄存器堆栈
2.2.6 全局指针
2.2.7 IA-64汇编语言编程
2.3 系统指令集架构
2.3.1 系统寄存器组
2.3.2 特权指令
2.3.3 中断
2.4 寄存器堆栈引擎
2.4.1 寄存器堆栈配置寄存器
2.4.2 处理NaT位
2.4.3 RSE算术
2.4.4 RSE算术辅助例程
2.4.5 影响RSE的指令
2.5 小结
第3章 进程、任务和线程
3.1 Linux任务
3.1.1 创建任务
3.1.2 历史的观点
3.2 线程接口
3.2.1 pt_regs结构
3.2.2 switch_stack结构
3.2.3 线程结构
3.2.4 IA-64寄存器堆栈
3.2.5 IA-64线程状态小结
3.2.6 运行线程
3.2.7 创建线程
3.2.8 终止线程
3.2.9 跨地址空间边界移动线程
3.3 线程同步
3.3.1 并发模式
3.3.2 原子操作
3.3.3 信号量
3.3.4 中断屏蔽
3.3.5 自旋锁
3.4 小结
第4章 虚拟内存
4.1 虚拟内存系统简介
4.1.1 虚拟地址到物理地址的转换
4.1.2 请求页面调度
4.1.3 页面调度和交换
4.1.4 保护
4.2 Linux进程的地址空间
4.2.1 用户地址空间
4.2.2 页表映射的内核段
4.2.3 一对一映射的内核段
4.2.4 IA-64地址空间的结构
4.3 页表
4.3.1 折叠页表层
4.3.2 虚拟映射的线性页表
4.3.3 Linux/ia64页表的结构
4.3.4 页表项
4.3.5 页表访问
4.3.6 页表目录的创建
4.4 旁路转换缓冲区
4.4.1 IA-64 TLB架构
4.4.2 TLB一致性的维护
4.4.3 迟缓的TLB清除
4.5 页面错误处理
4.5.1 示例:写时复制的工作原理
4.5.2 Linux页面错误处理程序
4.5.3 IA-64实现
4.6 内存一致性
4.6.1 Linux内核中的一致性维护
4.6.2 IA-64实现
4.7 切换地址空间
4.7.1 地址空间切换的接口
4.7.2 IA-64实现
4.8 讨论与总结
第5章 内核入口与出口
5.1 中断
5.1.1 内核入口路径
5.1.2 内核出口路径
5.1.3 讨论
5.1.4 IA-64实现
5.1.5 切换IA-64寄存器堆栈
5.2 系统调用
5.2.1 错误信号
5.2.2 重新启动系统调用执行
5.2.3 从内核调用系统调用
5.2.4 IA-64实现
5.3 信号
5.3.1 与信号有关的系统调用
5.3.2 信号递交
5.3.3 IA-64实现
5.4 内核存取用户内存
5.4.1 示例:gettimeofday()如何返回timeval结构
5.4.2 禁用合法性检测
5.4.3 IA-64实现
5.5 小结
第6章 栈展开
6.1 IA-64 ELF展开段
6.2 内核展开接口
6.2.1 管理展开表
6.2.2 遍历调用链
6.2.3 访问当前帧的CPU状态
6.2.4 展开接口的使用
6.3 在汇编代码中嵌入展开信息
6.3.1 区间指令
6.3.2 序言指令
6.3.3 过程体指令
6.3.4 通用指令
6.3.5 实例
6.4 实现方面
6.4.1 帧信息结构
6.4.2 展开描述符处理
6.4.3 展开脚本
6.4.4 迟缓初始化和脚本提示
6.4.5 综合考虑
6.5 小结
第7章 I/O设备
7.1 简介
7.1.1 现代计算机的结构
7.1.2 现代计算机上的I/O软件支持
7.2 编程I/O
7.2.1 内存映射I/O
7.2.2 端口I/O
7.3 直接内存访问
7.3.1 PCIDMA接口
7.3.2 示例:发送网络数据包
7.3.3 IA-64实现
7.4 设备中断
7.4.1 IA-64硬件中断架构
7.4.2 设备中断接口
7.4.3 中断处理
7.4.4 管理IA-64中断定向逻辑
7.5 小结
第8章 对称多处理
8.1 Linux中的多处理
8.2 Linux锁定
8.2.1 锁定规则
8.2.2 大内核锁
8.3 多处理机支持接口
8.3.1 支持实用工具
8.3.2 IA-64实现
8.4 CPU相关数据
8.4.1 错误共享
8.4.2 CPU相关数据的虚拟映射
8.5 挂钟时间维护
8.5.1 多处理机中的挂钟时间维护
8.5.2 同步MP机器上的周期计数器
8.6 小结
第9章 系统性能
9.1 IA-64性能监测单元概述
9.1.1 PMU寄存器组
9.1.2 控制监测
9.1.3 处理计数器溢出
9.2 扩展安腾PMU
9.2.1 安腾PMU的额外功能
9.2.2 安腾PMU寄存器组
9.2.3 安腾PMU事件
9.2.4 事件采样的硬件支持
9.2.5 事件地址寄存器
9.2.6 分支追踪缓冲区
9.2.7 其他特性
9.3 内核性能监测支持
9.3.1 perfmon接口
9.3.2 perfmon实现
9.3.3 perfmon接口应用示例
9.4 小结
第10 章 启动
10.1 IA-64固件概述
10.1.1 处理器抽象层
10.1.2 系统抽象层
10.1.3 高级配置和电源接口
10.1.4 可扩展固件接口
10.2 启动装载程序
10.2.1 装载内核映像
10.2.2 装载初始RAM磁盘
10.2.3 装载FPSWA
10.2.4 收集启动参数
10.2.5 启动内核
10.3 内核初始化
10.3.1 引导接口
10.3.2 IA-64实现
10.4 小结
第11章 IA-32兼容性
11.1 对1A-32的架构支持
11.1.1 IA-32用户级机器状态
11.1.2 IA-32用户级机器状态与IA-64寄存器之间的映射
11.1.3 IA-32分段与内存寻址
11.1.4 IA-32与IA-64之间的控制权传递
11.2 Linux对IA-32应用程序的支持
11.2.1 IA-32任务的内核表示
11.2.2 模拟IA-32任务的地址空问
11.2.3 绝对文件系统路径
11.2.4 启动IA-32可执行程序
11.2.5 系统调用模拟
11.2.6 信号传递
11.2.7 访问I/O端口空间
11.3 小结
附录A IA-64 CPU模型
附录B 内核寄存器用法
附录C IA-64指令
C.1 整数指令
C.2 内存指令
C.3 信号量指令
c.4 分支指令
C.5 控制指令
C.6 多媒体指令
C.7 浮点指令
C.8 特权指令
附录D 安腾PMU事件
附录E 词汇表
参考文献