CSAPP 第十章 重定向I/O

CSAPP 第十章 重定向I/O

读取文件元数据 读取文件目录 共享文件 I/O重定向 标准输入输出函数 读取文件元数据 在第九章的练习 9.5 里使用了一个通过元数据获取文件长度的方法, 当时使用的是 fstat 函数. 还有一个 stat 函数, 共同构成了获取文件元数据的方法. #include <unistd.h> #inc

CSAPP 第十章 系统级I/O

CSAPP 第十章 系统级I/O

终于来到了CSAPP的最后三章, 也是最后一个部分, 程序间的交互和通信. 终于从机器级的程序表示, 操作系统底层, 一直走到了应用级别. UNIX I/O 文件 打开和关闭文件 读和写文件 编写健壮的I/O包 Unix I/O Linux的一大特点是一切皆文件. 一个文件就是一个字节序列, 所有的

CSAPP 第九章 内存映射与分配

CSAPP 第九章 内存映射与分配

内存映射 共享对象与 fork execve 函数的本质 较低层次的分配内存函数 - mmap 函数和 munmap 函数 动态内存分配 mmap sbrk 和malloc的关系 垃圾收集 C程序中与内存相关的编程错误 内存映射 在这里说的虚拟内存区域, 就是通常意义上的一片虚拟内存的意思. 内存映

CSAPP 第九章 虚拟内存

CSAPP 第九章 虚拟内存

虚拟内存了, 到了CSAPP的最后三分之一了. 虚拟内存看了一下, 类似高速缓存是内存的映射, 虚拟内存也是一个映射的集合. 地址 页表 管理内存和保护内存 地址翻译机制 多级页表 地址翻译示例 Linux虚拟内存系统 地址 虚拟内存和异常控制机制一样, 也是软硬结合的, 由硬件异常, 硬件地址翻译

CSAPP 第八章 编写信号处理程序的要点

CSAPP 第八章 编写信号处理程序的要点

安全的信号处理的原则 正确的信号处理 可移植的信号处理 信号处理中的同步问题 显式的等待信号 非本地跳转 安全的信号处理的原则 由于信号处理程序和主程序 共享同样的变量, 所以如何与主程序通信, 处理信号又不影响主程序运行, 就很重要了. 一般有如下原则: 处理程序尽可能简单. 简单并不是说程序要短

CSAPP 第八章 信号

CSAPP 第八章 信号

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

CSAPP 第八章 进程

CSAPP 第八章 进程

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

CSAPP 第八章 异常控制流

CSAPP 第八章 异常控制流

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

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

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

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

CSAPP 第七章 链接工作原理

CSAPP 第七章 链接工作原理

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