CSAPP chapter1
1.信息就是位+上下文
8位=1字节 AcsII将字符用7位来编码
字符对应的编码格式不同,字符展现的效果也不同,这就是出现乱码的原因
Unicode 是一个字符集 UTF-8是一种针对unicode字符集的编码方法跟ASCII是等同的概念
文本文件:纯字符文件 二进制文件:非文本文件
关于ASCII和UNICODE的详文: http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html http://www.joelonsoftware.com/articles/Unicode.html
2.C程序的生命周期
预处理:预处理器(cpp)根据#开头的命令,修改原始的C程序,得到后缀为.i的C程序文件。
编译:编译器(ccl)将C语言翻译成汇编语言,得到汇编程序文件
汇编:汇编器(as)将汇编语言翻译成机器指令,然后将机器指令打包成一种可重定位的(relocatable)目标程序的格式,保存在后缀为.o的目标文件中。目标文件的字节编码不是字符,是机器语言指令。
链接:将库文件以某种方式并入目标文件,得到可执行文件。
3.系统硬件组成
总线的定长传输的单位为字,字包含字节的个数为字长。
缓存:SRAM(静态随机访问存储器)
静态随机存取存储器(Static Random Access Memory, SRAM)是随机存取存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。相对之下,动态随机存取内存(DRAM)里面所储存的数据就需要周期性地更新。然而,当电力供应停止时,其内储存的数据还是会消失,这与在断电后还能储存资料的ROM或快闪存储器仍然是不同的。
主存:DRAM(动态随机访问存储器)
与SRAM相比,DRAM的优势在于结构简单——每一个比特的数据都只需一个电容跟一个晶体管来处理,相比之下在SRAM上一个比特通常需要六个晶体管。正因这缘故,DRAM拥有非常高的密度,单位体积的容量较高因此成本较低。但相反的,DRAM也有访问速度较慢,耗电量较大的缺点。
CPU:重复执行相同的基本任务:从PC(程序计数器)指向的存储器读取指令,解释指令的位,执行指令的简单操作,更新PC指向下一条指令。
DMA技术:直接内存存取(Direct Memory Access,DMA)是计算机科学中的一种内存访问技术。它允许某些电脑内部的硬件子系统(电脑外设),可以独立地直接读写系统内存,而不需绕道中央处理器(CPU)。
操作系统(OS):所有的应用程序对硬件的操作尝试都需要经过操作系统。
操作系统的两个主要用途:合理分配应用程序的硬件资源;为应用程序操作硬件提供一致的接口
4.进程,线程,虚存,文件
进程:OS对运行程序的抽象,一个OS可以运行多个进程,但每个进程看起来像独占的使用硬件
实际上,进程是交错执行的,OS实现这种交错执行的机制是上下文切换(context switching)。任何时刻,系统都只有一个进程正在运行。
线程:进程的执行单元,每个线程都共享进程的代码和全局数据。
虚存:为进程提供了一个每个进程都在独占使用主存的假象。
虚拟地址空间的区:
程序代码和数据区,堆(malloc,free 可动态扩展收缩),共享库(标准库,数学库的代码和数据),栈(实现函数调用,递归),内核虚拟储存器(OS驻留的区域,不允许应用程序读写)
文件:字节序列,可以将I/O设备,网络看成一个文件。
简言之:文件是对I/O设备的抽象,虚存是对磁盘和主存的抽象,进程是对磁盘,主存和I/O设备的抽象。
浙公网安备 33010602011771号