CSAPP
文章平均质量分 63
evanoma
d-y-chp@live.cn
展开
-
信号的表示和处理
位级运算:& 与| 或~ 非^ 异或逻辑运算:非0参数为true,能够通过第1个参数得到表达式的值则不会对第2个参数求值&& 与|| 或! 非算数右移:左边补符号位 逻辑右移:左边补 0整型 类型扩展:无符号数:加0有符号数:加符号位(对于负数来说,)类型截取:无符号数:舍弃多出的高位有符号数:舍弃后并将新的最高位作为符号位由于无符号数不会小于0,注意尽量避免将混用原创 2017-07-25 15:49:46 · 393 阅读 · 0 评论 -
并发编程
并发程序:使用应用级并发进程驱动将每个逻辑控制流视为进程。内核自动管理流,进程管理开销较大。流必须通过IPC进行通信。难以共享资源,但同时也避免了可能带来的共享问题例如服务器的父进程接受不同客户端的请求,然后创建1个子进程为客户提供服务。(图CP682)事件驱动将流视为状态机: 状态输入事件转移(根据当前状态和输入事件转移到下一个状态)服务器通过I/O多路复用响原创 2017-08-24 11:31:14 · 291 阅读 · 0 评论 -
动态内存分配
动态内存分配器管理heap(堆:虚拟内存区域的一部分)。显式分配器: 应用分配并且回收空间(C 语言中的 malloc 和 free)隐式分配器(垃圾收集器): 检测已分配块不再被程序使用时就释放它。限制:不能操作和修改未分配的内存不同的块需要对齐1.碎片:内部碎片 由于实际载荷的大小小于已分配块(例如对齐),所出现的无法利用的空间。外部碎片 内存中没有原创 2017-08-21 17:32:02 · 422 阅读 · 0 评论 -
存储
RAM(随机访问存储器)静态: SRAM只要有电,则永远保持 用于高速缓存动态 电容充电,不可持续 用于主存和帧缓存区 d×w(d等于行列之积,w为每个超单元存储的位数)的DRAM芯片通过内存控制器电路与CPU进行交流。(图CP401) 响应时先将目标行复制到缓存区,再选择对应的单元。 位于主板的内存模块封装多个DRAM芯片,当CPU需要取出内存地址A的内容时,将地址广播到每原创 2017-08-21 09:31:31 · 210 阅读 · 0 评论 -
链接
编译系统:预处理器 将头文件的内容插入到程序文本中。得到.i文件编译器 将.i文件翻译成.s文件(汇编语言)汇编器 将.s文件翻译成.o文件(可重定位目标程序,二进制文件)链接器 将程序中所包含函数所对应的.o文件合并到 汇编器生成的.o文件。得到可执行文件。原创 2017-08-21 09:30:32 · 232 阅读 · 0 评论 -
虚拟内存
功能:缓存 将主存作为磁盘的高速缓存,在主存和磁盘之间传递数据。 主存被组织成M个连续字节单元组成的数组,每个字节都有唯一的物理地址。(图9-2) n位地址空间:2^n个地址的虚拟地址空间 m位地址空间:2^m个地址的虚拟地址空间 VP(虚拟页):2^p个地址未分配的未缓存的:已分配但未缓存在物理内存中缓存的PP(物理页,页帧):2^p个地址 SRAM缓存:CPU和主存之间的L1,原创 2017-08-18 09:51:25 · 317 阅读 · 0 评论 -
系统输入输出
文件:可以看做字节的序列。所有的 I/O 设备也是用文件来表示 文件类型:普通文件: 文本文件(文本文件只包含 ASCII 或 Unicode 字符)和二进制文件目录: 相关一组文件的索引,包含一个以树状结构组织的链接(link)数组,并且每个目录至少包含两条记录(当前目录和上一层目录)。通过绝对/相对路径名来指定位置。套接字:和另一台机器上的进程通信的类型结合『所有东西都是文件』这个原创 2017-08-16 11:03:37 · 712 阅读 · 0 评论 -
ECF
Exceptional Control Flow(异常控制流)处理器检测到异常时,通过异常表调用异常处理程序进行处理。 可以通过跳转和分支调用和返回改变控制流。但是当系统状态发生变化时,需要ECF进行处理。硬件层:异常(图8-1) 处理器状态发生变化(event)时,通过异常表调用相应的异常处理程序(运行在内核模式下)。 中断:异步异常。由处理器外面发生的事件引起的,原创 2017-08-15 16:10:48 · 880 阅读 · 0 评论 -
程序优化
CPE:每个元素的周期数 例如4Hz处理器表示时钟运行频率为每秒4*10^9个周期,以元素为x轴,周期为y轴,斜率为CPE。所以程序的运行时间主要由CPE决定。(图CP346:求数组元素之和)妨碍优化的因素:程序中严重依赖于执行环境的方面。void f1(int *p1,int *p2){ *p1+=*p2; *p1+=*p2;}//由于编译器只实行安全的优化,由于编译器无法得知原创 2017-07-25 15:43:18 · 376 阅读 · 0 评论 -
程序的机器级表示
操作数:CP121立即数(Imm):以$开头立即数寻址寄存器值(Reg):16位寄存器的低1字节,2字节,4字节或8字节。ra表示寄存器a,R[ra]表示寄存器的值寄存器寻址内存引用(Mem) 根据计算出的地址来访问某个内存位置Mb[Addr]表示存储在以地址开始b个字节的引用MOV类指令将数据从一个位置复制到另一个位置第1个是源操作数,第2个是目的操作数2个操作数不能都指向原创 2017-07-25 15:58:11 · 522 阅读 · 0 评论 -
处理器体系结构
ASCII标准:以单字节的整数来表示字符 文本文件:由ASCII字符构成(例如.c,.i,.s文件,其他都为二进制文件)编译系统:预处理器 将头文件的内容插入到程序文本中。得到.i文件编译器 将.i文件翻译成.s文件(汇编语言)汇编器 将.s文件翻译成.o文件(可重定位目标程序,二进制文件)链接器 将程序中所包含函数所对应的.o文件合并到 汇编器生成的.o文件。得到可执行原创 2017-08-25 09:13:59 · 363 阅读 · 0 评论