说起来半年没写什么东西也该清清灰了,这个学期真忙,去年买了这本书就一直在吃灰,这个寒假要对得起自己一点吧,把这些摘要和笔记放出来,也算是巩固一下。
----------分割线----------
第一章 计算机系统漫游
1.文件:
由ASCII字符构成的文件称为文本文件,其他的文件称为二进制文件。
2.应用程序生命周期:
1. 预处理:预处理器(cpp)修改.c原始程序,读取并插入.h,形成.i文件。
2. 编译:编译器(ccl)将高级语言翻译为汇编语言文本文件.s,统一解释。
3. 汇编:汇编器(as)将.s解释为机器语言生成.o可重定位的(二进制)目标程序。
4. 链接:链接器(ld)合并库函数.o与hello.o,生成可执行文件,由系统执行。
3.了解编译系统关注的问题:
1. 优化程序性能:swich-if/else开销对比,指针引用与数组索引的效率对比,函数调用开销,全局变量与本地变量开销对比。
2. 理解链接错误,避免漏洞:动态连接与静态链接库的区别,静态变量和全局变量的区别,重名变量和函数的排列对作用的影响,避免缓冲区等溢出错误。
4.系统的硬件组成:
1. 总线:贯穿系统的电子管道,设计传送定长的字(4字节,8字节)
2. I/O设备:通过控制器或者适配器与总线相连的设备(略)
3. 主存:一组动态随机存储器(DRAM)芯片组成,每个字节都有唯一地址索引。
4. 处理器:CPU(中央处理单元)解释并执行主存中的指令,核心设备称为寄存器,或称为程序计数器(PC),其始终指向主存中的某条指令,并执行(加载、存储、操作、跳转)
5.高速缓存的重要性:
通过高速缓存作为暂时集结区域,用来存放处理器近期可能需要的信息。
6.操作系统的重要抽象模型:
1. 进程:处理器、主存、I/O设备的抽象,也是对正在运行的程序的一种抽象(简介)
2. 线程:每一个进程可由多个线程单元组成,共享同样的代码和数据(简介)、
3. 虚拟存储器:是主存和I/O设备的抽象,提供每个进程独自占用主存的假象,并提供虚拟地址空间由以下层次(只读的代码数据,堆,共享库,栈,内核虚拟存储器)
4. 文件:字节序列,是对I/O设备的抽象,包括磁盘,键盘,显示器,甚至网络都可以视为文件。,为应用程序提供统一视角。
7.重要主题:
1.线程级并发:超线程,允许一个CPU执行多个控制流的技术。
2.指令级并行:现代处理器可以同时执行多条指令的属性。
3.单指令、多数据并行:一条指令执行并行多对操作,如4对浮点型同时做加法。