文本文件:只由ASCII字符组成的文件
二进制文件:除文本文件外的所有文件
所有信息都是一串比特,区分比特当前含义的唯一方法就是上下文
GCC翻译.c文件过程
1.预处理阶段:处理#开头的命令,导入命令内容修改.c为.i
2.编译阶段:编译器把.i翻译成汇编语言程序
3.汇编阶段:.s被汇编器翻译成机器语言指令,并把指令打包为可重定位目标程序,保存在二进制文件.o中
4.链接阶段:将hello.c 中调用过的函数,如print函数 预先编译好的print.o与hello链接,最后产生可执行文件
系统的硬件组成
1.总线:负责携带信息在各个部件间传递,4字节总线机器32位,8字节64位
2.I/O:每个设备通过控制器(与主板一体)或者适配器(插在主办卡槽上)与IO总线连接
3.主存:由一组DRAM(动态随机存取存储器)组成,逻辑上来讲是一个线性的字节数组
4.处理器:执行主存中指令的引擎,核心是寄存器(大小为一个字。 字在不同机器上代表的字节数不同,16位机器上等于2字节,32位机器上的能够与4字节),称为程序计数器(PC)。任何时刻PC都指向内存中的某条机器指令
高速缓存技术:SRAM技术实现
存储器层级结构:
进程与线程
进程:进程是操作系统对正在运行的程序的一种抽象。并发运行,例如进程数小于核数时是真并发
两个进程的切换
线程:运行在进程的上下文里,享受同样的代码和数据
并发和并行:
1.线程级并发:超线程技术,使一个处理器能在单个周期决定执行哪个线程,更好的利用资源
2.指令级并行:同时执行多条指令,(超标量:处理器速度超过一周期一条指令)
3.单指令、多数据并行:即在最低层次上某些硬件允许一条指令产生多个可以并行执行的操作,即SIMD并行