1.1信息就是位+上下文
只由ASCLL字符构成的文件称为文本文件,所有其他文件都称为二进制文件。
系统中的所有的信息都由一串比特表示。区分不同数据对象的唯一方法是读到这些数据对象时的上下文。
1.2程序被其他程序翻译成不同的格式
预编译,编译,汇编,链接。
hello.c源程序---预处理--->
hello.i修改后的源程序---编译器--->
hello.s汇编程序---汇编器---->
hello.o可重定位目标程序(二进制)---链接器--->
hello可执行程序(二进制)。
详细过程:
【Linux】编译的四个步骤_编译linux_曦樂~的博客-CSDN博客
1.3了解编译系统如何工作是大有益处的
了解编译系统的好处:1.优化程序性能2.理解链接时出现的错误3.避免安全漏洞。
1.4处理器读并解释储存在内存中的指令
shell命令解释器:输出提示符,等待输入命令行并执行。若命令行第一个单词不是内置的shell命令,shell会假设它是一个可执行文件的名字,加载并执行这个文件。
1.4.1系统的硬件组成
1.总线
贯穿整个系统,携带信息字节并传递。传递定长字,字中的字节数为字长。字长:4个字节(32位),8个字节(64位)。
2.I/O设备
系统与外部世界联系的通道。它们通过控制器或适配器与I/O总线相连。
如:输入设备:键盘、鼠标,输出设备:显示器,存储设备:磁盘。
3.主存
临时存储设备,存放执行的程序和程序处理的数据。由一组动态随机存取存储器(DRAM)芯片组成。是一个线性的字节数组,每个字节都有其唯一的地址。
4.处理器
中央处理单元(CPU)的简称,用于执行(解释)主存中的指令。核心是一个一个字大小的寄存器,PC(程序计数器), PC指向主存中该执行的指令,执行完后PC+1指向下一条该执行的指令。
1.4.2运行hello程序
shell等待输入命令,./hello后将字符读入寄存器->内存;
输入完命令后shell执行指令加载hello文件,文件中的代码和数据:磁盘->主存;
处理器执行main:"hello,world\n"主存->复制到寄存器文件->复制到显示设备;
1.5高速缓存至关重要
高速缓存存储器(高速缓存,cache),存放处理器近期可能会需要的信息。解决处理器快而磁盘->主存->处理器内容多复制速度慢的问题,提升程序的性能。