第1章--计算机系统漫游

一、信息就是位+上下文

系统中所有的信息–包括磁盘文件、内存中的程序、内存中存放的用户数据以及网络上传送的数据,都是由一串比特表示的。
区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文。
比如,在不同的上下文中,一个同样的字节序列可能表示一个整数、浮点数、字符串或者机器指令。

二、程序被其他程序翻译成不同的格式

在Unix系统上,从源文件到目标文件的转化是由GCC编译器驱动程序完成的。
这个过程可分为四个阶段,执行这四个阶段的程序(预处理器、编译器、汇编器和链接器)一起构成了编译系统。

  1. 预处理阶段
    预处理器(cpp)根据以字符#开头的命令,修改原始的.c文件,生成.i文件。
  2. 编译阶段
    编译器(ccl)将.i文件翻译成.s文件,它包含一个汇编语言程序。
  3. 汇编阶段
    汇编器(as)将.s文件翻译成机器语言指令,把这些指令打包成一种叫做可重定位目标程序的格式,并将结果保存在.o文件中。
  4. 链接阶段
    链接器(ld)将.o文件和其他需要用到的.o文件以一定的规则合并在一起,生成可执行文件。

三、系统的硬件组成

  1. 总线
    贯穿整个系统的是一组电子管道,称作总线,他携带信息字节并负责在各个部件间传递。
    通常总线被设计成传送定长的字节块,也就是字(word)。
  2. I/O设备
    I/O(输入/输出)设备是系统与外部世界的联系通道。
    每个I/O设备都通过一个控制器或适配器与I/O总线相连。
  3. 内存
    内存是一个临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据。
    从物理上来说,内存是由一组动态随机存取存储器(DRAM)芯片组成的。
    从逻辑上来说,存储器是一个线性的字节数组,每个字节都有其唯一的地址(数组索引),这些地址是从零开始的。
  4. 处理器
    中央处理单元(CPU),简称处理器,是解释(或执行)存储在内存中指令的引擎。
    处理器的核心是一个大小为一个字的存储设备(或寄存器),称为程序计数器(PC)。
    在任何时候,PC都指向内存中的某条机器语言指令(即含有该条指令的地址)。

四、存储设备形成层次结构

在处理器和一个较大较慢的设备(例如内存)之间插入一个更小更快的存储设备(例如高速缓存)已经成为一个普遍的做法。
实际上,每个计算机系统中的存储设备都被组织成了一个存储器层次结构。
在这个层次结构中,从上至下,设备的访问速度越来越慢、容量越来越大,并且每字节的造价也越来越便宜。

五、操作系统管理硬件

操作系统可以看成是应用程序和硬件之间插入一层软件。所有应用程序对硬件的操作尝试都必须通过操作系统。
操作系统有两个基本功能:① 防止硬件被失控的应用程序滥用;② 向应用程序提供简单移植的机制来控制复杂而又通常不大相同的低级硬件设备。
操作系统通过几个基本的抽象概念(进程、线程、虚拟内存和文件)来实现这两个功能。

  1. 进程
    进程是操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程都好像在独占的使用硬件。
    而并发运行,则是说一个进程的指令和另一个进程的指令是交错执行的。
    操作系统保持跟踪进程运行所许的所有状态信息。这种状态,也就是上下文,包括许多信息,比如PC和寄存器文件的当前值,以及内存的内容。
  2. 线程
    尽管通常我们认为一个进程只有单一的控制流,但是在现代系统中,一个进程实际上可以由多个称为线程的执行组成,
    每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。
  3. 虚拟内存
    虚拟内存是一个抽象概念,它为每个进程提供了一个假象,即每个进程都在独占的使用内存。
    每个进程看到的内存都是一致的,称为虚拟地址空间。
  4. 文件
    文件就是字节序列,仅此而已。每个I/O设备,包括磁盘、键盘、显示器,甚至网络,都可以看成是文件。
    系统中的所有输入输出都是通过使用一小组称为Unix I/O的系统函数调用读写文件来实现的。

六、重要主题

  1. Amdahl定律
    当我们对系统的某个部分加速时,其对系统整体性能的影响取决于该部分的重要性和加速程度。
    要想显著加速整个系统,必须提升全系统中相当大的部分的速度。
  2. 并发和并行
    并发是一个通用的概念,指一个同时具有多个活动的系统;并行指的是用并发来使一个系统运行得更快。
    并行可以在计算机系统的多个抽象层次上运用。
  3. 计算机系统中的抽象
    抽象的使用是计算机科学中最为重要的概念之一。
    例如,为一组函数规定一个简单的应用程序接口(API)就是一个很好的编程习惯,程序员无需了解它内部的工作便可以使用这些代码。
    在操作系统中,文件是对I/O设备的抽象,虚拟内存是对程序存储器的抽象,而进程对一个正在运行的程序的抽象。
    虚拟机提供了对整个计算机的抽象,包括操作系统、处理器和程序。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值