【Linux-进程】系统初识:冯诺依曼体系结构

news2024/9/22 7:22:57

 系列文章:《Linux入门》


目录

冯诺依曼体系结构

1)硬件上

🌷1.什么是冯诺依曼体系结构?

 🌷2.冯诺依曼结构的五个主要组成部分

1.运算器

2.控制器

3.存储器

4.输入输出 设备 

⁉️3.为什么还需要内存呢?

⁉️4.使用内存真的有提高速度嘛?

⁉️5.为什么程序运行之前必须先加载到内存?

  🌷6. 数据流动的过程


冯诺依曼体系结构

1)硬件上

🌷1.什么是冯诺依曼体系结构?

冯 • 诺伊曼结构,是一种将程序指令存储器和数据存储器合并在一起的电脑设计概念结构。

而冯·诺依曼架构则确立了我们今天使用的计算机硬件基础架构,可谓是现代计算机的鼻祖

本结构隐约指导了将存储设备与中央处理器分开的概念,因此依本结构设计出的计算机又称存储程序计算机。

我们常见的计算机,如笔记本;我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

冯.诺依曼结构的核心设计思想

核心设计思想主要体现在如下三个方面:

  1.  程序、数据的最终形态都是二进制编码,程序和数据都是以二进制方式存储在存储器中的,二进制编码也是计算机能够所识别和执行的编码。(可执行二进制文件:.bin文件)
  2.  程序、数据和指令序列,都是事先存在主存储器(也就是大家俗知的“内存”)中,以便于计算机在工作时能够高速地从存储器中提取指令并加以分析和执行。
  3. 确定了计算机的五个基本组成部分:运算器、控制器、存储器、输入设备、输出设备

 🌷2.冯诺依曼结构的五个主要组成部分

冯.诺依曼确定了”计算机结构“中的5大部件:

  •  运算器
  •  控制器
  •  存储器
  •  输入设备
  •  输出设备

cpu构成:运算器和控制器

现在看来,运算器和控制器单元集成在CPU中实现,存储器的容量不断扩大、输入输出设备不断更新,这些部件构成了当代计算机硬件系统的基本组成。

 

1.运算器

首先计算机要有运算处理数据的能力,所以需要一个处理单元来完成各种算数运算和逻辑运算,这就是算术逻辑单元(Arithmetic Logic Unit,ALU)。
ALU的主要功能就是在控制器的控制下,完成加、减、乘、除等算术运算以及与、或、非、异或等逻辑运算以及移位、补位等运算。 

运算器与其他部分的关系: 

计算机运算时,运算器的操作对象和操作种类由控制器决定。

运算器操作的数据从内存中读取,处理的结果再写入内存(或者暂时存放在内部寄存器中),而且运算器对内存数据的读写是由控制器来进行的。

 

2.控制器

控制器又称为控制单元(Control Unit),是计算机的神经中枢和指挥中心,只有在控制器的控制下,整个计算机才能够有条不紊地工作、自动执行程序。

控制器的工作流程为:从内存中取指令、翻译指令、分析指令,然后根据指令的内存向有关部件发送控制命令,控制相关部件执行指令所包含的操作。

控制器和运算器共同组成中央处理器(Central Processing Unit),CPU是一块超大规模集成电路,是计算机运算核心和控制核心,CPU的主要功能是解释计算机指令以及处理数据。

 

3.存储器

存储器的主要功能是存储程序和各种数据存储器是有记忆的设备,而且采用俩种稳定状态的物理器件来记录存储信息,所以计算机中的程序和数据都要转换为二进制代码才可以存储和操作。

存储器可以分为内部存储器(内存)和外部存储器,俩者在计算机系统中各有用处。

以购买手机为例,我们需要考虑的重要参数分别有处理器型号、运行内存、和存储空间。

选择内存的时候我们都偏向于选择比较大的,例如6G,8G。而存储空间也有128G与256G,甚至512G各种选择。这里的内存就是指内部存储器,它的大小决定了我们手机在运行多个软件的时候能否做到流畅不卡顿。

而存储空间指的是外部存储器,决定了我们的手机能存多少音频视频数据。

 

4.输入输出 设备 

输入设备向计算机输入数据,计算机经过计算后,把数据输出给输出设备。

输入设备(单元):包括键盘, 鼠标,扫描仪, 写板,网卡,摄像头等
输出设备(单元):显示器,打印机,磁盘,声卡,显卡等


有些设备既做输入也做输出的。
设备之间是独立的,并且是通过总线连接的。
这样数据才能在这些设备之间流动(传输)。本质就是设备之间进行数据的来回拷贝。

⁉️3.为什么还需要内存呢?

思考一个问题: 当我们的体系结构中,有了输入、输出设备和 CPU 以后,就能正常工作了,那么为什么还需要内存呢?

(1)从技术来说

CPU的运算速度 > 寄存器的速度 > L1~L3Cache > 内存 > 外设(磁盘)> 光盘磁带

也就是说,输入设备和输出设备相对于 CPU 来说是非常慢的。

如果没有内存的话,那么当前这个体系整体呈现出来的就是:输入设备和输出设备很慢,而 CPU 很快。CPU一直处于等待状态。

相信大家知道 木桶原理(整体装水的体积取决于最短的木板) 吧,那么最终整个体系结构所呈现出来的速度将会是很慢的。

内存有个特点就是,比输入设备和输出设备要快很多,但是比CPU又要慢。现在内存就处于慢设备和快设备之间,是一个不快也不慢的设备,能够在该体系结构当中就起到一个缓冲的作用。

(2)从成本来说

既然上面说了内存是用来适配外设和 CPU 速度不均的问题,那么为什么不直接在 CPU 里面开发一个类似于内存的东西呢?

这个想法可以,但是如果真要去实现的话,那么一台计算机的成本起码得 10W+,而计算机它是蔓延全世界的,也就是说人人都能用得起的!

寄存器的价格 > 内存 > 外设(磁盘)

所以内存就是方便我们使用较低的成本,获得较高的性能。


⁉️4.使用内存真的有提高速度嘛?

 局部性原理


我相信大家应该还有个疑惑:就是,先将输入设备的数据交给内存,再由内存将数据交给 CPU,这个过程真的比 CPU 直接从输入设备获取数据更快吗?数据需要流动的地方变多了,速度有提升嘛?

说明这个问题之前,我们首先需要知道:内存具有数据存储的能力。虽然内存的大小只有 4G/8G,但是既然内存有大小,那么它就有预装数据的能力,而这就是提高该体系结构效率的秘诀。


这里不得不说到的就是 局部性原理

根据统计学原理,当一个数据正在被访问时,那么下一次有很大可能会访问其周围的数据。所以当 CPU 需要获取某一行数据时,内存可以将该行数据之后的数据一同加载进来,而 CPU 处理数据和内存加载数据是可以同时进行的,这样下次 CPU 就可以直接从内存当中获取数据。

输出数据的时候也一样,CPU 处理完数据后直接将数据放到内存当中,当输出设备需要时再在内存当中获取即可,这也就有了我们平常所说的缓冲区的概念。

例如,缓冲区满了才将数据打印到屏幕上,使用 fflush 函数将缓冲区当中的数据直接输出之类的,都是将内存当中的数据直接拿到输出设备当中进行显示输出。


⁉️5.为什么程序运行之前必须先加载到内存?

冯 • 诺依曼体系结构核心原理为:用户输入的数据先放到内存当中,CPU 读取数据的时候就直接从内存当中读取,CPU 处理完数据后又写回内存当中,然后内存再将数据输出到输出设备当中,最后由输出设备进行输出显示。

我们可以知道,站在硬件角度或是数据层面上,CPU 和外设不能直接交互,而是通过内存,也就是说,所有设备都只能和内存打交道。

由此可以说明一个问题:为什么程序运行之前必须先加载到内存?

因为可执行程序(文件)是在硬盘(外设)上的,而 CPU 只能从内存当中获取数据,所以必须先将硬盘上的数据加载到内存,也就是必须先将程序加载到内存。

  🌷6. 数据流动的过程

仅考虑数据信号。

1. 程序不使用的情况下,一般存储在外存中。程序在被调用,运行的时候,必须先把程序加载到内存中,CPU执行。(CPU只会在内存中去读取)

2.利用网络进行聊天,a 给 b互发消息的过程?

其中网卡是实现通信。

数据流动过程:消息–>键盘–>内存—>CPU---->a网卡----> b 设备的网卡---->内存—>CPU—>显示器。

3.如果是在qq上发送文件呢?

数据流动过程:磁盘(文件)---->内存---->CPU---->网卡---->朋友的网卡—>内存---->CPU---->磁盘(下载文件后存储在磁盘)

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

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

相关文章

c++数据结构算法复习基础-- 4 -- 线性表-单向循环链表-常用操作接口-复杂度分析

1、单向循环链表一 1)特点 每一个节点除了数据域,还有一个next指针域指向下一个节点(存储了下一个节点的地址) 末尾节点的指针域指向了头节点 析构函数思路图 2)代码实现 //定义结点 //单向循环链表 class CircleLink { public://构造函数…

使用python基于fastapi发布接口(一)

FastAPI官网地址 FastAPI基于Python 3.6+和Starlette框架,天生就带着高性能和异步的基因。 FastAPI的文档生成功能简直是开发者的福音! 你不再需要手动编写API文档,FastAPI能自动帮你搞定。 FastAPI还超级灵活,支持各种数据库和认证方式,无论是SQLite、PostgreSQL还是M…

【xilinx】TPM可信平台模块与 Zynq UltraScale+ PS SPI 接口

本博客(Venu Inaganti)介绍了可信平台模块 (TPM) 与 Zynq UltraScale PS SPI 控制器的连接。 目前唯一具有 TPM 的评估板是 KR260/KV260 SOM,因此为了帮助正在试验 Zynq UltraScale 设备的用户,本文介绍了如何通过 PMOD 连接器与…

【MongoDB】Java连接MongoDB

连接URI 连接 URI提供驱动程序用于连接到 MongoDB 部署的指令集。该指令集指示驱动程序应如何连接到 MongoDB,以及在连接时应如何运行。下图解释了示例连接 URI 的各个部分: 连接的URI 主要分为 以下四个部分 第一部分 连接协议 示例中使用的 连接到具有…

计算机视觉中的上采样与下采样:深入浅出实例代码解析

文章目录 一、引言二、下采样(Downsampling)三、上采样(Upsampling)1. 最近邻插值2.双线性插值3.转置卷积(Deconvolution)4.代码部分 四、总结 在计算机视觉领域,尤其是在深度学习和卷积神经网络…

宝塔面板部署webman项目+nginx反向代理

新建站点 新建一个站点,php版本选择纯净态即可,反正都是用不上的,域名填写你申请得到的域名 拉取代码 新建一个目录,然后将代码部署到本地 启动项目 推荐使用宝塔面板的进程守护管理器启动项目,其实就是用superviso…

ATT格式与Intel格式x86汇编指令的区别

AT&T公司 这个公司的创始人就是发明电话的贝尔,而Unix和C语言都是出自贝尔实验室的产物。 Intel公司 世界上第一片CPU是1971年发明的,型号是Intel生产的4004微处理器。 两种格式的区别 AT&T格式Intel格式目的操作数d、源操作数s op s, d 注…

vue2中使用i18n配置elementUi切换语言

1、下载插件 npm i vue-i18n8.22.2 2、新建文件夹i18n 3、编写index.js文件 import Vue from "vue"; import VueI18n from "vue-i18n"; import locale from element-ui/lib/locale; // 引入 elementui 的多语言 import enLocale from element-ui/lib/l…

【MySQL】C/C++连接MySQL客户端,MySQL函数接口认知,图形化界面进行连接

【MySQL】C/C引入MySQL客户端 安装mysqlclient库mysql接口介绍初始化mysql_init链接数据库mysql_real_connect下发mysql命令mysql_query获取出错信息mysql_error获取执行结果mysql_store_result获取结果行数mysql_num_rows获取结果列数mysql_num_fields判断结果列数mysql_field…

域自适应,你适应了嘛?

“最难的深度学习是谁?” “嗯,是迁徙学习吧?” “要分情况,不过,应该是迁徙学习吧? ” “不是迁徙学习嘛?” 目录 域自适应是啥? 域自适应的方法? 基于差异的方法…

Kafka系列之:Kafka Connect深入探讨 - 错误处理和死信队列

Kafka系列之:Kafka Connect深入探讨 - 错误处理和死信队列 一、快速失败二、YOLO:默默忽略坏消息三、如果一条消息掉在树林里,会发出声音吗?四、将消息路由到死信队列五、记录消息失败原因:消息头六、记录消息失败原因…

k8s Pod生命周期详解

文章目录 一、创建Pod二、启动Pod三、销毁Pod 共分为三步:创建Pod、启动Pod、销毁Pod 一、创建Pod K8S创建Pod的过程 二、启动Pod 1、kubelet调用容器运行时创建Pause容器,准备一个容器环境 2、创建初始化容器init container。如果有多个,…

打印网页使内容包含有效网络连接Print webpage with workable hyperlinks

小虎想打印网页,并且将里面有链接的文字带文字一起打印保存。 解决方法 利用谷歌浏览器的打印功能即可: Use print options in chrome.

构建一个Markdown编辑器:Fyne综合案例

在本文中,我们将通过一个完整的案例来介绍如何使用Go语言的Fyne库来构建一个简单的Markdown编辑器。Fyne是一个易于使用的库,它允许开发者使用Go语言来创建跨平台的GUI应用程序。 1. 项目结构 首先,我们需要创建一个Go项目,并引…

基于vllm部署大模型

VLLM(非常大的语言模型)在中文中通常指的是经过大量文本数据训练的神经网络模型,能够理解和生成类似人类语言的文本。这类模型是许多先进AI系统的核心,比如ChatGPT、GPT-4等。 VLLM 可以执行各种任务,如自然语言处理、…

【实用工具】使用Chrome插件搭建第二大脑!SuperMemory大语言模型登场,开源、免费、保存你需要的所有网站!——含入门安装教程

文章目录 项目简介项目搭建主要功能How do I use this?本地部署 项目简介 最近,有一款Github项目十分火爆,它专注于用超级内存打造自己的第二大脑。它是书签的 ChatGPT,基于Chrome 浏览器扩展导入推文或保存网站和内容,你可以访…

RTD2739 8K60Hz/4K 240Hz

RTD2739支持4K240Hz/80K60Hz。 RTD2739 supports input format up to 3840 x 2160 240Hz RTD2739 supports 3 ports of Ultra-High Speed Receiver can support DisplayPort1.4 In DisplayPort mode, four link layer speed HBR3 (8.1GHz), HBR2 (5.4GHz), HBR(2.7GHz), R…

理解Linux中的作业控制:详解fg、bg和jobs命令

理解Linux中的作业控制:详解fg、bg和jobs命令 文章目录 理解Linux中的作业控制:详解fg、bg和jobs命令1. 前言2. jobs 命令3. bg 命令4. fg 命令5. 简要总结6. 一图概览 1. 前言 ​ Linux系统中,作业控制是一个非常重要的概念,尤其…

成为Python砖家(1): 在本地查询Python HTML文档

本地是 macOS 系统。 下载 python html 格式文档 https://docs.python.org/3/download.html 下载logo png图像 https://www.python.org/community/logos/ 创建 PythonDoc.sh, 用于创建 PythonDoc.app: #!/bin/bash# This script generates /Application/Python…

【MySQL】order by 的排序策略

目录 一、全字段排序 二、磁盘临时文件辅助排序 三、RowId 排序 四、优化 order by 在前面的文章中我们分析了 explain 执行计划的各个字段,其中有一个 Extra 字段。 在执行计划中,Extra 字段如有 Using filesort 则表示使用到了排序。 而 MySQL 的…