深入理解计算机系统

信息就是位+上下文

源程序实际上就是一个由0和1组成的位(又称为比特 bit)序列,这些位被组织成8个一组,成为字节。每个字节(bytes)都表示程序中某个文本字符。

ASCII 标准来表示文本字符,这种方式实际上就是用一个唯一的字节大小的整数值来表示每个字符。

编译系统:预处理器 - > 编译器 -> 汇编器 -> 链接器

系统信息:hello程序最初放在磁盘上 -> 加载时拷贝到主存 -> 运行时主存拷贝到处理器 -> “hello, world\n” 开始在磁盘上 -> 再被拷贝到主存 -> 主存拷贝到显示设备

根据机械原理,较大的存储设备要比较小的存储设备运行得慢:处理器 > 主存 > 磁盘

进程:处理器 + 主存储器 + I/O设备

进程是操作系统对运行程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程都好像在独占地使用硬件。我们称之为并发运行,实际上是说一个进程的指令和另一个进程的指令交错执行的。操作系统实现这种交错执行的机制成为上下文切换。

线程:进程可以由多个线程组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。

虚拟存储器:为每个进程提供了一个假象,好像每个进程都在独占地使用主存。每个进程看到的存储器都是一致的,称之为虚拟地址空间。

文件:文件只不过就是字节序列,每个I/O设备,包括磁盘、键盘、显示器、甚至于网络,都可以被看成是文件。

三个基本抽象:

从某个系统的角度来看,网络就是一种I/O设备

大多数计算机使用8位块,或叫做字节(byte),来作为最小的可寻址的存储器单位,而不是访问存储器中单独的位。

每台计算机都有一个字长(word size),指明整数和指针数据的标称大小(norminal size)。因为虚拟地址是以这样的字来编码的,所以字长决定的最重要的系统参数就是虚拟地址空间的最大大小。也就是说,对于一个字长为 n 位的机器而言,虚拟地址的范围为 0~2^n-1,程序最多访问 2^n 字节。