前言 1
第一章 任务 1
1.1 任务执行环境 1
1.2 任务状态段和描述符 1
1.3 任务创建 5
1.4 任务终结 6
1.5 任务转换 7
第二章 存储器管理 11
2.1 段 11
2.1.1 所需的段 12
2.1.2 段模式 12
2.1.3 定义段 15
2.1.3.1 描述符 15
2.1.3.2 描述符表 15
2.1.4 别名 17
2.1.5 共享 19
2.1.6.1 类型和权限 20
2.1.6 保护 20
2.1.6.2 界限 21
2.1.6.3 向下扩展的段 22
2.1.6.4 特权 25
2.1.7 其他的属性 27
2.1.8 建立描述符 27
2.2 分页 28
2.2.1 段和页的关系 29
2.2.2 页表和页目录 30
2.2.3 别名 34
2.2.4 共享 35
2.2.5 保护属性 35
2.2.5.1 特权 36
2.2.5.2 权力 36
2.2.6 其它属性 36
2.2.7 转换后援缓冲器的考虑 36
2.3 虚拟存储器 38
2.3.1 命令段 38
2.3.2 命令页 40
2.3.2.1 处理页故障 41
2.3.2.2 替换页 42
2.4 例子 43
2.4.1 平坦存储器设计 44
2.4.2 页式存储器的设计 50
2.4.3 段式存储器设计 53
2.4.4 混合存储器的设计 55
第三章 中断和异常 57
3.1 中断描述符表 57
3.2 中断和异常处理程序 58
3.2.1 过程与任务 59
3.2.2 基于过程的处理程序 60
3.2.3 基于任务的处理程序 63
3.2.4 存储器驻留 65
3.3 异常处理程序准则 66
3.3.2 7号,设备不可用故障 68
3.3.3 8号,双重错误 68
3.3.1 6号,无效操作码故障 68
3.3.4 9号,处理器扩充段超限 69
3.3.5 10号,无效TSS故障 69
3.3.6 11号,段故障 69
3.3.7 12号,堆栈故障 70
3.3.8 13号,一般保护故障 70
3.3.9 14号,页故障 71
3.3.10 16号,协处理器错故障 71
4.1 调用门 72
第四章 系统调用 72
4.1.1 多少门? 73
4.1.2 控制访问 74
4.1.3 转换特权级和堆栈 74
4.1.4 传递参数 75
4.2 陷阱门 77
4.3 段式指针的合法性 78
4.4 调用低特权的过程 80
5.1.2 存储器映象的I/O 81
5.1.1 I/O映象的I/O 81
第五章 输入/输出 81
5.1 编程的I/O 81
5.2 IOPL和I/O允许图 82
5.2.1 受保护的I/O映象设备 82
5.2.2 设备驱动程序的特权 84
5.3 直接I/O 86
5.3.1 物理寻址 86
5.3.2 封锁段和页 87
6.1 进入保护模式 88
第六章 初始化 88
6.2 允许分页 93
6.3 转换到初始任务 95
第七章 数值 96
7.1 支持协处理器 96
7.1.1 初始化 96
7.1.2 异常 103
7.1.2.1 协处理器上下文的转换 103
7.1.2.2 协处理器错误 105
7.1.2.3 同时发生的异常 106
7.2.1 初始化 107
7.2.2 异常 107
7.2 支持仿真程序 107
第八章 80286的兼容性 109
8.1 运行80286操作系统 109
8.2 同时运行80286和80386的程序 110
8.2.1 基本的操作系统支持 110
8.2.2 处理混合的系统调用 111
8.2.2.2 参数传递 112
8.2.2.1 系统调用匹配程序 112
8.2.2.3 参数转换 114
第九章 8086的兼容性 115
9.1 实模式和虚拟8086模式的共同点 115
9.1.1 指令集 115
9.1.2 伪描述符 116
9.2 实模式 118
9.3.1 虚拟机器的监控程序 121
9.3 虚拟的8086模式 121
9.3.2 任务管理 122
9.3.3 存储器管理 125
9.3.4 中断和异常 126
9.3.4.1 处理程序的考虑 126
9.3.4.2 中断允许标志的考虑 127
9.3.4.3 仿真中断 128
9.3.5 系统调用 128
9.3.6 输入/输出 131
10.1 U/368实现的基本原理 132
第十章 UNIX系统的实现 132
10.2 进程和存储器概述 133
10.3 进程 136
10.3.1 表示一个进程 137
10.3.2 分叉一个子进程 138
10.3.3 执行一个新程序 140
10.4.1 描述符表 141
10.4 存储器管理 141
10.3.5 进程终止 141
10.3.4 进程转换 141
10.4.2 目录和页表 143
10.4.3 管理堆栈和堆阵 145
10.4.4 保护 147
10.4.5 共享 148
10.4.6 虚拟存储器 148
10.4.7 封锁 150
10.5 系统调用 151
10.6 中断和异常 153
10.6.1 中断 153
10.6.2 核心中的分块中断 155
10.6.3 异常 155
10.7 输入/输出 156
10.8 数值 158
10.9 调试支持 158