《深入理解计算机系统》学习笔记--001

来源:互联网 发布:学安卓要先学c语言吗 编辑:程序博客网 时间:2024/05/17 07:38

第1章 计算机系统漫游

  • 计算机系统是由硬件和系统软件组成的,它们共同工作来运行应用程序。

信息就是位 + 上下文

  • 源程序实际上就是一个由0和1组成的位(bit)序列,8个位被组织成一组,称为字节(Byte)。

  • 每个字节表示程序中某个文本字符。

  • 大部分的现代系统都是用ASCII标准来表示文本字符,这种方式实际上就是用一个唯一的单字节大小的整数值来表示每个字符。

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

C编程语言的起源

  • C语言与UNIX操作系统关系密切。
  • C语言小而简单。
  • C语言是为实践目的设计的。
  • C语言是系统级编程的首选,同时也非常适用于应用级程序的编写。
  • 缺点:指针是造成困惑和程序错误的一个常见原因;C语言缺乏对非常有用的抽象的显式支持。

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

  • 目标程序也成为可执行目标文件。
  • hello.c–hello.i–hello.s–hello.o–hello
  • 编译系统: 预处理器、编译器、汇编器和链接器。
  • 预处理阶段: #号,修改原始C程序。
  • 编译阶段: 得到汇编语言程序。
  • 汇编阶段:得到机器语言指令,可重定位目标程序。
  • 链接阶段:合并,可执行目标文件。
  • GNU项目–GNU是GNU’s Not Unix的缩写。

为什么要了解编译系统如何工作

  • 优化程序性能
  • 理解链接时出现的错误
  • 避免安全漏洞

处理器读取并解释存储在存储器中的指令

系统的硬件组成

  • 总线
    • 总线是贯穿整个系统的一组电子管道。
    • 通常总线被设计成传送定长的字节块,也就是字(word)。
    • 字中的字节数(即字长)是一个基本的系统参数,在各个系统中不尽相同。现在的大多数机器字长有的是4个字节(32位),有的是8个字节(64位)。
  • I/O设备
    • 输入/输出(I/O)设备是系统与外部世界的联系通道。
    • 常见I/O设备:键盘、鼠标、显示器、磁盘驱动器(简称磁盘)。
    • 每个I/O设备通过一个控制器或适配器与I/O总线相连。
    • 控制器和适配器之间的区别在于它们的封装方式。
      • 控制器是置于I/O设备本身的或者系统的主印制电路板(简称主板)上的芯片组;
      • 而适配器则是一块插在主板插槽上的卡。
  • 主存
    • 主存是一个临时存储设备,在处理器执行程序时,用来放程序和程序处理的数据。
    • DRAM,动态随机存取储存器。
    • 从物理上来说,主存是由一组DRAM芯片组成的。
    • 从逻辑上来说,存储器是一个线性的字节数据,每个字节都有唯一的地址(即数组索引),这些地址是从零开始的。
  • 处理器
    • 中央处理单元,CPU。
    • CPU简称处理器,是解释(或执行)存储在主存中指令的引擎。
    • 处理器的核心是一个字长的存储设备(或寄存器),称为程序计数器(PC)。
    • 在任何时刻,PC都指向主存中的某条机器语言指令(即含有该条指令的地址)。
    • 从系统通电开始,直到系统断电,处理器一直在不断地执行PC指向的指令,再更新PC,使其指向下一条指令。
    • 处理器看上去是按照一个非常简单的指令执行模型来操作的,这个模型是由指令集结构决定的。
    • 处理器从程序计数器指向的存储器处读取指令,解释指令中的位,执行该指令指示的简单操作,然后更新PC,使其指向下一条指令,而这条指令并不一定与存储器中刚刚执行的指令相邻。
    • 操作是围绕着主存、寄存器文件(register file)和算术/逻辑单元(ALU)进行的。
    • 寄存器文件是一个小的存储设备,由一些1字长的寄存器组成,每个寄存器都有唯一的名字。
    • ALU计算新的数据和地址值。
    • CPU在指令的要求下可能会执行以下操作:
      • 加载:把一个字节或者一个字从主存复制到寄存器。
      • 存储:把一个自己或者一个字从寄存器复制到主存的某个位置。
      • 操作:把2个寄存器的内容复制到ALU,ALU对这两个字做算术操作,并将结果存放到一个寄存器中。
      • 跳转:从指令本身中抽取一个字,并将这个字复制到PC中。
    • 指令集结果:描述每条机器代码指令的效果;
    • 微体系结构:描述处理器实际上是如何实现的。

高速缓存至关重要

存储设备形成层次结构

操作系统管理硬件

系统之间利用网络通信

并发和并行

1 0