csapp学习笔记¶
第一章.计算机系统漫游¶
- 总结:
- 计算机系统是由硬件和系统软件组成的,它们共同协作以运行应用程序。计算机内部的信息被表示为一组组的位,它们依据上下文有不同的解释方式。程序被其他程序翻译成不同的形式,开始时是ASCII文本,然后被编译器和链接器翻译成二进制可执行文件。
- 处理器读取并解释存放在主存里的二进制指令。因为计算机花费了大量的时间在内存、I/O设备和CPU寄存器之间复制数据,所以将系统中的存储设备划分成层次结构一-CPU 寄存器在顶部,接着是多层的硬件高速缓存存储器、DRAM主存和磁盘存储器。在层次模型中,位于更高层的存储设备比低层的存储设备要更快,单位比特造价也更高。层次结构中较高层次的存储设备可以作为较低层次设备的高速缓存。通过理解和运用这种存储层次结构的知识,程序员可以优化C程序的性能。
- 操作系统内核是应用程序和硬件之间的媒介。它提供三个基本的抽象: (1)文件是对I/0设备的抽象;(2)虚拟内存是对主存和磁盘的抽象; (3)进程是处理器、主存和I/O设备的抽象。
- 最后,网络提供了计算机系统之间通信的手段。从特殊系统的角度来看,网络就是一种I/O设备。
第一部分 程序结构和执行¶
第二章 信息的表示和处理¶
2.1 信息存储¶
- 大多数计算机使用八位的块也就是字节作为最小的可寻址的内存单位,机器级程序将内存视为一个非常大的数组,称为虚拟内存.
- 每台计算机都有一个字长,决定最重要的系统参数——虚拟空间的最大大小.也就是说,对于一个字长为w位的机器而言,虚拟地址空间的范围为0~2^w-1.
- 移位运算:
- 几乎所有的编译器都对有符号数使用算术右移,而对于无符号数,右移必须是逻辑的(C 语言)
- 而对于 Java x>>k是算数右移, x>>>k 是逻辑右移
- 对于 C 语言,移动k mod w(k>=w)
- 四则运算优先级大于移位运算