【好书解读】深入理解计算机系统 (CSAPP) 第 1 章计算机系统漫游

简介: 解读《深入理解计算机系统(CSAPP)》第 1 章计算机系统漫游,介绍计算机系统硬件组成,文中末尾有计算机系统体系架构图

image.png

前言:📫 作者简介:小明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 任何时候都指向主存中某条机器语言指令(地址)


我们看看下面分析运行程序时发生了什么

image.png

1、初始时,shell 执行他的指令,等在我们输入,当我们从键盘输入()后,shell 程序将字符逐一读入寄存器(通过 io 总线->io 桥->系统总线->总线接口->寄存器),在把他放到内存中(寄存器->系统总线->IO 桥->内存总线->主存储器)

2、当我们敲回车时,shell 程序会执行一系列指令来加载可执行文件,这些指令将数据从磁盘 copy 到主存。(磁盘->磁盘控制器->IO 总线->IO 桥->内存总线->主存储器)

3、一旦代码和数据被加载到主存,处理器开始执行程序中的机器语言指令,这些指令将从主存复制到 寄存器文件,再从寄存器中复制到显示设备(主存->IO 桥->总线接口->寄存器->总线接口->IO 桥->IO 总线->图形适配器)

二、系统之间利用网络通讯

网络提供了计算机系统之间的通信,网络也是 IO 设备

image.png

三、计算机系统

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

计算机内部的信息被表示为 位 ,它们依据上下文有不同的解释方式。程序被其他程序翻译成不同的形式,开始时是 ASCII 文本,然后被编译和链接器翻译成可执行的二进制文件。

处理器读取并解释存放在主存的二进制指令,因为计算机花费大量的时间在内存、IO 设备和 CPU 寄存器之间复制数据,所以将系统中的存储设备划分成层次结构——CPU 寄存器在顶部,接着是多层的硬件高速缓存存储器、DRAM 主存和磁盘。

image.png

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

四、计算机系统架构图

image.png

小结

解读《深入理解计算机系统(CSAPP)》第 1 章计算机系统漫游,介绍计算机系统硬件组成,文中配有计算机系统体系架构图、存储器层次结构图、CPU 内部原理图以佐读者理解。

相关文章
|
算法 编译器
【计算机架构】响应时间和吞吐量 | 相对性能 | 计算 CPU 时间 | 指令技术与 CPI | T=CC/CR, CC=IC*CPI
【计算机架构】响应时间和吞吐量 | 相对性能 | 计算 CPU 时间 | 指令技术与 CPI | T=CC/CR, CC=IC*CPI
1595 1
|
8月前
|
存储 SQL 缓存
Perf Arm SPE介绍与使用
本次分享的主题是 Perf Arm-SPE 的介绍及使用,本次分享主要介绍如何在倚天 710 平台上利用 Arm-SPE 特性定位伪共享问题、分析内存访问、分析指令延时以及监控访存延时等功能。 1. 背景介绍 2. Arm SPE的原理 3. Arm SPE在倚天服务器上的应用 4. Arm SPE 更多特性与功能的探索
630 0
|
数据库
解决numpy.core._exceptions.UFuncTypeError: ufunc ‘add‘ did not contain a loop with signature matching
解决numpy.core._exceptions.UFuncTypeError: ufunc ‘add‘ did not contain a loop with signature matching
1567 0
解决numpy.core._exceptions.UFuncTypeError: ufunc ‘add‘ did not contain a loop with signature matching
|
人工智能
快来围观!我自制的 AI 周报小能手:自动收集整理周报,一键发送邮件
快来围观!我自制的 AI 周报小能手:自动收集整理周报,一键发送邮件
364 0
|
消息中间件 安全 机器人
【Azure 事件中心】Kafka 生产者发送消息失败,根据失败消息询问机器人得到的分析步骤
【Azure 事件中心】Kafka 生产者发送消息失败,根据失败消息询问机器人得到的分析步骤
376 0
电学:原理、应用与编程实践
电学:原理、应用与编程实践
|
弹性计算 Linux 编译器
CoreBolt——在倚天上基于 Coresight 做 BOLT 优化
CoreBolt 是一种倚天平台的性能优化解决方案。CoreBolt 通过 Coresight 在程序运行时采集程序运行信息,对程序的热代码和冷代码进行区分,并通过 BOLT 对程序进行代码段重排,从而提升程序代码的局部性,减少程序运行过程中由 CPU iCache miss 和 iTLB miss 引发的性能下降,提升程序的整体性能。
1456 6
|
JSON 前端开发 JavaScript
从前端到后端——Web开发的全流程解析
【2月更文挑战第2天】Web开发涉及多个方面,从前端设计到后端实现,需要开发者具备一定的技术能力和知识储备。本文将以一个简单的Web应用为例,详细介绍Web开发的全流程。
|
存储 JSON JavaScript
[Qt5] QJson库进行存储、加载数据
[Qt5] QJson库进行存储、加载数据
144 0
|
Ubuntu Shell Linux
专为Intel Arc GPU设计:oneAPI的详细图文安装教程
本次我们基于Intel Arc系列的GPU,在windows的WSL上安装oneAPI, 之前发表过纯CPU,通过VM虚拟机的方式,而现在我们在WSL上实现GPU版本的安装
1028 0