前言
📫作者简介:小明Java问道之路,专注于研究计算机底层/Java/Liunx 内核,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计📫
🏆CSDN专家博主/Java领域优质创作者、阿里云专家/签约博主、InfoQ签约博主、华为云专家、51CTO专家🏆
🔥如果此文还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主~
本文解读
解读《深入理解计算机系统(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、进程是处理器
计算机系统架构图