信号 发送信号 接收信号 阻塞和解除阻塞信号 信号 在进程这一节, 都在使用系统调用. 系统调用也是属于四种异常之一的陷阱. 四种异常也都是软硬件相结合的方式来进行工作的. 除了软硬件相结合的异常处理可以迅速改变状态, 操作系统还提供了更高层次的纯软件的异常, 叫做Linux信号. 一个信号就是一个
进程 - 状态 进程 - 创建进程 进程 - 回收子进程 进程 - 休眠 进程 - 加载和运行程序 进程 - 多进程程序 进程 - 状态 进程控制有很多系统调用函数.从程序员的角度, 可以认为进程有如下三种状态: 运行, 停止, 终止. 运行指的是进程在CPU上执行, 或者等待执行, 也就是说会被内
异常控制和信号构成了软件和硬件协同工作的基础机制, 这一篇先把基础理论学一下, 下一篇来看系统中实际操作进程的代码. 异常 异常的类别和处理 Linux X86-64系统中的异常 进程的概念 进程 - 用户模式和内核模式 进程 - 上下文切换 异常 异常控制流: Exceptional Contro
可执行目标文件 加载可执行文件 动态链接库 位置无关代码 库打桩 - 编译时打桩 库打桩 - 链接时打桩 库打桩 - 运行时打桩 可执行目标文件 链接的过程就是将可重定位目标文件生成可执行目标文件, 来看一下可执行目标文件的结构: 只读内存段(代码段) ELF头 程序头部表 .
进入全书的第二部分了, 之前想都没想过, 能一路读下来还都懂了. 第一部分讲的实际上是程序和硬件之间的关系, 第二部分讲的是程序和操作系统之间的关系. 第七章链接先翻了一遍, 这本书实际上是在说C语言以文件作为模块, 不同模块之间是如何互相组合成可执行文件的. 换成C语言的教学的话, 这一章主要就是
存储器简介 局部性 高速缓存 编写适合高速缓存的代码 总结 存储器简介 练习 6.2 计算一个磁盘的容量 磁盘容量 = 2 盘片 * 2面 * 10000个柱面=磁道 * 400个扇区 * 512个字节 = 8192000000, 换算成M 大概是 8192000000/1000/1000 = 81
现代处理器 处理器的抽象模型-关键路径 循环展开 并行计算 优化的限制因素 内存性能 章节总结 现代处理器 现代处理器并不是完全像之前的流水线模型一样 一条指令按照次序通过所有的流水线. 实际上一条指令的执行顺序不一定和机器代码的顺序相同, 译码也不是简单的将一条指令译成我们按照字节顺序取出的那样.
编译器的优化能力和局限性 表示程序性能 消除循环的低效 减少过程调用 消除内存引用 编译器的优化能力和局限性 编译器的一大安全的优化特点, 就是需要考虑程序所有的情况, 否则运行时可能会出问题. 比如在操作指针的时候, 如果两个参数相同, 其结果可能和希望的不同. 如果编译器无法确定, 则必须假设两
将处理指令的过程抽象为阶段 OPq系列指令和 rrmovq ,irmovq指令 rmmovq 和 mrmovq 指令 pushq 和 popq 指令 跳转指令 call 和 ret 条件传送系列指令 流水线 将处理抽象为阶段 要设计一个处理器, 需要将指令分为不同的阶段, 根据不同的阶段来优化. 各