【深入理解计算机系统 第三版 导读】第一章 计算机系统漫游

2024-01-07 20:43:34

第一章 计算机系统漫游

本章节为《深入理解计算机系统》第三版的个人导读,参考B站up主-九曲阑干与深入理解计算机系统01——计算机系统漫游

1.1. 信息就是位+上下文

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

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

先导:hello.c程序的生命周期是从一个高级C语言程序开始的,这是由人编写的,机器不懂,所以必须将它翻译成一个可执行目标文件hello。

编译系统:预处理器、编译器、汇编器和链接器。过程如下所示:

在这里插入图片描述

  • 预处理:将stdio.h内容插入
  • 编译器:将hello.i翻译成文本文件,它包含一个汇编语言程序。
  • 汇编器:将hello.s翻译成机器语言指令,存储在hello.o中,这是一个二进制文件。
  • 链接器:hello程序调用了printf函数,而printf在一个单独的printf.o中,所以链接器要将它们合并。

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

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

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

在上面,我们得到了hello可执行目标程序,接下来就要去shell执行它:linux> ./hello

1.4.1. 系统的硬件组成

在这里插入图片描述

  • 总线:总线就是电子管道,它携带信息字节并负责在各个部件之间传递。
  • I/O设备:输入/输出(I/O)设备就是与外界联系的通道。上图中有键盘、鼠标、显示器、磁盘驱动器。
  • 主存:主存是一个临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据。
  • 处理器:也就是中央处理单元CPU,是解释执行在主存中指令的引擎。它的核心是一个大小为一个字节的存储设备(或寄存器),称为程序计数器。下面是它的可能执行过程:
    • 加载:从主存中复制一个字节或者一个字到寄存器,以覆盖寄存器原来的位置。
    • 存储:从寄存器复制一个字节或者一个字到主存的某个位置,以覆盖这个位置上原有的内容。
    • 操作:把两个寄存器的内容复制到ALU,ALU对这两个字做算术运算,并将结果存放到一个寄存器中,以覆盖该寄存器中原来的内容。
    • 跳转:从指令本身中抽取一个字,并将这个字复制到程序计数器(PC)中,以覆盖PC中原来的值。

1.4.2. 运行hello程序

用的图是上面的图。运行hello程序的过程:1.在shell中输入指令,shell会将你输入的逐一读入寄存器,再存放到内容中,也就是主存储器。2.当我们敲击回车时,shell知道已经结束输入,然后执行一系列命令来加载可执行的hello文件,这些指令会将文件从磁盘复制到内存(第六章会有新技术)。3.文件到了主存之后,处理器就开始执行main中的指令。这一些指令将“hello,world\n”从主存中复制到寄存器文件,再从寄存器文件中复制到显示设备。

1.5. 高速缓存至关重要

这一节将了运行一个程序要搬来搬去的很麻烦,所以要很快很快的存储设备。所以针对这个,引出了高速缓存存储器。如下图:
在这里插入图片描述

1.6. 存储设备形成层次结构

这一节就一个图,很容易看懂的:

在这里插入图片描述

1.7. 操作系统管理硬件

操作系统有两个基本功能:1.防止硬件被失控的应用程序滥用;2.向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备。操作系统通过基本的抽象概念(进程,虚拟内存,文件)来实现这两种功能。

1.7.1. 进程

进程是对操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程都好像在独占地使用硬件。而并发运行,则是说一个进程地指令和另一个进程地指令是交错执行地。在大多数系统中,需要运行的进程总数是可以多于运行它们的CPU总数的。

1.7.2. 线程

尽管通常我们认为一个进程只有单一的控制流,但是在现代系统中,一个进程实际上可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。

1.7.3. 虚拟内存

第九章的内容。

1.7.4. 文件

文件就是字节序列,仅此而已。每个I/O设备,包括键盘,磁盘,显示器,网络等都可以看作为文件。

1.8. 系统之间利用网络通信

在这里插入图片描述

1.9. 重要主题

1.9.1. Amdahl定律

在这里插入图片描述

1.9.2. 并发和并行

线程级并发、指令级并行、单指令,多数据并行。

  • 并发:传统意义上,并发是模拟出来的是由计算机在运行的进程建快速切换来实现的,是一个处理器在同时处理多个任务。

  • 并行:并行是指多个处理器同时处理多个不同的任务。

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

小结(原文)

计算机系统是由硬件和系统软件组成的,它们共同协作以运行应用程序。计算机内部的信息被表示为一组组的位,它们依据上下文由不同的解释方式。程序被其他应用程序翻译成不同的形式,开始时是ASCII文本,然后被编译器和链接器翻译成二进制可执行文件。

处理器读取并解释存放在主存里的二进制指令。因为计算机花费了大量的时间在内存、I/O设备和CPU寄存器之间复制数据,所以将系统中的存储设备划分为层次结构——CPU寄存器在顶部,接着是多层的硬件高速缓存存储器、DRAM主存和磁盘存储器。在层次结构中,位于更高层的存储设备比低层的存储设备要更快、单价比特造价也更高。层次结构中较高层次的存储设备可以作为较低层设备的高速缓存。通过理解和运用这些存储层次结构的知识,程序员可以优化C程序的性能。

操作系统内核是应用程序和硬件之间的媒介。它提供三个基本的抽象:1.文件是对I/O设备的抽象;2.虚拟内存是对主存和磁盘的抽象;3.进程是处理器、主存和I/O设备的抽象。

最后,网络提供了计算机系统之间通信的手段。从特殊系统的角度来看,网络就是一种I/O设备。

文章来源:https://blog.csdn.net/likinguuu/article/details/135374109
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。