
CSAPP
ziggy7
这个作者很懒,什么都没留下…
展开
-
第12章 并发编程
概念:逻辑控制流在时间上重叠,就是并发的。(开始结束时间区间有交叉) 用处:●访问慢速I/O设备:在等待如磁盘的数据时,内核运行其他进程使CPU保持繁忙●与人交互:计算机要有多任务能力,可以同时进行多个操作●通过推迟工作降低延迟:推迟其他操作,在CPU空闲时候运行●服务多个网络客户端●多核机器上并行计算 三种构造并发程序的方法:●进程:控制流必须使用显式的IPC机制●I/O多路复用:应用程序在一个进程的上下文中显示地调度自己的逻辑流。逻辑流被模型化为状态机。所有的流属于一个进程,共享同一原创 2020-05-27 16:50:12 · 317 阅读 · 0 评论 -
第11章 网络编程
11.1 客户端-服务器编程模型 服务器管理某种资源,并且通过操作这种资源来为它的客户端提供某种服务11.2 网络 以太网:最流行的局域网技术,通常跨越一些小的区域。 桥接以太网:使用一些电缆和叫作网桥的小盒子,多个以太网段跨越连接成较大的局域网,称为桥接以太网。 互联网络(小写的internet):多个不兼容的局域网通过叫作路由器的特殊计算机连接起来,组成一个互联网络 互联网络特性:能由采用完全不同和不兼容技术的各种局域网和广域网组成。 特性的实现:如何在不兼容的网络传输数据?●命名原创 2020-05-26 08:34:11 · 187 阅读 · 0 评论 -
第10章 系统级I/O
概念:输入/输出是在主存和外部设备之间复制数据的过程。 为什么要学习Unix I/O:●可以了解其他的系统概念●有时候只能使用Unix I/O,如网络编程中使用I/O库存在问题10.1 Unix I/O 文件:一个Linux文件就是一个m字节的序列,所有的I/O设备都被模型化为文件 读取文件方式:●打开文件:一个程序得到一个描述符来访问一个文件●三个默认打开的文件:0即stdin、1即stdout、2即stderr●改变当前的文件位置:对于每个进程打开的每个文件,保持一个文件位置k,即从原创 2020-05-25 10:19:11 · 290 阅读 · 0 评论 -
第9章 虚拟内存
目的:为了更加有效地管理内存并且少出错,现代系统提供了一种对主存的抽象概念,叫做虚拟内存。 能力:1、将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保留活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,高效使用了主存。2、为每个进程提供了一致的地址空间,从而简化了内存管理3、它保护了每个进程的地址空间不被其他进程破坏。9.1物理和虚拟寻址 物理寻址:主存被组织成一个由M个连续字节大小的单元组成的数组。每字节都有一个唯一的物理地址。 虚拟寻址:CPU通过生成一个虚原创 2020-05-24 21:18:14 · 719 阅读 · 0 评论 -
第8章 异常控制流
8.1异常 异常就是控制流的突变,用来响应处理器状态中的某些变化。8.1.1异常处理 系统中可能的每种类型的异常都分配了一个唯一的非负整数的异常号。由处理器设计者和操作系统内核的设计者分配。8.1.2异常的类别●中断:异步,是处理器外部的I/O设备的信号的结果,除了中断外的异常类型都是同步的,是执行当前指令的结果,这类指令称为故障指令。●陷阱(系统调用):是有意的异常,用户需要向内核请求服务如read、fork。处理器提供用户syscall n(服务号)指令允许内核服务受控的访问...原创 2020-05-19 20:50:28 · 254 阅读 · 0 评论 -
第7章 链接
链接将各种代码和数据片段收集并组合成一个单一文件,这个文件可被加载(复制)到内存并执行。链接可以执行于编译时(源代码到机器代码),也可以执行于加载时(程序被加载器加载到内存并执行时),甚至可以执行于运行时,也就是由应用程序来执行。链接由链接器自动执行。 链接器使得分离编译成为可能,不用将大型的应用程序组织为一个巨大的源文件。而是可以把它分解成小的模块,可以独立修改和编译这些模块。7.1编译器驱动程序 linux> gcc -Og -o prog main.c sum.c GCC将源代码转化原创 2020-05-18 15:06:03 · 391 阅读 · 0 评论 -
第6章:存储器层次结构
简单模型中,存储器系统是一个线性的字节数组,而CPU能够在一个常数时间内访问每个存储器位置。 实际上,存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。CPU保存最常用的数据(0个周期),靠近CPU的高速缓存存储器(4-75个周期)为主存储器(上百个周期)中数据和指令的缓冲区域。主存缓存磁盘(几千万个周期)上的数据。磁盘缓存网络上的数据。 局部性:局部性好的程序倾向于从存储器较高层次访问数据,性能更好。存储技术6.1.1随机访问存储器RAM RAM分为动态(DRAM)与静态(SR原创 2020-05-17 15:50:01 · 395 阅读 · 0 评论 -
第5章 优化程序性能
编写高效程序:1.适当的算法和数据结构2.编译器能够有效优化以转换成高效可执行代码的源代码3.处理运算量特别大的计算,将一个任务分成多个部分 程序优化:1.消除不必要的工作2.利用处理器提供的指令级并行能力,同时执行多条指令 研究程序的汇编代码是理解编译器以及产生的代码会如何运行的最有效手段之一。5.1优化编译器的能力和局限性 编译器会考虑各种特殊情况如内存别名使用(两个指针指向一个位置),采取最安全的优化。5.2表示程序性能 引入度量标准:每元素的周期表5.3程序实例5.4消原创 2020-05-17 13:33:39 · 348 阅读 · 0 评论