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

 系列文章:《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---->磁盘(下载文件后存储在磁盘)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue中点击导航栏,动态改变样式,经典写法

vue中点击导航栏,动态改变样式,经典写法 在vue中,我们通常会有这样的情况,在多个子模块之间,点击其中一个子模块,修改当前点击的子模块的样式。如图,点击B模块时,模块B样式改变&…

小卷原创视频教程:Java开发必会的Linus环境搭建

csdn的各位同学,大家好,我是小卷。最近一段时间写博客不是那么勤快了,主要是在帮助Java小白做学习录屏。 后续更多会以学习视频的方式和大家一起交流Java、前端以及相关的技术。本次分享的是Java开发必须要会的Linux环境搭建。 衷心感谢各位小…

登录过程记录

过程: 未登录状态打开我的消息页-》调用后端接口查询登录状态->后端接口从cookie里拿lt,判断是否登录-》未登录,携带页面链接(我的消息)跳转passport【单点登录服务】 登录页-》输入验证码提交后-》验证成功-》根据用户信息生成票据-》携带票据和我的…

电动汽车和混动汽车DC-DC转换器的创新设计与测试方法

汽车 DC-DC 转换器市场规模将达到187亿美元,年复合增长率为10%。 DC-DC 转换器是汽车的重要组成部分,它可以通过电压转换为各种车载系统供电,例如日益复杂的车载信息娱乐系统、使用驾驶辅助系统(ADAS)实现的增强安全功…

C++复习之STL

STL(Standard Template Library,标准模板库)是C标准库的一部分,提供了丰富且高效的数据结构和算法。STL主要由6大组件构成,分别是容器、算法、迭代器、适配器、仿函数和空间配置器。 容器(Containers&#…

【杂谈】-8个常用的Python图像操作库

8个常用的Python图像操作库 文章目录 8个常用的Python图像操作库1、OpenCV2、Pillow(PIL)3、Scikit Image4、Numpy5、SciPy6、Mahotas7、SimpleITK8、Matplotlib 在当今世界,数据在每个行业垂直领域中都发挥着至关重要的作用。图像可以是提取…

【Delphi】中多显示器操作基本知识点

提要: 目前随着计算机的发展,4K显示器已经逐步在普及,笔记本的显示器分辨率也都已经超过2K,多显示器更是普及速度很快。本文介绍下Delphi中操作多显示器的基本知识点(Windows系统),这些知识点在…

【Django开发】前后端分离django美多商城项目第1篇:欢迎来到美多 项目主要页面介绍【附代码文档】

本教程的知识点为: 项目准备 项目准备 配置 1. 修改settings/dev.py 文件中的路径信息 2. INSTALLED_APPS 3. 数据库 用户部分 图片 1. 后端接口设计: 视图原型 2. 具体视图实现 用户部分 使用Celery完成发送 判断帐号是否存在 1. 判断用户名是否存在 后…

大语言模型的简易可扩展增量预训练策略

前言 原论文:Simple and Scalable Strategies to Continually Pre-train Large Language Models翻译文件已整理至Github项目Some-Paper-CN,欢迎大家Star! 摘要 大语言模型(LLMs)通常需要在数十亿个tokens上进行预训…

Apache-JMeter压测工具教程

下载安装 《JMeter官网下载》 下载完成后,找个文件夹进行解压 配置环境变量 JAVA_HOME(如果是JAVA8还需要配置CLASSPATH)、JMETER_HOME JMETER_HOME修改bin目录下的jmeter.properties文件编码为UTF-8 5.6.3这个版本encoding已经默认为UT…

【MySQL】SQL语句执行流程

目录 一、连接器 二、 查缓存 三、分析器 四、优化器 五、执行器 一、连接器 学习 MySQL 的过程中,除了安装,我们要做的第一步就是连接上 MySQL 在一开始我们都是先使用命令行连接 MySQL mysql -h localhost -u root -p 你的密码 使用这个命令…

基于Crontab调度,实现Linux下的定时任务执行。

文章目录 引言I 预备知识Crontab的基本组成Crontab的配置文件格式Crontab的配置文件Crontab不可引用环境变量杀死进程命令II Crontab实践案例Crontab工具的使用重启tomcat服务每分钟都打印当前时间到一个文件中30s执行一次III 常见问题并发冗余执行任务&& 和|| 和 ;的区…

WebRTC音视频开发读书笔记(一)

一、基本概念 WebRTC(Web Real-Time Communication,网页即时通信)于2011年6月1日开源,并被纳入万维网联盟的W3C推荐标准,它通过简单API为浏览器和移动应用提供实时通信RTC功能。 1、特点 跨平台:可以在Web,Android、…

Windows下pip install mysqlclient安装失败

有时候安装mysqlclient插件报如下错误 提示先安装mysqlclient的依赖wheel文件 下载链接(必须对应版本,python3.6版本对1.4.4版本) 如下选择历史版本 mysqlclient官网 https://pypi.org/project/mysqlclient/python3.6对应版本 https://pypi.org/project/mysqlcl…

Unity3D 自定义窗口

Unity3D 自定义窗口的实现。 自定义窗口 Unity3D 可以通过编写代码,扩展编辑器的菜单栏和窗口。 简单的功能可以直接一个菜单按钮实现,复杂的功能就需要绘制一个窗口展示更多的信息。 编辑器扩展的脚本,需要放在 Editor 文件夹中。 菜单栏…

AI预测福彩3D采取888=3策略+和值012路或胆码测试8月19日新模型预测第61弹

经过60期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,60期一共只错了6次,这给喜欢打私房菜的朋友提供了极高价值的预测结果~当然了,大部…

Ubuntu 22.04 安装 MySQL 8

Ubuntu 22.04 安装 MySQL 8 本文描述了Ubuntu安装MySQL 8的方法 CentOS7 的安装方法点击此处跳转 Windows 的安装方法点击此处跳转 Docker 的安装方法点击此处跳转 正文开始: 在一切开始之前,建议先切换到root #输入下方名,然后输入当…

openGauss 6.0安装过程解除对root用户依赖之gs_preinstall

目录 1.执行前提条件 1.1设置OS参数: 1.2定时任务权限 1.3 修改最大文件描述符 2.切换至omm用户,执行preinstall 3.source环境变量 4.执行gs_install 在给客户部署业务系统时,由于openGauss数据库的预安装过程需要用到root用户执行&am…

uniapp left right 的左右模态框

标题 这是组件 <template><div class"content-wrapper"><divv-for"(vla, i) in products":key"i":class"[content-page, getPageClass(i)]"><slot :data"vla"><!-- 用户自定义的内容 --><…

微信小程序中实现自动滚动

使用scroll-view组件的scroll-into-view属性&#xff1a; <scroll-view class"container" scroll-y"{{true}}" scroll-into-view"recordBottomScroll"><view class"text_style" style"color: #252526;">{{te…