1.1 程序是以字节序列的方式存储在文本中的,大部分计算机系统使用的是ASC 码来表示文本字符。在不同的上下文中,一个同样 的 字节序列可能 表示一个整数、浮点数、字符串、机器指令。
1.2 源文件到可执行的目标文件的转化过程:
源程序.C文件-->
通过“预处理”,替换头文件,转变成为修改后的“源程序”-->
通过“编译器”,将源文件编译成汇编程序-->
通过“汇编器,将汇编程序翻译成机器语言指令,生成可重定位的目标程序-->
通过重定向,将调用的系统函数的可执行文件合并到目标程序中
1.3 系统的硬件组成包含:总线、IO 、主存、处理器
1.4 一个简单程序的运行流程:
1)shell 程序将程序名字字符读取到寄存器,再放到内存(为何要读入寄存器,再存储到内存?)
2)从磁盘读取可执行文件到主存
3)处理器开始执行可执行文件的main函数
1.7 进程
1)每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。多线程之间比多进程之间更容易共享数据。
1.8虚拟内存
自底向上分别为:程序代码和数据、堆、共享库、栈、内核虚拟内存、
1.9 重要主题
1)Amdahl定律 当对系统的主要一部分做了重大的改进,整个系统获得的加速要明显小于这部分的加速比。
2)计算机系统有4个抽象:文件是对IO设备的抽象、虚拟内存是对程序存储器的抽象、进程是对一个正在运行的程序的抽象、虚拟机是对整个计算机的抽象。