CSAPP 第八章 信号

CSAPP 第八章 信号

信号 发送信号 接收信号 阻塞和解除阻塞信号 信号 在进程这一节, 都在使用系统调用. 系统调用也是属于四种异常之一的陷阱. 四种异常也都是软硬件相结合的方式来进行工作的. 除了软硬件相结合的异常处理可以迅速改变状态, 操作系统还提供了更高层次的纯软件的异常, 叫做Linux信号. 一个信号就是一个

CSAPP 第八章 进程

CSAPP 第八章 进程

进程 - 状态 进程 - 创建进程 进程 - 回收子进程 进程 - 休眠 进程 - 加载和运行程序 进程 - 多进程程序 进程 - 状态 进程控制有很多系统调用函数.从程序员的角度, 可以认为进程有如下三种状态: 运行, 停止, 终止. 运行指的是进程在CPU上执行, 或者等待执行, 也就是说会被内

CSAPP 第八章 异常控制流

CSAPP 第八章 异常控制流

异常控制和信号构成了软件和硬件协同工作的基础机制, 这一篇先把基础理论学一下, 下一篇来看系统中实际操作进程的代码. 异常 异常的类别和处理 Linux X86-64系统中的异常 进程的概念 进程 - 用户模式和内核模式 进程 - 上下文切换 异常 异常控制流: Exceptional Contro

CSAPP 第七章 加载和动态链接机制

CSAPP 第七章 加载和动态链接机制

可执行目标文件 加载可执行文件 动态链接库 位置无关代码 库打桩 - 编译时打桩 库打桩 - 链接时打桩 库打桩 - 运行时打桩 可执行目标文件 链接的过程就是将可重定位目标文件生成可执行目标文件, 来看一下可执行目标文件的结构: 只读内存段(代码段) ELF头 程序头部表 .

CSAPP 第七章 链接工作原理

CSAPP 第七章 链接工作原理

进入全书的第二部分了, 之前想都没想过, 能一路读下来还都懂了. 第一部分讲的实际上是程序和硬件之间的关系, 第二部分讲的是程序和操作系统之间的关系. 第七章链接先翻了一遍, 这本书实际上是在说C语言以文件作为模块, 不同模块之间是如何互相组合成可执行文件的. 换成C语言的教学的话, 这一章主要就是

CSAPP 第六章 存储器体系

CSAPP 第六章 存储器体系

存储器简介 局部性 高速缓存 编写适合高速缓存的代码 总结 存储器简介 练习 6.2 计算一个磁盘的容量 磁盘容量 = 2 盘片 * 2面 * 10000个柱面=磁道 * 400个扇区 * 512个字节 = 8192000000, 换算成M 大概是 8192000000/1000/1000 = 81

CSAPP 第五章 依赖机器的优化

CSAPP 第五章 依赖机器的优化

现代处理器 处理器的抽象模型-关键路径 循环展开 并行计算 优化的限制因素 内存性能 章节总结 现代处理器 现代处理器并不是完全像之前的流水线模型一样 一条指令按照次序通过所有的流水线. 实际上一条指令的执行顺序不一定和机器代码的顺序相同, 译码也不是简单的将一条指令译成我们按照字节顺序取出的那样.

CSAPP 第五章 不依靠具体机器的优化

CSAPP 第五章 不依靠具体机器的优化

编译器的优化能力和局限性 表示程序性能 消除循环的低效 减少过程调用 消除内存引用 编译器的优化能力和局限性 编译器的一大安全的优化特点, 就是需要考虑程序所有的情况, 否则运行时可能会出问题. 比如在操作指针的时候, 如果两个参数相同, 其结果可能和希望的不同. 如果编译器无法确定, 则必须假设两

CSAPP 第四章 Y86-64的顺序实现与流水线处理器

CSAPP 第四章 Y86-64的顺序实现与流水线处理器

将处理指令的过程抽象为阶段 OPq系列指令和 rrmovq ,irmovq指令 rmmovq 和 mrmovq 指令 pushq 和 popq 指令 跳转指令 call 和 ret 条件传送系列指令 流水线 将处理抽象为阶段 要设计一个处理器, 需要将指令分为不同的阶段, 根据不同的阶段来优化. 各