《深入理解计算机系统》几乎做到了只讲对程序员“有用的”原理,所以这本书性价比非常高。并没有在体系结构和操作系统的许多实现问题上纠缠。
第三版的英文原版是有index表的,中文没有。这里刷中文书的同时,随手记一下。不用字典序,用页码序。方便自己进行记录和知识回顾。不解释术语,忘了就翻书或search online
我刷CSAPP的2、3、4三章没怎么做题,算是不认真的,不要学我
注:
术语出现多次的,把最主要的介绍页码放到首位
“【…】” 表示可选,例如“最大容量”一般简称“容量”,就表示成“【最大】容量”
1.0 | |
---|---|
计算机系统(computer system) | 1 |
1.1 计算机系统漫游 | |
---|---|
源程序(source program,源文件source file) | 1 |
字节(Byte) | 1 |
美国国家标准学会(American National Standards Institute,ANSI) | 2 |
ANSI C标准(ANSI C standard) | 2 |
国际标准化组织(International Standards Organization,ISO) | 2 |
C标准库(C standard library) | 2 |
K&R | 2 |
1.2 程序被其他程序翻译成不同的格式 | |
---|---|
编译系统(compilation system) | 3 |
GNU(GNU’s Not Unix) | 4 |
1.4 处理器读并解释存储在内存中的指令 | |
---|---|
shell | 5 |
字(word) | 5 |
I/O设备(I/O devices) | 5 |
控制器(controller) | 5 |
适配器(adapter) | 5 |
主板(motherboard) | 6 |
处理器(中央处理单元central processing unit,CPU) | 6 |
【程序】寄存器(register) | 6 |
微体系结构(microarchitecture) | 7,357,360 |
1.7 操作系统管理硬件 | |
---|---|
操作系统(operating system) | 10 |
OS/360 | 11 |
Multics系统(Multics system) | 52 |
Unix | 11 |
Unix 4.xBSD(Berkeley Software Distribution) | 11 |
System V Unix | 11 |
Solaris系统(Solaris Sun Microsystems operating system) | 11 |
IEEE(电气和电子工程师协会,Institute for Electrical and Electronics Engineers) | 11 |
Posix标准(Posix standards) | 11 |
标准Unix规范(Standard Unix Specification) | 11 |
内核(kernel) | 12,484 |
Linux | 14 |
1.9 重要主题 | |
---|---|
Amdahl定律(Amdahl’s Law) | 16 |
并行(parallelism) | 17 |
线程级并发(thread-level concurrency) | 17 |
单处理器系统(uniprocessor system) | 17 |
多处理器系统(multiprocessor system) | 17 |
多核处理器(many-core processor) | 17,325,417 |
超线程(hyperthreading,同时多线程simultaneous multi-threading) | 17,111 |
抽象(Abstractions) | 19 |
虚拟机(virtual machine) | 19 |
2.0 | |
---|---|
位(bit) | 22 |
解释(interpretation) | 22 |
无符号(unsigned)编码 | 22 |
浮点数(floating-point)编码 | 22 |
ANSI C | 24,2 |
ISO C90 | 24 |
ISO C99 | 24 |
ISO C11 | 24 |
GCC(GNU Compiler Collection,GUN编译器套装) | 24,4 |
2.1 信息存储 | |
---|---|
地址(address) | 24 |
程序对象(program object) | 24,582 |
字长(word size) | 27,5 |
标称大小(nominal size) | 27 |
小端法(little endian) | 29 |
大端法(big endian) | 29 |
双端法(bi-endian) | 29 |
Unicode | 34 |
UTF-8 | 34 |
布尔代数(Boolean algebra) | 35 |
位向量(bit vectors) | 35,685 |
布尔环(Boolean ring) | 36 |
2.2 整数表示 | |
---|---|
补码(two‘s-complement) | 44,22 |
反码(Ones’ Complement) | 47 |
原码(Sign-Magnitude) | 47 |
零扩展(zero extension) | 54 |
符号扩展(sign extension) | 54 |
2.3 整数运算 | |
---|---|
无限精度(arbitrary size) | 60 |
溢出(overflow) | 61,22 |
偏置(biasing)(整数除法向上取整、浮点数阶段字码) | 73,79 |
2.4 浮点数 | |
---|---|
IEEE浮点 | 75 |
偏置(biased) | 79 |
逐渐溢出(gradual underflow) | 79 |
舍入(rounding) | 83,75 |
向偶数舍入(round-to-even,向被最接近的值舍入round-to-nearest) | 83 |
确界(guaranteed bound) | 83 |
向零舍入(round-toward-zero) | 83 |
向下舍入(round-down) | 83 |
向上舍入(round-up) | 83 |
整数不确定(integer indefinite)值 | 86 |
3.0 | |
---|---|
机器代码(machine code) | 109 |
汇编代码(assembly code) | 109 |
逆向工程(reverse engineering) | 109 |
IA32编程(IA32 programming) | 110 |
x86 | 110 |
3.1 历史观点 | |
---|---|
8086 | 111 |
80286 | 111 |
i386 | 111 |
i486 | 111 |
Pentium | 111 |
PentiumPro | 111 |
Pentium/MMX | 111 |
Pentium II | 111 |
Pentium III | 111 |
Pentium 4 | 111 |
Pentium 4E | 111 |
Core 2 | 111 |
Core i7 | 111 |
摩尔定律(Moore’s Law) | 112 |
3.2 程序编码 | |
---|---|
目标代码(object-code) | 113 |
程序计数器(PC,program counter) | 113,6 |
整数寄存器文件(register file) | 114 |
向量寄存器(vector register) | 114,376 |
反汇编器(disassembler) | 115,30 |
OBJDUMP(object dump)程序 | 115,496 |
ATT格式(ATT format)汇编代码 | 118 |
Intel格式(Intel format)汇编代码 | 118 |
3.3 数据格式 | |
---|---|
双字(double words) | 119 |
四字(quad words) | 119 |
3.4 访问信息 | |
---|---|
通用目的寄存器(general-purpose registers) | 119 |
操作数(operand) | 121 |
立即数(immediate) | 121 |
内存引用(memory reference) | 121 |
基址(base) | 121 |
变址(index) | 121 |
指令类(instruction classes) | 122 |
3.5 算术和逻辑操作 | |
---|---|
加载有效地址(load effective address) | 129 |
八字(oct word) | 133 |
3.6 控制 | |
---|---|
条件码寄存器(condition code register) | 135,114 |
跳转(jump) | 138 |
标号(label) | 138 |
直接跳转(direct jump) | 139 |
间接跳转(indirect jump) | 139 |
PC相对的(PC-relative) | 140 |
条件传送指令(conditional move instruction) | 145,379 |
分支预测逻辑(brunch prediction logic) | 146 |
多重分支(multiway branching) | 159 |
跳转表(jump table) | 159 |
3.7 过程 | |
---|---|
过程(procedure) | 164 |
栈帧(stack fram) | 164 |
返回地址(return address) | 165 |
叶子过程(leaf procedure) | 165 |
调用者(caller) | 173 |
被调用者(callee) | 173 |
被调用者保存寄存器(callee-saved registers) | 173 |
调用者保存寄存器(caller-saved registers) | 173 |
3.8 数组分配和访问 | |
---|---|
C语言变长数组(variable-size arrays) | 181 |
3.9 异质的数据结构 | |
---|---|
结构(structure) | 183 |
联合(union) | 183 |
字段(field) | 183 |
对齐限制(alignment restrictions) | 189 |
3.10 在机器级程序中将控制与数据结合起来 | |
---|---|
GDB(GUN debugger) | 193 |
DDD(debugger with graphical user interface) | 194 |
缓冲区溢出(buffer overflow)【错误bug】 | 195,610 |
攻击代码(exploit code) | 197 |
蠕虫(worm) | 198 |
病毒(virus) | 198 |
安全单一化(security monoculture) | 198 |
栈随机化(stack randomization) | 198 |
地址空间布局随机化(Address-Sapce Layout Randomization, ASLR) | 198 |
栈破坏检测(stack corruption detection) | 199 |
空操作雪橇(nop sled) | 199 |
栈保护者(stack protector) | 199 |
金丝雀值(canary value,哨兵值guard value) | 199 |
段寻址(segmented addressing) | 200 |
alloca | 201 |
帧指针(frame pointer,基指针base pointer) | 203 |
3.11 浮点代码 | |
---|---|
浮点体系结构(floating-point architecture) | 204 |
媒体指令(media instructions,单指令多数据single instruction, multiple data,SIMD) | 204,376,19 |
MMX | 204 |
SSE | 204,376 |
AVX2(Advanced Vector Extension) | 204,376 |
截断(truncation) | 207 |
3.12 小结 | |
---|---|
Java字节代码(Java byte code) | 216 |
及时编译(just-in-time compilation) | 216,201 |
4.0 | |
---|---|
指令集体系结构(Instruction Set Architecture,ISA,指令集架构) | 241,113,6 |
流水线化的处理器(pipelined processor) | 244 |
4.1 Y86-64指令集体系结构 | |
---|---|
程序员可见状态(programmer-visible state) | 245 |
状态码Stat(status code Stat) | 245 |
寄存器文件(register file) | 247,7,360 |
寄存器指示符字节(register specifier byte) | 247 |
复杂指令集计算机(CISC) | 249 |
精简指令集计算机(RISC) | 249 |
汇编器伪指令(assembler directives) | 253 |
指令集模拟器(instruction set simulator) | 253 |
4.2 逻辑设计和硬件控制语言HCL | |
---|---|
硬件控制语言(Hardware Control Language, HCL) | 256,244 |
硬件描述语言(Hardware Description Language,HDL) | 257 |
Verilog | 257 |
VHDL(Very-High-Speed Integrated Circuit Hardware Description Language) | 257 |
逻辑合成程序(logic synthesis program) | 257,322 |
逻辑门(logic gates) | 257 |
计算块(computational block) | 257 |
组合电路(combinational circuits) | 257 |
多路复用器(multiplexo, MUX) | 258 |
情况表达式(case expression) | 259 |
算术/逻辑单元(ALU) | 261,7 |
时序电路(sequential circuit) | 262 |
时钟(clock) | 262 |
时钟寄存器(clocked register,硬件寄存器hardware register) | 262 |
读端口(read port) | 263 |
写端口(write port) | 263 |
多端口随机访问存储器(multiported random access memory) | 263 |
4.3 Y86-64的顺序实现 | |
---|---|
SEQ(sequential顺序的)处理器 | 264 |
阶段(stage) | 264,361 |
取值(fetch) | 264 |
译码(decode) | 264 |
执行(execute) | 264 |
访存(memory) | 265 |
写回(write back) | 265 |
更新PC(PC update) | 265 |
硬件单元(hardware units) | 272 |
控制逻辑块(control logic blocks) | 274 |
4.4 流水线的通用原理 | |
---|---|
流水线(pipelining) | 282,19,146,361,379 |
流水线图(pipeline diagram) | 283 |
每秒千兆条指令(giga-instructions per second,GIPS) | 283 |
流水线寄存器(pipeline register) | 284 |
数据相关(data dependency) | 287,295 |
控制相关(control dependency) | 288,295 |
4.5 Y86-64的流水线实现 | |
---|---|
SEQ+【处理器】 | 289 |
乱序处理技术(out-of-order processing technique) | 289 |
电路重定时(circuit retiming) | 289 |
分支预测(branch prediction) | 294,358 |
总是选择(always taken)分支的预测策略 | 294 |
从不选择(never taken,NT)策略 | 294 |
反向选择、正向不选择(backward taken,forward not-taken,BTFNT)的策略 | 294 |
冒险(hazard,冲突) | 295,244 |
数据冒险(data hazard) | 295 |
控制冒险(control hazard) | 295 |
自我修改代码(self-modifying code) | 298,324 |
暂停(stalling) | 298,317 |
气泡(bubble) | 299,317 |
数据转发(data forwarding,转发,旁路bypassing) | 300 |
PIPE处理器 | 303 |
加载/使用冒险(load/use hazard) | 303 |
加载互锁(load interlock) | 304 |
取消(cancel,指令排除instruction squashing) | 306 |
异常指令(excepting instruction) | 306 |
复位配置(reset configuration) | 317 |
形式化验证(formal verification) | 321 |
符号方法(symbolic methods) | 321 |
字段可编程的门阵列(field-programmable gate array,FPGA)硬件 | 322 |
CPI(Cycles Per Instruction,每指令周期数) | 322 |
加载处罚(load penalty in CPI) | 322 |
预测错误分支处罚(mispredicted branch penalty) | 322,379 |
返回处罚(return penalty in CPI) | 322 |
缺页(page fault)异常信号 | 325 |
超标量(superscalar)操作 | 325 |
每周期执行指令的平均数(the average number of insturctions executed per cycle, IPC) | 325 |
5.0 | |
---|---|
妨碍优化的因素(optimization blocker) | 341,344 |
代码剖析工具(profiler) | 342 |
5.1 优化编译器的能力和局限性 | |
---|---|
优化级别(optimization level) | 342 |
安全的优化(safe optimization) | 343 |
内存别名使用(memory aliasing) | 343 |
副作用(side effect) | 344,476 |
内联函数替换(inline substitution,内联inlining) | 344 |
5.2 表示程序性能 | |
---|---|
每元素的周期数(Cycles Per Element,CPE) | 345 |
千兆赫兹(GHz) | 345 |
纳秒(nanosecond, 1 0 − 9 10^{-9} 10−9秒) | 345 |
皮秒(ps,微微秒picosecond, 1 0 − 12 10^{-12} 10−12秒) | 345,283 |
前置和(prefix sum) | 345 |
循环展开(loop unrolling) | 346 |
最小二乘拟合(least squares fit) | 347 |
5.3 程序实例 | |
---|---|
参考机(reference machine) | 349 |
5.4 消除循环的低效率 | |
---|---|
代码移动(code motion) | 350 |
渐近低效率(asymptotic inefficiency) | 352 |
5.7 理解现代处理器 | |
---|---|
指令级并行 | 357,18,342 |
延迟界限(latency bound) | 357,362 |
吞吐量界限(throughput bound) | 357,362 |
超标量(super-scalar)处理器 | 357,19 |
乱序(out-of-order)执行 | 357,325 |
指令控制单元(Instruction Control Unit,ICU) | 357 |
执行单元(Execution Unit,EU) | 357 |
按序(in-order) | 357 |
投机执行(speculative execution) | 358,379 |
取指控制(fetch control) | 358 |
指令译码(instruction decoding) | 358 |
微操作(micro-operation) | 358 |
功能单元(functional units) | 359 |
数据高速缓存(data cache) | 359 |
预测错误(misprediction) | 359 |
退役单元(retirement unit) | 360 |
退役(retired) | 360 |
清空(flushed) | 360 |
寄存器重命名(register renaming) | 360 |
延迟(latency) | 361,282 |
发射时间(issue time) | 361 |
容量(capacity) | 361 |
完全流水线化的(fully pipelined) | 361 |
吞吐量(throughput) | 361,282 |
图形数据流(data-flow)表示法 | 362,342 |
关键路径(critical path) | 362,342 |
5.9 提高并行性 | |
---|---|
重新结合变换(reassociation transformation) | 373 |
5.10 优化合并代码的结果小结 | |
---|---|
标量(scalar)代码 | 377 |
5.11 一些限制因素 | |
---|---|
寄存器溢出(spilling) | 378 |
5.12 理解内存性能 | |
---|---|
存储(store operation) | 383 |
写/读相关(write/read dependency) | 383 |
存储缓冲区(store buffer) | 384,382 |
内存子系统(memory subsystem) | 386 |
5.14 确认和消除性能瓶颈 | |
---|---|
代码剖析程序(code profiler) | 388 |
剖析(profiling) | 388 |
基准数据(benchmark data) | 388 |
GPROF | 388 |
包装函数(wrapper function) | 389,445,492 |
哈希桶(hash bucket) | 389 |
间隔计数(interval counting) | 389 |
n-gram | 390 |
bigram | 390 |
负载(load) | 391 |
渐近性能(asymptotic performance) | 392 |
5.15 小结 | |
---|---|
VTUNE程序开发系统(VTUNE program development system) | 393 |
VALGRIND | 393 |
基本块(basic block) | 393 |
累积变量扩展(accumulator variable expansion) | 393 |
树高度减少(tree height reduction) | 393 |
6.0 | |
---|---|
存储器系统(memory system) | 399 |
主存储器(main memory) | 399,6 |
6.1 存储技术 | |
---|---|
随机访问存储器(Random-Access Memory,RAM) | 400 |
静态随机访问存储器(SRAM,Static RAM) | 400,9 |
双稳态的(bistable) | 400 |
亚稳态的(metastable) | 400 |
动态随机存取存储器(DRAM) | 400,6 |
毫微微法拉(femtofarad) | 400 |
纠错码(error-correcting codes) | 400 |
超单元(supercell) | 401 |
引脚(pin) | 401 |
内存控制器(memory controller) | 401 |
行访问选通脉冲(Row Access Strobe,RAS) | 401 |
列访问选通脉冲(Column Access Strobe,CAS) | 401 |
内存模块(memory module) | 402 |
双列直插内存模块(Dual Inline Memory Module,DIMM) | 402 |
快页模式DRAM(Fast Page Mode DRAM,FPM DRAM) | 403 |
扩展数据输出DRAM(Extended Data Out DRAM,EDO DRAM) | 403 |
同步DRAM(Synchronous DRAM,SDRAM) | 404 |
双倍数据速率同步DRAM(Double Data-Rate Synchronous DRAM,DDR SDRAM) | 404 |
视频RAM(Video RAM,VRAM) | 404 |
帧缓冲区(frame buffers) | 404,400 |
易失的(volatile) | 404 |
非易失性存储器(nonvolatile memory) | 404 |
只读存储器(Read-Only Memory,ROM) | 404 |
可编程ROM(Programmable Rom,PROM) | 404 |
可擦写可编程ROM(Erasable Programmable ROM,EPROM) | 404 |
电子可擦除PROM(Electrically Erasable PROM,EEPROM) | 404 |
闪存(flash memory)【芯片】 | 404,414 |
固态硬盘(Solid State Disk,SSD) | 404 |
固件(firmware) | 404 |
BIOS(基本输入/输出系统) | 404 |
【I/O】总线(bus) | 405,5,411 |
总线事务(bus transaction) | 405 |
读事务(read transaction) | 405 |
写事务(write transaction) | 405 |
I/O桥接器(I/O bridge) | 405 |
系统总线(system bus) | 405 |
内存总线(memory bus) | 405 |
北桥(northbridge) | 405 |
南桥(southbridge) | 405 |
前端总线(Front Side Bus,FSB) | 405 |
超传输(HyperTransport)互联 | 405 |
总线接口(bus interface) | 405 |
磁盘(disk,磁盘驱动器disk driver,旋转磁盘rotating disk) | 407 |
盘片(platter) | 407 |
表面(surface) | 407 |
主轴(spindle) | 407 |
旋转速率(rotational rate) | 407 |
转每分钟(Revolution Per Minute,RPM) | 407 |
磁道(track) | 407 |
扇区(sector) | 407 |
间隙(gap) | 407 |
柱面(cylinder) | 407 |
【最大】容量(maximum capacity) | 408 |
记录密度(recording density) | 408 |
磁道密度(track density) | 408 |
面密度(areal density) | 408 |
多区记录(multiple zone recording) | 408 |
记录区(recording zone) | 408 |
千兆字节(GB) | 408 |
兆兆字节(TB) | 408 |
读/写头(read/write head) | 409 |
传动臂(actuator arm) | 409 |
寻道(seek) | 409 |
读/写头冲撞(head crash) | 409 |
访问时间(access time) | 409 |
寻道时间(seek time) | 409 |
旋转时间(rotational latency) | 409 |
传送时间(transfer time) | 409 |
逻辑块(logical blocks) | 411 |
磁盘控制器(disk controller) | 411 |
格式化(formatted) | 411 |
外围设备互联(Peripheral Component Interconnect,PCI)总线 | 411 |
通用串行总线(Universal Serial Bus,USB)控制器 | 411 |
图形卡(graphics card,适配器adapter) | 411 |
主机总线适配器(host bus adapter) | 412 |
主机总线接口(host bus interface) | 412 |
SCSI主机总线适配器(SCSI 控制器,SCSI controller) | 412 |
SATA适配器(SATA adapters) | 412 |
网络适配器(network adapters) | 412,643 |
扩展槽(expansion slots) | 412 |
PCIe(PCI express)总线 | 412 |
内存映射I/O(memory-mapped I/O) | 413 |
I/O端口(I/O port) | 413 |
直接内存访问(direct memory access,DMA) | 413,8 |
DMA传送(DMA transfer) | 414 |
固态硬盘(Solid State Disk,SSD) | 414 |
闪存翻译层(flash translation layer) | 414 |
IOPS(I/O operations per second,每秒I/O操作数) | 415 |
平均磨损(wear leveling) | 415 |
有效周期时间(effective cycle time) | 416 |
能量墙(power wall) | 417 |
处理器核(processor cores) | 417 |
6.2 局部性 | |
---|---|
局部性(locality) | 418,9,399,565 |
局部性原理(principle of locality) | 418 |
时间局部性(temporal locality) | 418 |
空间局部性(spatial locality) | 418 |
步长为1的引用模式(stride-1 reference pattern) | 419 |
顺序引用模式(sequential reference pattern) | 419 |
步长为k的引用模式(stride-k reference pattern) | 419 |
6.3 存储器层次结构 | |
---|---|
存储器层次结构(memory hierarchy) | 421 |
安德鲁文件系统(Andrew File System,AFS) | 422 |
网络文件系统(Network File System,NFS) | 422 |
分布式文件系统(distributed file system,DFS) | 422 |
磁带(tapes) | 422 |
磁带机器人(tape robots) | 422 |
缓存【过程】(cashing) | 422 |
数据块(data blocks,连续的数据对象组块contiguous chunks of data objects) | 422,426 |
传送单元(transfer unit) | 423 |
缓存命中(cache hit) | 423 |
缓存不命中(cache miss) | 423,324 |
替换(replacing,驱逐evicting) | 423 |
牺牲块(victim block) | 423 |
替换策略(replacement policy) | 423 |
随机替换策略(random replacement policy) | 423 |
最近最少被使用(least recently used,LRU)替换策略 | 423,434 |
冷缓存(cold cache) | 423 |
强制性不命中(compulsory miss,冷不命中,cold miss) | 423 |
暖身(warmed up) | |
放置策略(placement policy) | 423 |
冲突不命中(conflict miss) | 424 |
容量不命中(capacity miss) | 424 |
缓冲区缓存(buffer cache) | 425 |
磁盘缓存(disk cache) | 425 |
控制器固件(controller firmware) | 425 |
网络缓存(network cache) | 425 |
浏览器缓存(browser cache) | 425 |
Web页(Web page) | 425 |
Web缓存(Web cache) | 425 |
Web代理服务器(Web proxy server) | 425 |
6.4 高速缓存存储器 | |
---|---|
高速缓存存储器(cache memory,简称cache或高速缓存,SRAM高速缓存存储器) | 425,9,324,358,382,399,418,422 |
L1高速缓存(L1 cache,一级缓存,level 1cache) | 425,9 |
L2高速缓存(L2 cache) | 425,9 |
L3高速缓存(L3 cache) | 425,9 |
高速缓存组(cache set) | 425 |
高速缓存行(cache line) | 426 |
有效位(valid bit) | 426,563 |
标记位(tag bit) | 426 |
组索引位(set index bit) | 426 |
块偏移位(block offset bit) | 426 |
直接映射高速缓存(direct-mapped cache) | 427 |
组选择(set selection) | 428 |
行匹配(line matching) | 428 |
字抽取(word extraction) | 428 |
抖动(thrash) | 431,565 |
组相联高速缓存(set associative cache) | 433 |
相联存储器(associative memory) | 433 |
最不常使用(Least-Frequently-Used,LFU)替换策略 | 434 |
全相联高速缓存(fully associative cache) | 434 |
写命中(write hit) | 437 |
直写(write-through) | 437 |
写回(write-back) | 437 |
修改位(脏位,dirty bit) | 437,579 |
写不命中(write misses) | 437 |
写分配(write-allocate) | 437 |
非写分配(not-write-allocate) | 437 |
i-cache(指令高速缓存) | 438 |
d-cache(程序数据高速缓存) | 438 |
统一的高速缓存(unified cache) | 438 |
不命中率(miss rate) | 439 |
命中率(hit rate) | 439 |
命中时间(hit time) | 439 |
不命中处罚(miss penalty) | 439 |
写缓冲区(write buffer) | 439 |
6.5 编写高速缓存友好的代码 | |
---|---|
高速缓存友好(cache friendly) | 440 |
6.6 综合:高速缓存对程序性能的影响 | |
---|---|
读吞吐量(read throughput,读带宽read bandwidth) | 444 |
紧密程序循环(tight program loop) | 444 |
存储器山(memory mountain) | 445 |
硬件预取(prefetching)机制 | 446,450 |
分块(blocking) | 450 |
7.0 | |
---|---|
链接(linking) | 464 |
编译时(compile time) | 465 |
加载时(load time) | 465 |
运行时(run time) | 465 |
分离编译(separate compilation) | 464 |
7.1 编译器驱动程序 | |
---|---|
编译器驱动程序(compiler driver) | 465 |
预处理器(preprocessor) | 465,3 |
编译器(compiler) | 465,3 |
汇编器(assembler) | 465,3 |
链接器(linker) | 465,3 |
翻译器(translator) | 465 |
加载器(loader,execve) | 466,464,482,484 |
7.2 静态链接 | |
---|---|
静态链接器(static linker) | 466 |
节(section) | 466,467 |
静态变量(static variable) | 466 |
符号引用(symbol reference) | 466 |
符号定义(symbol definition) | 466 |
7.3 目标文件 | |
---|---|
目标模块(object module) | 466 |
目标文件(object file) | 466 |
a.out格式(a.out format) | 467 |
可移植可执行(Portable Executable,PE)格式 | 467 |
Mach-O格式 | 467 |
可执行可链接格式(Executable and Linkable Format,ELF) | 467 |
7.4 可重定位目标文件 | |
---|---|
可重定位目标文件(reloacatable object file,可重定位目标程序,relocatable object program) | 467,4,465,466 |
ELF头(ELF header) | 467 |
节头部表(section header table) | 467 |
条目(entry) | 467 |
块存储开始(Block Storage Start,BSS) | 468 |
7.5 符号和符号表 | |
---|---|
符号(symbol) | 468,466 |
全局符号(global symbols) | 468 |
非静态的(nonstatic) | 468 |
外部符号(external) | 468 |
局部符号(local symbols) | 468 |
伪节(pseudosection) | 469 |
GNU READELF程序 | 469,496 |
7.6 符号解析 | |
---|---|
符号解析(symbol resolution) | 470,466 |
重载方法(overloaded methods) | 471 |
重整(mangling) | 471 |
恢复(demangling) | 471 |
多重定义的全局符号(duplicate symbol name) | 471 |
强符号(strong symbol) | 471 |
弱符号(weak symbol) | 471 |
静态库(static library) | 475 |
存档文件(archive file) | 476 |
AR工具(AR tool) | 476,496 |
7.7 重定位 | |
---|---|
重定位(relocation) | 479,466 |
重定位条目(relocation entry) | 479,466 |
有效地址(effective address) | 479,121 |
小型代码模型(small code model) | 479 |
中型代码模型(medium code model) | 479 |
大型代码模型(large code model) | 479 |
PC相对引用(PC-relative reference) | 480 |
绝对引用(absolute reference) | 481 |
7.8 可执行目标文件 | |
---|---|
可执行目标文件(executable object file,可执行目标程序,executable object program) | 483,3,465,465 |
入口点(entry point) | 483 |
完全链接的(fully linked) | 483 |
段头部表(segment header table) | 483 |
程序头部表(program header table) | 483 |
代码段(code segment,只读代码段read-only memory segment) | 484 |
数据段(data segment,读/写段read/write memory segment) | 484 |
7.9 加载可执行目标文件 | |
---|---|
加载(loading) | 464 |
7.10 动态链接共享库 | |
---|---|
共享库(shared library,共享目标shared object,共享对象) | 486,466 |
动态链接(dynamic linking) | 486 |
动态链接器(dynamic linker) | 486 |
DLL(动态链接库dynamic link libraries) | 486 |
7.11 从应用程序中加载和链接共享库 | |
---|---|
Java本地接口(Java Native Interface,JNI) | 489 |
7.12 位置无关代码 | |
---|---|
位置无关代码(position-independent code,PIC) | 489,486 |
全局偏移量表(Global Offset Table,GOT) | 490 |
延迟绑定(lazy binding) | 490 |
过程链接表(Procedure Linkage Table,PLT) |
7.13 库打桩机制 | |
---|---|
库打桩(library interpositioning) | 492 |
目标函数(target function) | 492 |
编译时打桩(Compile-Time Interpositioning) | 492 |
链接时打桩(Link-Time Interpositioning) | 492 |
运行时打桩(Run-Time Interpositioning) | 494 |
8.0 | |
---|---|
控制转移(control transfer) | 501 |
控制流(flow of control,control flow) | 501 |
异常控制流(Exceptional Control Flow,ECF) | 501 |
非本地跳转(nonlocal jumps) | 502 |
8.1 异常 | |
---|---|
异常(exception) | 502 |
处理器状态(processor’s state) | 502 |
事件(event) | 502 |
异常表(exception table) | 502 |
异常处理程序(exception handler) | 502,251,306 |
硬件异常(hardware exception) | 502 |
软件异常(software exception) | 502 |
异常号(exception number) | 503 |
异常表基址寄存器(exception table base register) | 503 |
中断(interrupt) | 504 |
系统调用(system call,陷阱trap) | 504,12,501 |
故障(fault) | 504 |
终止(abort) | 504 |
异步(asynchronously) | 504 |
中断处理程序(interrupt handler) | 504 |
同步(synchronize) | 504,541,701 |
故障指令(faulting instruction) | 504 |
除法错误(divide error) | 506 |
浮点异常(floating exception) | 506 |
一般保护错误(general protection fault) | 506 |
机器检查(machine check) | 506 |
段故障(segmentation fault,段故障) | 506,567 |
机器检查(machine check) | 506 |
系统级函数(system-level functions) | 506 |
8.2 进程 | |
---|---|
进程(process) | 508,11 |
执行中程序的实例(an instance of a program in execution) | 508 |
上下文(context) | 508,12,511 |
逻辑控制流(logical control flow,逻辑流logical flow) | 508 |
抢占(preempted,暂时挂起temporarily suspended) | 509 |
并发流(concurrent flow) | 509,681 |
并发地运行(run concurrently) | 509 |
并发(concurrency) | 509,11,17,681 |
多任务(multitasking,时间分片time slicing) | 509 |
时间片(time slice) | 509 |
并行流(parallel flow) | 509 |
并行地运行(running in parallel) | 509 |
并行地执行(parallel execution) | 509 |
私有地址(private address space) | 509 |
模式位(mode bit) | 510 |
内核模式(kernel mode,超级用户模式,supervisor mode) | 510,503 |
用户模式(user mode) | 510,503 |
特权指令(privileged instruction) | 510 |
/proc文件系统(/proc filesystem) | 510 |
上下文切换(context switch) | 511,11,12 |
进程表(process table) | 511 |
调度(scheduling) | 511 |
调度器(scheduler) | 511 |
陷阱处理程序(trap handler) | 511 |
8.3 系统调用错误处理 | |
---|---|
错误报告函数(error-reporting function) | 512 |
错误处理包装【函数】(error-handling wrappers) | 512,729 |
8.4 进程控制 | |
---|---|
进程ID(process ID,PID) | 513 |
【进程】状态(states) | 513 |
运行(running) | 513 |
停止(stopped) | 513 |
挂起(suspended) | 513 |
终止(terminated) | 513 |
退出状态(exit status) | 513 |
父进程(parent process) | 513 |
子进程(child process) | 513 |
进程图(process graph) | 515 |
拓扑排序(topological sort) | 515 |
回收(reaped) | 516 |
僵死进程(zombie) | 516 |
等待集合(wait set) | 516 |
非确定性(nondeterministic) | 519 |
环境变量列表(environment variable list) | 521 |
读/求值(read/evaluate) | 524 |
后台(background) | 524 |
前台(foreground) | 524 |
8.5 信号 | |
---|---|
信号(signal) | 526,501,513 |
磁芯存储器(core memory) | 527 |
转储内存(dumping core) | 527 |
信号处理程序(signal handler) | 528,251,531 |
待处理信号(pending signal) | 528 |
阻塞(block) | 528 |
信号掩码(signal mask)528 | |
进程组(process group) | 528 |
进程组ID(process group ID) | 528 |
作业(job) | 529 |
Unix管道(Unix pipe) | 529,626,684 |
设置信号处理程序(installing the handler) | 531 |
捕获信号(catching the signal) | 531 |
处理信号(handling the signal) | 531 |
隐式阻塞机制(implicit blocking mechanism) | 532 |
显式阻塞机制(explicit blocking mechanism) | 532 |
异步信号安全的函数(async-signal-safe functions) | 534 |
全局标志(global flag) | 536 |
原子的(atomic,不可中断的,uninterruptible,原子性atomicity) | 536,643 |
慢速系统调用(slow system calls) | 540 |
调用环境(calling environment) | 547 |
8.6 非本地跳转 | |
---|---|
非本地跳转(nonlocal jump) | 546 |
9.0 | |
---|---|
虚拟内存(virtual memory) | 559,12,24,424 |
9.1 物理和虚拟地址 | |
---|---|
物理地址(physical address) | 550,245 |
物理寻址(physical addressing,PA) | 550 |
虚拟寻址(virtual addressing) | 560 |
虚拟地址(virtual addresses,VA) | 560,12,24,245 |
地址翻译(address translation) | 560 |
9.2 地址空间 | |
---|---|
地址空间(address space) | 560,509 |
线性地址空间(linear address) | 561 |
虚拟地址空间(virtual address space) | 561 |
物理地址空间(physical address space) | 561 |
9.3 虚拟内存作为缓存的工具 | |
---|---|
虚拟页(virtual page,VP) | 561,201 |
物理页(physical page,PP,页帧page frame) | 561 |
SRAM缓存(SRAM cache) | 562 |
DRAM缓存(DRAM cache) | 562 |
页表(page table) | 562,511 |
页表条目(page table entry,PTE) | 562 |
页命中(page hit) | 563 |
缺页(page fault) | 564 |
缺页异常处理程序(page fault exception handler) | 564 |
交换(swapping,页面调度paging) | 565 |
换入(swapped in,页面调入paged in) | 565 |
换出(swapped out,页面调出paged out) | 565 |
按需页面调度(demand paging) | 565 |
分配页面(allocating page) | 565 |
活动页面(active page) | 565 |
工作集(working set,常驻集合resident set) | 565,424 |
9.5 虚拟内存作为内存保护的工具 | |
---|---|
许可位(permission bits) | 567 |
9.6 地址翻译 | |
---|---|
内存管理单元(Memory Management Unit,MMU) | 568,425,560 |
页表基址寄存器(Page Table Base Register,PTBR) | 568 |
虚拟页面偏移(Virtual Page Offset,VPO) | 568 |
虚拟页号(Virtual Page Number,VPN) | 569 |
物理页号(Physical Page Number,PPN) | 569 |
物理页面偏移(Physical Page Offset,PPO) | 569 |
页表条目地址(Page Table Entry Address,PTEA) | 569 |
翻译后备缓冲器(Translation Look-aside Buffer,TLB) | 570,324,425,435 |
TLB索引(TLB index,TLBI) | 571 |
TLB标记(TLB tag,TLBT) | 571 |
多级页表(multi-level page tables) | 571 |
9.7 案例研究:Intel Core i7/Linux内存系统 | |
---|---|
处理器封装(processor package) | 576 |
快速通道(QuickPath)互联 | 577,405 |
引用位(reference bit) | 579 |
区域(areas,段segments) | 580 |
任务结构(task structure) | 581 |
9.8 内存映射 | |
---|---|
内存映射(memory mapping) | 582,566 |
匿名文件(anonymous file) | 582 |
请求二进制零的页(demand-zero pages) | 582 |
交换文件(swap file,交换空间swap space,交换区域swap area) | 582 |
私有对象(private object) | 583 |
共享区域(shared area) | 583 |
私有区域(private area) | 583 |
写时复制(copy-on-write) | 583 |
私有的写时复制(private copy-on-write) | 584 |
9.9 动态内存分配 | |
---|---|
动态内存分配器(dynamic memory allocator) | 587 |
堆(heap) | 587 |
已分配的(allocated) | 587 |
空闲的(free) | 587 |
显式分配器(explicit allocator) | 587 |
隐式分配器(implicit allocator) | 587 |
malloc | 588 |
calloc | 588 |
realloc | 588 |
峰值利用率(peak utilization) | 591 |
有效载荷(payload) | 591,644 |
聚集有效载荷(aggregate payload) | 591 |
碎片(fragmentation) | 591 |
内部碎片(internal fragmentation) | 591 |
外部碎片(external fragmentation) | 591 |
填充(padding) | 592 |
隐式空闲列表(implicit free list) | 593 |
最小块大小(minimum block size) | 593 |
放置策略(placement policy) | 594 |
首次适配(first fit) | 594 |
下一次适配(next fit) | 594 |
最佳适配(best fit) | 594 |
假碎片(fault fragmentation) | 594 |
合并(coalescing) | 595 |
立即合并(immediate coalescing) | 595 |
推迟合并(deferred coalescing) | 595 |
边界标记(boundary tag) | 595 |
脚部(footer)【边界标记the boundary tag】 | 595 |
序言块(prologue block) | 597 |
结尾块(epilogue block) | 597 |
块指针(block pointer) | 599 |
显式空闲列表(explicit free list) | 603 |
后进先出(LIFO) | 603 |
地址顺序(address order) | 603 |
分离存储(segregated storage) | 604 |
大小类(size classes) | 604 |
简单分离存储(simple segregated storage) | 604 |
分离适配(segregated fit) | 604 |
伙伴系统(buddy system) | 605 |
9.10 垃圾收集 | |
---|---|
垃圾收集器(garbage collector) | 606,587 |
垃圾(garbage) | 606 |
垃圾收集(garbage collection) | 606,587 |
Lisp | 606,60 |
Mark&Sweep(标记&清除)算法 | 606 |
【有向directed】可达图(reachability graph) | 606 |
根结点(root node) | 606 |
堆结点(heap node) | 606 |
可达的(reachable) | 606 |
保守的垃圾收集器(conservative garbage collector) | 607 |
Mark&Sweep的标记阶段(mark stage in Mark&Sweep) | 607 |
Mark&Sweep的清除阶段(sweep stage in Mark&Sweep) | 607 |
守护进程(daemons) | 613 |
10.0 | |
---|---|
输入/输出(I/O) | 622 |
标准I/O库(standard I/O library) | 622 |
10.1 Unix I/O | |
---|---|
文件(file) | 622,14 |
Unix I/O | 622 |
【文件file】描述符(descriptor) | 622,586 |
标准输入(standard input) | 622 |
标准输出(standard output) | 622 |
标准错误(standard error) | 622 |
文件位置(file position) | 623 |
10.2 文件 | |
---|---|
类型(type) | 623 |
普通文件(regular file) | 582,623 |
文本文件(text file) | 2 |
二进制文件(binary file) | 2 |
文本行(text line) | 623 |
新行符(new line character,’\n’) | 623 |
换行符(line feed character,LF) | 623 |
目录(directory) | 623 |
链接(links) | 623 |
文件名(filename) | 623 |
父目录(parent directory) | 623 |
命名通道(named pipe) | 623 |
符号链接(symbolic links) | 623 |
字符设备(character device) | 623 |
块设备(block device) | 623 |
目录层次结构(directory hierarchy) | 623 |
根目录(root directory) | 623 |
当前工作目录(current working directory) | 624 |
路径名(pathname) | 624 |
绝对路径名(absolute pathname) | 624 |
相对路径名(relative pathname) | 624 |
10.4 读和写文件 | |
---|---|
不足值(short count) | 626 |
10.5 用RIO包健壮地读写 | |
---|---|
RIO(Robust I/O)包 | 626 |
读缓冲区(read buffer) | 627 |
10.6 读取文件元数据 | |
---|---|
元数据(metadata) | 632 |
10.7 读取目录内容 | |
---|---|
目录流(directory stream) | 633 |
10.8 共享文件 | |
---|---|
描述符表(descriptor table) | 634 |
文件表(file table) | 634,511 |
inode | 633 |
引用计数(reference count) | 634 |
v-node表(v-node table) | 634 |
10.9 I/O重定向 | |
---|---|
I/O重定向(I/O redirection) | 637 |
10.10 标准I/O | |
---|---|
标准I/O库(standard I/O library) | 638 |
流(stream) | 638 |
流缓冲区(stream buffer) | 638 |
10.11 综合:我该使用哪些I/O函数? | |
---|---|
全双工的(full duplex) | 639,647,651 |
11.1 客户端-服务器编程模型 | |
---|---|
客户端-服务器模型(client-server model) | 642 |
服务器(server) | 642 |
客户端(client) | 642 |
资源(resource) | 642 |
服务(service) | 642 |
事务(transaction) | 642 |
响应(response) | 642 |
主机(hosts) | 642 |
11.2 网络 | |
---|---|
计算机网络(computer network) | 643 |
局域网(Local Area Network,LAN) | 643 |
以太网(Ethernet) | 643 |
以太网段(Ethernet segment) | 643 |
集线器(hub) | 643 |
【硬件】端口(port) | 643 |
帧(frame) | 644 |
头部(header) | 644 |
网桥(bridge) | 644 |
桥接以太网(brideged Ethernet) | 644 |
路由器(router) | 644 |
互联网(internet) | 644 |
广域网(Wide-Area Network,WAN) | 644 |
全球IP因特网(global IP Internet,Internet) | 645 |
源主机(source host) | 645 |
目标主机(destination host) | 645 |
协议软件(protocol software) | 645 |
协议(protocol) | 645 |
命名机制(naming scheme) | 645 |
互联网络地址(internet address) | 645 |
传送机制(delivery mechanism) | 645 |
包(package) | 645,647 |
封装(encapsulation) | 645 |
11.3 全球IP因特网 | |
---|---|
TCI/IP协议(Transmission Control Protocol/Internet Protocol, 传输控制协议/互联网络协议) | 646 |
数据报(datagram) | 647,657 |
UDP(Unreliable Datagram Protocol,不可靠数据报协议) | 647 |
IP地址(IP address) | 647 |
因特网域名(Internet domain names) | 647,649 |
因特网协议版本4(Internet Protocol Version 4,IPv4) | 647 |
因特网工程任务组织(Internet Engineering Task Force,IETF) | 647 |
因特网协议版本6(Internet Protocol Version 6,IPv6) | 647 |
IP地址结构(IP address structure) | 647 |
网络字节顺序(network byte order) | 647 |
主机字节顺序(host byte order) | 647 |
点分十进制表示法(dotted decimal notation) | 648 |
子域(subdomain) | 649 |
一级域名(first-level domain name) | 649 |
ICANN(Internet Corporation for Assigned Names and Numbers,因特网分配名字数字协会) | 649 |
二级域名(second-level domain) | 649 |
DNS(Domain Name System,域名系统) | 649 |
主机条目结构(host entry structure) | 649 |
NSLOOKUP程序 | 650 |
回送地址(loopback address) | 650 |
因特网软件协会(Internet Software Consortium,www.isc.org) | 650 |
连接(connections) | 651 |
点对点(point-to-point) | 651 |
可靠的(reliable) | 651 |
套接字(socket) | 651,623,639 |
套接字地址(socket address) | 651 |
交换机(switch) | 651 |
【软件】端口(port) | 651 |
临时端口(ephemeral port) | 651 |
知名端口(ephemeral port) | 651 |
SMTP | 651 |
套接字对(socket pair) | 651 |
高级研究计划署(Advanced Research Projects Agency,APRA) | 652 |
国家科学基金会(National Science Foundation,NSF) | 652 |
11.4 套接字接口 | |
---|---|
套接字接口(socket interface,伯克利套接字Berkeley sockets) | 652,647,653 |
套接字描述符(socket descriptors) | 654,639 |
主动套接字(active socket) | 655 |
监听套接字(listening socket) | 655 |
监听描述符(listening descriptor) | 655 |
已连接描述符(connected descriptor) | 655 |
原始套接字(raw sockets) | 657 |
通配符地址(wildcard address) | 658 |
迭代服务器(iterative server) | 664 |
并发服务器(concurrent server) | 664,681 |
EOF(end-of-file) | 665,623 |
11.5 Web服务器 | |
---|---|
HTTP(Hypertext Transfer Protocol,超文本传输协议) | 665,651 |
【Web】浏览器(Web browser) | 665,425 |
【Web】内容(content) | 665 |
FTP | 665 |
HTML(Hypertext Markup Language,超文本标记语言) | 665 |
超链接(hyperlink) | 665 |
万维网(World Wide Web) | 665,417 |
Web服务器(Web server) | 665 |
MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展) | 666 |
静态内容(static content) | 666 |
服务静态内容(serving static content) | 666 |
动态内容(dynamic content) | 666,487 |
服务动态内容(serving dynamic content) | 666 |
URL(Universal Resource Locator,统一资源定位符) | 666 |
HTTP事务(HTTP transaction) | 667 |
TELNET程序 | 667 |
回车(carriage return,CR,’\r’) | 667 |
HTTP请求(HTTP request) | 667 |
请求行(request line) | 667 |
请求报头(request header) | 667 |
方法(method) | 667 |
GET方法(GET method) | 667 |
URI(Uniform Resource Identifier,统一资源标志符) | 668 |
持久连接(persistent connection) | 668 |
代理缓存(proxy cache) | 668 |
原始服务器(origin server) | 668 |
代理链(proxy chain) | 668 |
HTTP响应(HTTP response) | 668 |
响应行(response line) | 668 |
响应报头(response header) | 668 |
响应主体(response body) | 668 |
状态码(status-code) | 668 |
状态消息(status message) | 668 |
CGI(通用网关接口Common Gateway Interface) | 669 |
CGI程序(CGI program,CGI脚本CGI script) | 669,487,637 |
POST方法(POST method,HTTP POST请求HTTP POST requests) | 669 |
请求主体(request body) | 669 |
11.7 小结 | |
---|---|
RFCs(requests for comments,请求意见稿,Internet标准(草案)) |
12.0 | |
---|---|
并发程序(concurrent program) | 681 |
12.1 基于进程的并发编程 | |
---|---|
进程间通信(interprocess communication,IPC) | 684,681 |
Unix IPC | 684 |
先进先出(FIFOs) | 684 |
系统V共享内存(System V shared memory) | 684 |
系统V信号量(System V semaphores) |
12.2 基于I/O多路复用的并发编程 | |
---|---|
I/O多路复用(I/O multiplexing) | 681 |
描述符集合(descriptor sets) | 685 |
读集合(read set) | 685 |
准备好可以读(ready for reading) | 685 |
准备好集合(ready set) | 685 |
事件驱动(event-driven) | 686 |
状态机(state machine) | 687,681 |
状态(state) | 687 |
输入事件(input event) | 687 |
转移(转换,transition) | 687,701 |
自循环(self-loop) | 687 |
粒度(granularity) | 690 |
12.3 基于线程的并发编程 | |
---|---|
线程(thread) | 691,12,682 |
线程上下文(thread context) | 691,696 |
线程ID(Thread ID,TID) | 691 |
主线程(main thread) | 691 |
对等线程(peer thread) | 691 |
对等【线程】池(pool of peers) | 691 |
Posix线程(Pthreads) | 691 |
线程例程(thread routine) | 692 |
12.4 多线程程序中的共享变量 | |
---|---|
全局变量(global variables) | 697 |
本地自动变量(local automatic variables) | 697 |
本地静态变量(local static variables) | 697 |
共享的(shared) | 696,698 |
12.5 用信号量同步线程 | |
---|---|
同步错误(synchronization error) | 698 |
进度图(progress graph) | 701 |
初始状态(initial state) | 701 |
临界区(critical section) | 701 |
互斥的访问(mutually exclusive access) | 701 |
互斥(mutual exclusion) | 701 |
不安全区(unsafe region) | 701 |
安全轨迹线(safe trajectory) | 701 |
不安全轨迹线(unsafe trajectory) | 701 |
信号量(semaphore) | 702 |
信号量不变性(semaphore invariant) | 702 |
二元信号量(binary semaphore) | 703 |
互斥锁(mutex) | 703 |
加锁(locking) | 703 |
解锁(unlocking) | 703 |
占用(holding) | 703 |
计数信号量(counting semaphore) | 703 |
禁止区(forbidden region) | 704 |
生产者-消费者问题(producer-consumer-problem) | 704 |
有限缓冲区(bounded buffer) | 704 |
槽(slots) | 704 |
项目(item) | 704 |
读者-写者问题(readers-writers problem) | 706 |
写者(writers) | 707 |
读者(readers) | 707 |
第一类读者-写者问题(first readers-writers problem) | 707 |
第二类读者-写者问题(second readers-writers problem) | 707 |
饥饿(starvation) | 707 |
Java监视器(Java Monitor) | 708 |
预线程化(prethreading) | 708 |
12.6 使用线程提高并行性 | |
---|---|
加速比(speedup) | 714 |
强扩展(strong scaling) | 715 |
绝对加速比(absolute speedup) | 715 |
相对加速比(relative speedup) | 715 |
效率(efficiency) | 715 |
弱扩展(weak scaling) | 715 |
12.7 其他并发问题 | |
---|---|
线程安全性(thread safety) | 716 |
线程安全的(thread-safe) | 716 |
线程不安全的(thread-unsafe) | 716 |
加锁-复制(lock-and-copy) | 717 |
可重入函数(reentrant function) | 717 |
显式可重入的(explicitly reentrant) | 718 |
隐式可重入的(implicitly reentrant) | 718 |
可重入的(reentrant) | 718,534 |
深层复制(deep copy,深拷贝) | 718 |
竞争(race) | 719,541,696 |
死锁(deadlock) | 721 |
死锁状态(deadlock state) | 721 |
死锁区域(deadlock region) | 721 |
12.8 小结 | |
---|---|
同步原语(synchronization primitives) | 723 |
哲学家进餐问题(dining philosophers problem) | 723 |
打瞌睡的理发师问题(sleeping barber problem) | 723 |
吸烟者问题(cigarette smokers problem) | 723 |
A.1 Unix 系统中的错误处理 | |
---|---|
Unix风格的错误处理(Unix-style error handling) | 729 |
Posix风格的错误处理(Posix-style error handling) | 729 |
GAI风格的错误处理(GAI-style error handling) | 729 |
A.2 错误处理包装函数 | |
---|---|
Unix风格的错误处理包装函数(Unix-style error-handling wrappers) | 731 |
Posix风格的错误处理包装函数(Posix-style error-handling wrappers) | 731 |
GAI风格的错误处理包装函数(UGAI-syle error-handling wrappers) | 732 |