Linux | 深入浅出冯诺依曼

前言

        但凡是科班出生的小伙伴多多稍稍应该都听过冯诺依曼体系吧,这似乎已成为入门计算机的必备知识了,本章就带着大家一起去理解冯诺依曼体系;

一、体系构成

        冯诺依曼体系主张计算机由五大部件组成,如下所示;

输入设备:接收输入信息

输出设备:将结果进行输出显示

运算器:数据的运算

控制器:控制运算(与运算器共同组成CPU)

存储器:数据的存储

        上图就是我们的冯诺依曼体系图,相信大家应该多多少少也看过吧,本文到这还没完,先别走,这只是我们粗粒度的认识,下面我们继续更加深层次的理解冯诺依曼;

二、深入理解冯诺依曼

        我将用下面几个问题来带着大伙谈谈我眼中的冯诺依曼;

问题一:为什么要加上内存?直接从输入设备拿走数据到CPU,计算完以后再给我们的输出设备不可以吗?

问题二:我觉得图中输入设备将数据给内存,然后内存再给CPU,然后CPU再给内存,最后内存再给我们输出设备这个过程太麻烦了,可以按照下图顺序进行数据传递吗?

        其实这两个问题是一个问题,就是对我们冯诺依曼体系中存储器的理解;在理解这个问题前,我先补充一个基础知识;

补充:

        1、在我们的计算机硬件中,我们各个硬件都有自己数据传输速度的问题,其关系大概如下;

CPU > 内存 > 磁盘

        2、在我们计算机中,有些设备既可能是输入设备,也可能是输出设备,如磁盘,网卡等;

        3、木桶原理,简单提一下,一个水桶能接多少水并不在最长的那快木板,而在于最短的那块木板;

回到正题:

        回答问题一,假设我们的cpu是纳秒级别,我们的内存是微秒级别,我们的外设是毫秒级别;假如没有内存,我们处理一次数据是直接从外设传输到CPU,而这个传输的速度取决于外设,也就是毫秒级别;但是如果我们引进了内存,我们可以先将数据预加载到内存中存储起来,然后CPU直接从内存中拿取数据,此时,我们处理数据的速度取决于我们的内存了,也就是微秒级别,这样大大提高了我们的IO效率;问题二,此时,我们的问题二也就迎刃而解了,我们若像问题二那样进行数据流转,我们的IO速度还是取决于外设;

问题三:内存既然这么好,我们为啥还用磁盘呢?

        这个问题,主要从两个方向进行解答,从成本来看,我们内存的价格远远大于磁盘价格,再从我们的效率来看,实际上,全部换成内存,我们的效率也并没有提升多大(肯定会有提升),但是要想计算机称为一种平民产品,价格当然也是要给非常重要的因素,我们认为没有必要用高昂的费用换取少量的速度;

问题四:为什么程序运行前需要加载到我们内存中?

        我们之前就经常听说我们要运行一个程序必须提前将其加载进内存中,我们理解冯诺依曼体系后,这个问题就很好理解了,就是因为冯诺依曼体系的特点,所以我们才要将程序加载进内存中,体系结构决定了软件的行为;

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java设计模式 | 基于订单批量支付场景,对策略模式和简单工厂模式进行简单实现

基于订单批量支付场景,对策略模式和简单工厂模式进行简单实现 文章目录 策略模式介绍实现抽象策略具体策略1.AliPayStrategy2.WeChatPayStrategy 环境 使用简单工厂来获取具体策略对象支付方式枚举策略工厂接口策略工厂实现 测试使用订单实体类对订单进行批量支付结…

Stable Diffusion WebUI报错RuntimeError: Torch is not able to use GPU解决办法

新手在安装玩Stable Diffusion WebUI之后会遇到各种问题, 接下来会慢慢和你讲解如何解决这些问题。 在我们打开Stable Diffusion WebUI时会报错如下: RuntimeError: Torch is not able to use GPU;add --skip-torch-cuda-test to COMMANDL…

操作系统——吸烟者问题(王道视频p34、课本ch6)

1.问题分析:这个问题可以看作是 可以生产多种产品的 单生产者-多消费者问题 2.代码——这里就是由于同步信号量的初值都是1,所以没有使用mutex互斥信号, 总共4个同步信号量,其中一个是 finish信号量

在Lichee RV Dock上的不成功的烧录尝试

最近在学基于risc-v的简单操作系统,刚好手里有块Lichee RV Dock 的板子,所以在学了基础的"hello, world"程序后,想着能不能把这个程序烧录到板子上,简单的做个实验。 要完成这个任务,需要将程序烧录到sd卡上…

专访 Web3Go 新产品 Reiki:培育 AI 原生数字资产与创意新土壤

从 DeFi 到 NFTFi、SocialFi,web3 从业者在尝试 crypto 与区块链技术能为我们的生活、创作、娱乐和文化带来何种新体验,而生成式人工智能的突破性发展则为我们与链上世界的交互、社区内容创作等带来了新的体验,改变互动、交易和价值创造方式。…

容器技术基础

1. Linux Namespace和Cgroups 对于 Docker 等大多数 Linux 容器来说,Cgroups 技术是用来制造约束的主要手段,而 Namespace 技术则是用来修改进程视图的主要方法。 1.1 PID Namespace //Linux 系统正常创建线程 int pid clone(main_function, stack_s…

Docker数据管理、端口映射、容器互联

目录 一、Docker 的数据管理: 1.数据卷: 1.1 宿主机目录/var/www/html 挂载到容器中的/data1: 1.2 测试: 2.数据卷容器: 2.1 创建一个容器作为数据卷容器: 2.2 挂载a1容器中的数据卷…

《数据结构与算法之美》读书笔记1

Java的学习 方法参数多态(向上和向下转型) 向上转型: class Text{public static void main(String[] args) {Animals people1 new NiuMa();people1.eat1();//调用继承后公共部分的方法,没重写调用没重写的,重写了调…

Mysql数据库 2.SQL语言 数据类型与字段约束

Mysql数据类型 数据类型:指的是数据表中的列文件支持存放的数据类型 1.数值类型 Mysql当中有多种数据类型可以存放数值,不同的类型存放的数值的范围或者形式是不同的 注:前三种数字类型我们在实际研发中用的很少,一般整数类型…

【C++】:类和对象(中)之拷贝构造函数+赋值运算符重载

拷贝构造函数 概念 在现实生活中,可能存在一个与你一样的自己,我们称其为双胞胎 那在创建对象时,可否创建一个与已存在对象一某一样的新对象呢? 拷贝构造函数:只有单个形参,该形参是对本类类型对象的引用…

OpenP2P实现内网穿透远程办公

OpenP2P是一个开源、免费、轻量级的P2P共享网络。你的设备将组成一个私有P2P网络,里面的设备可以直接访问其它成员,或者通过其它成员转发数据间接访问。如果私有网络无法完成通信,将会到公有P2P网络寻找共享节点协助通信。 相比BT网络用来共享…

【C++】哈希的应用 -- 布隆过滤器

文章目录 一、布隆过滤器提出二、布隆过滤器概念三、布隆过滤器哈希函数个数的选择四、布隆过滤器的实现1.布隆过滤器的插入2.布隆过滤器的查找3.布隆过滤器删除4.完整代码实现 五、布隆过滤器总结1.布隆过滤器优点2.布隆过滤器缺陷3.布隆过滤器的应用4.布隆过滤器相关面试题 一…

华为云HECS云服务器docker环境下安装nacos

华为云HECS云服务器,安装docker环境,查看如下文章。 华为云HECS安装docker-CSDN博客 一、拉取镜像 docker pull nacos/nacos-server二、宿主机创建挂载目录 执行如下命令: mkdir -p /usr/local/nacos/logs mkdir -p /usr/local/nacos/con…

【iOS】UITableView总结(Cell的复用原理、自定义Cell、UITableViewCell协议方法)

UITableView 列表的特点: 数据量大样式较为统一通常需要分组垂直滚动通常可视区只有一个 -> 视图的复用 UITableViewDataSource UITableView作为视图,只负责展示,协助管理,不管理数据 需要开发者为UITableView提供展示所需…

基于springboot实现java学习平台项目【项目源码+论文说明】计算机毕业设计

基于springboot实现java学习平台演示 摘要 在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括学习平台的网络应用,在外国学习平台已经是很普遍的方式,不过国内的管理平台可能还处于起步阶段。学习平台具…

网络编程-java基础

两台电脑之间的通信形成了网络 最小的网络:局域网 校园网(局域网) 城域网(一个市) 广域网(全球) 为什么我发QQ你能收到,这是因为我发的消息实际上是发给了QQ服务器,并不是直接发给你的, 我是与QQ服务器进行通信的&#xff0c…

正方形(Squares, ACM/ICPC World Finals 1990, UVa201)rust解法

有n行n列(2≤n≤9)的小黑点,还有m条线段连接其中的一些黑点。统计这些线段连成了多少个正方形(每种边长分别统计)。 行从上到下编号为1~n,列从左到右编号为1~n。边用H i j和V i j表示…

深度学习零基础教程

代码运行软件安装: anaconda:一个管理环境的软件–>https://blog.csdn.net/scorn_/article/details/106591160(可选装) pycharm:一个深度学习运行环境–>https://blog.csdn.net/scorn_/article/details/106591160&#xf…

2023/10/30-LED灯驱动开发

k1.c #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h> #include "head.h" char kbuf[128] {}; unsigned int major; //定义三个指针指向映射后的虚拟内…

家庭燃气表微信抄表识别系统

1.背景需求 目前家里燃气度数的读数上报&#xff0c;每个月在社区微信群里面将手机拍摄的燃气表读数截图&#xff08;加住址信息水印&#xff09;&#xff0c;发到群里给抄表员。 2.总体设计 设计目标 功能一&#xff1a;手机上随时可以远程采集读数图片&#xff08;自动加住…