前言:📫 作者简介:小明java问道之路,专注于研究计算机底层,就职于金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的设计和架构📫
🏆 Java领域优质创作者、阿里云专家博主、华为云享专家🏆
🔥 如果此文还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦
本文导读
解读《深入理解计算机系统(CSAPP)》第 1 章计算机系统漫游,介绍计算机系统硬件组成,文中末尾有计算机系统体系架构图
一、系统的硬件组成
总线:传递信息用,就是贯穿整个系统的一组电子管道。它携带信息字节并负责在各个部件之间传递。通常总线被设计成传送定长的字节块,也就是字(word)。32 位是 4 个字节,64 位是 8 个字节。
IO 设备:I/O(输入输出)设备是系统与外部世界的联系通道(磁盘、键盘鼠标、显示器)。每个 I/O 设备都通过一个 控制器或适配器 与 I/O 总线相连。控制器和适配器的主要区别在于他们的封装方式,控制器是 I/O 设备本身或者系统的主板上的芯片组(主控制电路板),而适配器则是一块插在主板插槽上的卡。无论如何,他们的功能都是在 I/O 总线和 I/O 设备之间传递信息。
主存:是一个临时存储设备,在处理器执行程序时,用来存放程序与程序处理的数据。从物理上来讲是一组动态随机存取存储器(DRAM)芯片组成,从逻辑上来讲是一个线性的字节数组,每个字节都有其唯一的地址(数组索引),这些地址从零开始。
处理器:中央处理单元(CPU)就是处理器,是解释或执行存储在主存中指令的引擎。处理器的核心是一个大小为一个字的存储设备(寄存器)称为程序计数器(PC)PC 任何时候都指向主存中某条机器语言指令(地址)
我们看看下面分析运行程序时发生了什么
1、初始时,shell 执行他的指令,等在我们输入,当我们从键盘输入()后,shell 程序将字符逐一读入寄存器(通过 io 总线->io 桥->系统总线->总线接口->寄存器),在把他放到内存中(寄存器->系统总线->IO 桥->内存总线->主存储器)
2、当我们敲回车时,shell 程序会执行一系列指令来加载可执行文件,这些指令将数据从磁盘 copy 到主存。(磁盘->磁盘控制器->IO 总线->IO 桥->内存总线->主存储器)
3、一旦代码和数据被加载到主存,处理器开始执行程序中的机器语言指令,这些指令将从主存复制到 寄存器文件,再从寄存器中复制到显示设备(主存->IO 桥->总线接口->寄存器->总线接口->IO 桥->IO 总线->图形适配器)
二、系统之间利用网络通讯
网络提供了计算机系统之间的通信,网络也是 IO 设备
三、计算机系统
计算机系统是有硬件和系统软件组成的,它们共同协作运行应用程序。
计算机内部的信息被表示为 位 ,它们依据上下文有不同的解释方式。程序被其他程序翻译成不同的形式,开始时是 ASCII 文本,然后被编译和链接器翻译成可执行的二进制文件。
处理器读取并解释存放在主存的二进制指令,因为计算机花费大量的时间在内存、IO 设备和 CPU 寄存器之间复制数据,所以将系统中的存储设备划分成层次结构——CPU 寄存器在顶部,接着是多层的硬件高速缓存存储器、DRAM 主存和磁盘。
操作系统内核是应用程序和硬件之间的媒介,它提供三个基本抽象:1、文件是对 IO 设备的抽象;2、虚拟内存是对主存和磁盘的抽象;3、进程是处理器
四、计算机系统架构图
小结
解读《深入理解计算机系统(CSAPP)》第 1 章计算机系统漫游,介绍计算机系统硬件组成,文中配有计算机系统体系架构图、存储器层次结构图、CPU 内部原理图以佐读者理解。