计算机系统是由硬件和系统软件组成的,他们共同来运行应用程序。
- 信息就是位+上下文
一个程序的生命是从一个源程序(source program)或者源文件(source file)开始的,该源程序是由程序员通过编辑器创建并保存为文本文件的,文件名就是(例如Hellow.c)。
源程序实际上就是一个由0和1组成的位(比特)序列,这些位被组织成8个一组,称为字节,每个字节表示程序中的某个文本字符。大部分都使用ASCII码来表示文本字符。每行文本都是以一个看不见的换行字符“\n”结束的,所对应的整数值是10。只由ASCII码构成的文件称为文本文件,其他的文件称为二进制文件(例如音频图像)。 - 程序被其他程序翻译成不同的格式
刚开始的程序也就是源程序,是可以被人读懂的程序。但是为了能在计算机中运行程序,每条语句都得被其他程序转化成一系列的低级机器语言指令。然后这些指令按照一种称为可执行目标程序(executable object program)的格式打好包,并以二进制磁盘文件的形式存放起来,也称位目标程序。 - 了解编译系统如何工作是大有益处的
优化程序性能
理解链接时出现的错误
避免安全漏洞 - 处理器读并解释储存在存储器中的指令
此时该目标文件已经存放在磁盘上 - 系统的一部分硬件
寄存器:寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。它可以并行也可以串行。
-主存:是一个临时存储设备,在处理器执行程序的时候,被用来存放程序和程序处理的数据。· - 执行程序
shell程序执行它的指令,等待我们输入命令。当我们在键盘上输入字符串“./hello”后,shell程序就逐一从磁盘读取字符到寄存器,再把它存放到存储器中。
而利用DMA的技术,数据可以不通过处理器而直接从磁盘到达主存,然后处理器开始执行目标程序中的指令,然后这些字节从存储器中拷贝到寄存器堆,再从寄存器堆中拷贝到显示设备。
- 高速缓存
系统花费大量的时间把信息从一个地方挪到另一个地方。以后将学习高速缓存存储器SRAM。 - 进程
进程是操作系统对运行程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程都好像在独占使用硬盘,我们称之为并发运行,实际上是一个指令和另一个指令是交错执行的,称为上下文切换。在任何时候,系统上都只有一个进程正在运行。当操作系统决定从当起进程转移控制权到某个新进程时,它就会上下文切换,即保存当前进程的上下文,恢复新进程的上下文,然后将控制权转移到新进程,新进程就会从它上次停止的地方开始。 - 线程
一个进程实际上可以由多个线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。