十二天深入理解计算机系统(一)
计算机系统漫游
1 信息就是位+上下文
系统中所有的信息都是由一串位表示的,在不同的上下文中,一个同样的字节序列可能表示一个整数、浮点数、字符串或者机器指令。
2 文本文件和二进制文件
有ASCII字符构成的文件称为文本文件,所有其他文件都是二进制文件。
3 源程序到可执行目标文件的过程
1)预处理 根据以字符#开头的命令,修改原始的hello.c程序,生成hello.i文件。
2)编译阶段 把hello.i文件翻译为汇编语言的hello.s文本文件。
3)汇编阶段 把hello.s翻译为可重定位目标文件hello.o
4)连接阶段 合并hello.o、printf.o生成可执行目标文件
4 字
与总线相关的概念,总线每次可以转送一个字,字中的字节数是一个基本的系统参数,一般为四个字节。
5 进程
是对处理器、主存、I/O设备的抽象,比如我们运行一个程序,看上去只有这个程序在使用处理器、主存和I/O设备。
6 虚拟存储器
是主存和I/O设备的抽象(参考文章内存就是RAM?更能体会),每个进程看到的是一致的存储器。详细介绍请参考我前面的文章内存管理之程序内存分布
7 文件
是I/O设备的抽象,为应用程序提供了一个统一的视角,来看待系统中可能含有的所有各式各样的I/O设备。
8 多处理器 多核以及超线程
这几个概念可以参考我前面的文章超线程 多核 多处理器区别
9 超标量
指在一个时钟周期执行比一条指令更快的速率。
10 总结
本章主要介绍一些基本概念。但是我们除了了解这些基本概念外,我们要学到一种基本思想--抽象,比如抽象出进程、虚拟存储器、文件以及我们在编程中对代码抽象出了函数,对函数抽象出了类等等。