Advertisement

深入理解计算机系统 第一章 计算机系统漫游 笔记

阅读量:

1.1 信息就是位加上下文

  1. 现代操作系统使用ASCII标准表示文本字符
在这里插入图片描述
  1. 我们将仅有ASCII字符构成的文件命名为文本文件,则其余则被归类为二进制文件。
  2. 系统内部存储的信息本质上是由一系列比特组成的。识别不同数据对象的关键在于分析它们所处的具体情境或上下文环境,在不同的背景下相同的字节序列可能会被解读为整数、浮点数、字符串或者其他机器指令指令。

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

在这里插入图片描述
  1. 预处理器阶段:遵循带有前导字符#的命令指示对原始C程序进行处理,生成对应的.i文件.
  2. 编译阶段:采用编译方式将文本文件hello.i转换为目标文件hello.s,其中包含了汇编语言程序.
在这里插入图片描述

每行语句以一种文本格式描述了一条低级机器语言指令。

  1. 汇编阶段:将hello.o转换为机器指令代码,并将其打包为可再定位的目标程序,并将其结果保存到hello.o字段中(该字段以二进制形式存在)。
  2. 链接阶段:programinvoked the printf function from the pre-compiled printf.o object file during linking, resulting in a merged executable program that is then loaded into memory for system execution.

1.3 了解编译系统如何工作是大有益处的

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

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

1.4.1 系统的硬件组成

  1. 传输媒介:贯穿整个系统的是一组电子通道构成的传输媒介,在各个部件之间实现信息传递功能。通常该类传输媒介被设计为以固定长度的信息块进行传输操作,这些信息块统称为"字"。其中"字"所包含的信息位数即为"字长"这一核心参数,在现代计算机系统中常见的是4个字节(32位)和8个字节(64位)两种配置。
  2. I/O接口:系统与外部设备之间的数据交换通道包括键盘、鼠标、显示器以及磁盘等设备接口。每个I/O接口都通过相应的控制器或扩展卡与主系统的I/O总线连接起来完成数据交互操作。其中主系统的CPU部分相当于中央处理器(CPU),而连接在主板插槽上的扩展卡或插卡则分别承担着不同的功能角色。
在这里插入图片描述
  1. 主存:临时存储设备,用来存放程序和程序处理的数据。物理上说,主存由一组动态随机存取存储器(DRAM)芯片组成。逻辑上来说,存储器是一个线性的字节数组,每个字节逗游其唯一的地址,从零开始。
  2. 处理器:中央处理单元(CPU),解释(或执行)存储在主存中的指令的引擎。处理器的核心是一个大小为一个字的存储设备(或寄存器),称为程序计数器(PC)。在任何时刻,PC都指向主存的某条机器语言指令(即含有该条指令的地址)。处理器从程序计数器指向的内存处读取指令,解释指令中的位,执行简单操作,更新PC,使其指向下一条指令,而这条指令不一定和在内存中刚刚执行的指令相邻。寄存器文件:小的存储设备,由一些单个字长的寄存器组成。ALU(算术/逻辑单元):计算新的数据和地址值。
    简单操作:加载:主存复制一个字节或字到寄存器。
    存储:寄存器复制一个字节或字到主存的某个位置。
    操作:两个寄存器的内容复制到ALU,ALU对其做算术运算,并将结果存放到一个寄存器中。
    跳转:从指令中抽取一个字,并将这个字复制到PC中,覆盖原有的值。

1.4.2 运行hello程序

当我们在键盘输入字符串'./hello'时, shell程序会将每个字符逐个读入到寄存器中, 并随后将其存储到内存中.

在这里插入图片描述
  1. 按下了键盘上的回车键后, shell 程序意识到命令输入已经结束。当 shell 执行一系列指令时会加载可执行的 hello 文件, 这些指令负责将 hello 目标文件中的代码和数据从磁盘复制到内存中进行处理, 其中包含最终会被输出为 'hello, world\n' 的字符串内容。
  2. 当采用 DMA 技术时, 数据可以直接从磁盘传输至内存而不经过处理器。
在这里插入图片描述

当目标文件hello中的代码和数据被加载进内存时,处理器将开始执行hello程序的main函数中的机器语言指令序列。这些指令负责将包含字符串'hello, world\n'的字节块从内存传输至寄存器文件,并随后将其传输至显示器存储器以便于最终显示在屏幕上。

在这里插入图片描述

1.5 高速缓存至关重要

问题:系统耗时较长将信息转移至另一处位置。目标:实现复制操作尽可能高效地完成。
分析:磁盘容量是主存的千倍以上然而执行时间却远超其千倍。与此同时处理器运算速度却更快得多面对这一处理器与主存性能差异系统设计师巧妙地采用高性能缓存技术并将其命名为高速缓存存储器(cache)。其中L1和L2级高速缓存均采用静态随机访问存储器(SRAM)这一技术选型充分运用了缓存机制的优势使得程序往往倾向于集中使用本地数据和指令从而大幅提升了系统的整体性能表现。

在这里插入图片描述

1.6 存储设备形成层次结构

在处理器与一个较大的、运行速度较慢的设备(如主存)之间增添一个规模更小、运行速度更快的新存储设备(如高速缓存),其中,在存储器组织中,上层存储器充当下层存储器的高速缓备。

在这里插入图片描述

1.7 操作系统管理硬件

操作系统的定义可以表述为:它作为连接应用程序与硬件的一层软件。其主要作用在于防止失控的应用程序不当使用硬件资源,并为应用程序提供简便的控制手段用于管理复杂的硬件设备。

在这里插入图片描述

1.7.1 进程

操作系统的抽象表示称为"作业"(process)。并行运行通常指多个作业指令以相互交错地执行的方式在同一时刻运行。系统软件负责跟踪所有与作业运行相关的关键状态信息。为了实现有效的资源分配与管理,在处理作业切换时需要完成以下操作:复制当前过程的状态描述并保存之;加载新过程的状态描述并将其作为初始状态;将控制权转移并让新过程从上一次中断的地方重新开始执行。

在这里插入图片描述

1.7.2 线程

一个进程包含若干个线程,在同一进程中运行。各个线程在同一进程中运行时会共享代码资源和共同拥有全局数据存储空间。

1.7.3 虚拟内存

逻辑内存:每个进程独立占用物理内存,并共享一个全局的一致地址空间作为其逻辑地址空间的基础。

在这里插入图片描述

程序代码和数据遵循可执行目标文件内容进行建立。
堆在进程启动时设定固定大小,在使用malloc与free函数时可动态调整规模。
共享库中存储C标准库和其他数据库等应用所需的代码与数据。
栈由编译器用于管理函数调用关系,在程序运行过程中根据需要动态地增长或缩减。
内核虚拟内存预留给内核系统使用,并禁止应用程序访问或操作该区域内容以及直接调用内核定义的功能。

1.7.4 文件

该存储空间仅由字节构成。
任何I/O设备本质上都是一个存储空间。
系统中的所有输入输出都通过unix系统的io接口函数来完成对存储空间的操作。

1.8系统之间利用网络通信

在这里插入图片描述
在这里插入图片描述

1.9 重要主题

1.9.1 Amdahl 定律

在这里插入图片描述
在这里插入图片描述

1.9.2 并发和并行

  1. 线程级并发
在这里插入图片描述
在这里插入图片描述

超线程:又称同时多线程,允许一个CPU执行多个控制流的技术。

  1. 层级式并行:在较低层面的组织架构中,在同一时间段内允许多条指令同时执行的现象即为层级式并行特性。当当前处理器架构能够实现比单周期单指令更高的处理频率时,则被称为超量级处理器架构。
  2. 单一指令多个数据(SIMD)模式:在最基础的操作层面支持通过单一指令生成多个操作的可能性这一技术特征被称为单 instruction multiple data(SIMD)模式。

1.9.3 计算机系统中抽象的重要性

在这里插入图片描述

全部评论 (0)

还没有任何评论哟~