深入理解计算机系统2--理解计算机系统的基本组成以及程序的运行

news2024/11/26 8:39:08

深入理解计算机系统2–理解计算机系统的基本组成以及程序的运行


前言

前面一章简单记录了程序在计算机系统是以什么形式被存储的以及编译器编译的过程,这篇文章则会记录程序是如何被运行的,它在磁盘中是如何被读取,计算机系统将会通过那些器件来解释、理解并执行程序。
强烈建议大家看一看《深入理解计算机系统》这本书。
本文参考资料《深入理解计算机系统》


一、为什么键盘输入的指令能被计算机系统精准识别?通过什么作为媒介呢?

我们都知道我们在输入命令的时候,都是在一个GCC编译器的弹窗里面输入命令,然后计算机就会识别命令并执行,这个弹窗实际上就是shell命令解释器。我不知道shell命令解释器和GCC的关系是什么(以后再去看一下吧),我目前的理解shell命令解释器就是GCC生成的一个弹窗(这个肯定不正确,感兴趣的宝自己去查这方面的知识)。
shell命令解释器就是链接输入设备和计算机系统的媒介,我们输入的命令会先在shell命令解释器进行解读,shell命令解释器经过一系列的操作后,就会进行系统层面的操作(下面会讲到),最终计算机系统就会执行程序。
shell命令解释器有自带的命令,例如:cd、clear等等。当我们输入的第一个单词不是自带的命令时,shell命令解释器就默认这个时一个可执行文件。每当我们输入回车的时候,shell命令解释器蔡知道我们已经输入完这次的命令,并开始执行命令。
在这里插入图片描述
这就是shell命令解释器

二、计算机系统的基本组成

这就是一个典型的计算机系统
这就是一个典型的计算机系统组成。接下来我会一一讲解每部分是什么。

1.总线


在看到这个图的第一眼,我们就能看到一根贯穿整个系统的线,这个就是总线。
总线是贯穿整个系统的电子管道,是系统各部件之间信息互相传递的桥梁,所有的信息都是通过总线传递。
总线通常被设计成传输特定字节块,也就是字。不同系统的字的长度(即字长)可能会不一样。

2.IO设备


看到图片最下方的就是IO设备了。可以看到他们都是通过适配器/控制器跟总线连接在一起的。
IO设备是计算机系统和外界联系的通道。

3.主存


在右上方的主存储器简称主存。
主存是一个临时存储器。它主要存储程序被执行时的程序信息以及程序处理的数据。
从硬件层面上看,主存是由DRAM(动态随机存取存储器)芯片组成。从逻辑层面上看,主存是是由一组线性字节数组组成,每个字节都有唯一的地址。

4.处理器(CPU)

如图所示,处理器主要由四部分组成:总线接口、算术/逻辑单元(ALU)、寄存器文件、程序计数器(PC)
处理器(CPU)是解释存储在主存中指令的引擎。处理器的核心是程序计数器(PC),从系统上电直到断电为止,处理器一直在进行一个操作:读取程序计数器(PC)指向的主存指令数据,并解释指令的位,然后执行简单的操作,再让程序计数器(PC)指向下一条指令(两个指令之间不一定相邻)。
程序计数器是一个字长大小的存储单位(寄存器),程序计数器(PC)无论在任何时候都指向主存存储的一条指令。寄存器文件是一个小的存储设备,由字长大小的寄存器组成,每个寄存器都有唯一的名字。算数/逻辑单元(AUL)负责计算新的数据和地址值。

1.程序计数器(PC)

程序计数器(PC)是处理器的核心,它无时无刻都会指向主存存储的其中一条指令。

2.算术/逻辑单元(ALU)

负责计算新的数据和地址值。

3.寄存器文件

是一个小的存储设备,由一些字长大小的寄存器组成,每个寄存器都有唯一的名字。

3.程序运行过程。


在这里插入图片描述
1、每当我们输入字符时,shell程序就会逐一读取字符,并把字符存储到处理器的寄存器文件,处理器再将寄存器文件里的数据存储到主存。如上图所示
在这里插入图片描述
2、当我们在shell命令解释器上输入可执行文件的名字并按下回车后,shell命令解释器检测到命令输入完毕,开始分析命令。在shell命令解释器进行一系列操作之后,通过DMA(直接存储器存取),会把磁盘存储的可执行文件的全部数据拷贝到主存。如上图所示
在这里插入图片描述

3、当数据全部拷贝到主存后,处理器(CPU)会根据程序处理器(PC)指向的指令开始读取指令数据到寄存器文件,处理器根据指令内容进行简单的逻辑操作,完成这条指令后更新程序计数器(PC)让其指向下一条指令,再读取指令,直到主存中的数据被读取完。最终输出信息,处理器将需要输出到显示屏的信息传输到显示设备上显示,一个程序就被执行完成了。如上图所示

总结

只是一个典型且比较简单的计算机系统模型,更多的信息将在后续的文章更新。
持续更新中。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/471672.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BPF技术整理笔记

目录 eBPF是什么? eBPF是做什么的?可以解决什么问题? eBPF可以带来的解决方案是什么? eBPF的技术点 eBPF hookeBPF MapeBPF Helper FunctioneBPF有什么限制吗? 前言 21年因为项目需求而要开发一个工具,可以…

Bitmap引起的OOM问题

作者:向阳逐梦 1.什么是OOM?为什么会引起OOM? 答:Out Of Memory(内存溢出),我们都知道Android系统会为每个APP分配一个独立的工作空间,或者说分配一个单独的Dalvik虚拟机,这样每个APP都可以独立…

你的 Redis为什么变慢了?一文讲透Redis性能优化如何做

一、Redis为什么变慢了 1.Redis真的变慢了吗? 对 Redis 进行基准性能测试 例如,我的机器配置比较低,当延迟为 2ms 时,我就认为 Redis 变慢了,但是如果你的硬件配置比较高,那么在你的运行环境下&#xff…

哈夫曼树【北邮机试】

一、哈夫曼树 机试考察的最多的就是WPL,是围绕其变式展开考察。 哈夫曼树的构建是不断选取集合中最小的两个根节点进行合并,而且在合并过程中排序也会发生变化,因此最好使用优先队列来维护单调性,方便排序和合并。 核心代码如下…

2023有哪些适合学生的蓝牙耳机?盘点四款适合学生的无线蓝牙耳机

随着时代的发展,人们更青睐于能够提升生活品质的产品。蓝牙耳机因为摆脱了线的束缚,使用体验会更好。接下来,我来给大家推荐几款适合学生用的无线蓝牙耳机,有需要的朋友可以当个参考。 一、南卡小音舱Lite2蓝牙耳机 参考价&…

探索未来的数字人生:全景VR数字人

在数字化时代,人工智能和虚拟现实技术正日益成为我们生活中不可或缺的一部分。而全景VR数字人,则是这一时代的最新产品,吸引了越来越多的关注和研究。 一、什么是全景VR数字人? 全景VR数字人是一种通过虚拟现实技术创造的数字人形…

学术ChatGPT——利用ChatGPT助力日常工作与学习

ChatGPT的出现给各个行业带来了前所未有的冲击,其中也包括学术研究领域。在学术研究领域,有着「数学天才」之称陶哲轩之前就曾表示,他已经将ChatGPT纳入了自己的工作流程。 那么做为一名普通的工作或者学习的人员,如何使用ChatGPT…

[mars3d 学习] 最近升级版本造成的问题

1、mars3d升级3.5以上,使用的时候报错; 需要看下 Mars3D三维可视化平台 | 火星科技 版本更新日志; 使用将Cesium的版本升级到1.103 2、升级Cesium到1.103,之后打包又会报错 - error in ./node_modules/mars3d-Cesium/Build/Cesi…

用手机APP操作使用井用采样器更省时省力

井用采样器的主要功能特点就是:机身小巧,方便操作。可用于井下作业,手机APP可实时查看采样数据,节省人力。 利用自动采样器进行水样采集可以说节省很大的人力物力,但是有时为了采到更具代表性的水样,我们需…

如何选择多参数水质分析仪?

如何选择适合的多参数水质分析仪? 首先水质检测仪分为实验室(台式)和户外使用的便携式多参数水质检测仪。我们呢就要了解自己的需 求使用在什么领域,根据使用领域选择仪器;其次就是选择需要测定的指标,最好…

JAVA-6-[Spring框架]Bean的作用域和生命周期

1 Spring Bean 1、Spring有两种类型bean,一种普通bean,另外一种工厂bean(FactoryBean)。 2、普通bean:在配置文件中定义的bean类型就是返回的类型。 3、工厂bean:在配置文件中定义的bean类型可以和返回类型不一样。 第一步 创建类…

Streamlit 使用介绍

Streamlit 使用介绍 安装和运行参考资料 公共组件页面设置显示代码并运行st.help 查询帮助文档多页渲染 对象渲染直接渲染对象文本渲染st.markdown代码渲染公式渲染 展示图表显示表格趋势小卡片 显示图表显示媒体画迷宫显示本地图片播放视频/音频 显示状态彩蛋-放气球进度条 互…

KVM虚拟机的定时逐次开机设定方法-systemd方式

前言:KVM虚拟机系统是榨取服务器最大性能的一种好方法,但是谁也不想让服务器启动的时候要等待5分钟甚至以上的时间。 为了减轻服务器开机时的任务数量,需要虚拟机在开机后一段时间内,按顺序逐次启动,以达到各个服务间的…

A Time Series is Worth 64 Words(PatchTST模型)代码解析

前言 A Time Series is Worth 64 Words论文下载地址,Github项目地址,论文解读系列本文针对PatchTST模型参数与模型架构开源代码进行讲解,本人水平有限,若出现解读错误,欢迎指出开源代码中分别实现了监督学习(PatchTST…

千万级直播系统后端架构设计

1、架构方面 1.1 基本 该图是某大型在线演唱会的直播媒体架构简图。 可以看出一场大型活动直播涵盖的技术方案点非常庞杂,本节接下来的内容我们将以推拉流链路、全局智能调度、流量精准调度以及单元化部署,对这套直播方案做一个展开介绍。 1.2 推拉流链…

2023年大厂裁员严重,软件测试行业真的饱和了吗?

这短时间以来后台有很多小伙伴说找工作难,并且说软件测试行业饱和了?竟然登上了热榜 那么我今天带大家看看真实的市场行情,往下看 这个是公司联合某厂的HR招聘真实情况,很明显【软件测试】投简历竟然高达9999沟通才1千多&#xf…

chatgpt 中文版免费访问

chatgpt 中文版免费访问 简介一、ChatGPT中文网二、 ChatGPT三、ChatGPTWEB四、博弈AI五、小熊共享六、tab精灵七、AI文本工具站1、有直接chatgpt体验对话2、文案工具箱 简介 最近chatgpt太火了,用起来十分方便。chatgpt是一种基于人工智能技术的语言模型&#xff…

区间DPⅡ (Java) 解析/模板/案例

一. 区间DP简单介绍 二. 区间DP模板 三. 区间DP经典案例 1.leetcode1312 让字符串成为回文串的最少插入次数 2.leetcode1039 多边形三角剖分的最低得分 以上部分,见 区间DP (Java) 解析/模板/案例 3.leetcode1547 切棍子的最小成本 有一根长度为 n 个单位的…

IndexedDB的包装器JsStore - insert插入参数配置

JsStore是IndexedDB的包装器。它提供了简单的SQL,如api,易于学习和使用。IndexedDb查询可以在web worker中执行,JsStore通过提供一个单独的worker文件来保留这个功能。 Insert API用于在表中插入新记录,还可以为未在db模式中定义的…

使用InitializingBean和DisposableBean来管理bean的生命周期

1.InitializingBean接口 1.1.InitializingBean接口概述 Spring中提供了一个InitializingBean接口,该接口为bean提供了属性初始化后的处理方法,它只包括afterPropertiesSet方法,凡是继承该接口的类,在bean的属性初始化后都会执行…