linux_进程概念——理解冯诺依曼体系结构

        前言: 本篇内容是为了让友友们较好地理解进程的概念, 而在真正了解进行概念之前, 要先了解一下冯诺依曼体系结构。 所以博主会先对冯诺伊曼体系结构进行解释, 然后再讲解进程的概念。 

        ps: 本篇内容适合了解一些linux指令地友友们进行观看

目录

冯诺依曼体系结构硬件

冯诺依曼的存储

存储等级 

存储器的作用

冯诺依曼的数据流动  

程序的运行

数据的打印

网络交互数据的流动


冯诺依曼体系结构硬件

下面是整个冯诺依曼体系结构

        储存器: 友友们第一眼看到储存器, 可能认为储存器就是我们电脑上面的内存、磁盘、u盘这种存储设备, 但是其实存储器其实只是电脑上面的内存。 而磁盘, u盘这种其实是输入输出设备。 

        输入输出设备:计算机是为了帮助人们进行计算的, 而我们要进行某个数据地计算, 就要能够将这个数据写入计算机的内存中, 然后计算机还能将结果反馈给我们。但是我们的计算机只能够认识0101这种二进制文字, 而我们人是不能够识别这些文字的。 所以我们就很难直接访问内存, 必须要借助一些输入输出设备。 通过这些设备将我们人的文字转化为二进制文字输入给计算机,然后通过输出设备将这些二进制文字转化为人的文字反馈给我们。 

        常见的输入设备有:键盘、鼠标、磁盘、u盘、网卡、摄像头、话筒等等

        常见的输出设备有: 显示器、播放器硬件、磁盘、网卡等等

        通过上面的输入输出设备我们可以发现, 有的硬件是纯的输入设备, 有的硬件是纯的输出设备。有的硬件既是输入设备, 又是输出设备。 

        比如说网卡和磁盘, 我们有时候需要从磁盘中读取数据进行计算, 那么它就是输入设备。 当我们需要从磁盘中输出数据进行计算, 那么他就是输出设备;又比如网卡, 我们需要从网络中获取资源时, 那么网卡就是输入设备。 我们需要在网络中发送资源时,那么网卡就是输出设备。  

        运算器:运算器是计算机中对数据进行计算的, 计算分为两种——算术运算和逻辑运算。 

        控制器:对于计算机来说, 什么时候将输入设备的数据放入到存储器。 什么时候将存储器的数据放到运算器。 什么时候将运算器的数据取出再放回到存储器中, 是由控制器控制的。

        注: 上面的输入输出设备被称为外设。 上面的运算器和控制器也就是中央处理器被称为cpu。 

        我们也要知道, 计算机的本质就是一堆硬件的集合, 并且这些硬件之间有协同的能力。 

        硬件也就是组件, 组件和组件之间需要使用某种方式传递信号, 当代计算机的组成, 都是由冯诺依曼体系结构构成的。 

        

        上面那些硬件——存储器、输入输出设备、运算器、控制器等都是独立的个体, 但是各个硬件单元必须要用“线”连接起来, 这些线叫做总线。 总线分为两类——IO总线、系统总线。

        其中cpu和存储器, 也就是和内存中进行交互的叫做系统总线。 外设和存储器交互的叫做IO总线。

冯诺依曼的存储

注意, 是存储, 不是存储器。

存储等级 

     首先这里要对上面这张图进行解释。 对于计算机整个结构来说, 一共有这么多层存储结构。 第一层是寄存器, 然后是一级存储,二级存储, 三级存储, 内存以及磁盘。 这些存储结构, 从上到下容量越来越大, 速度越来越慢, 价格越来越低。 

       对于寄存器和内存以及磁盘的存储速度来说: 寄存器的速度可以达到纳秒级别, 然后内存的速度可以达到微妙级别, 外存的速度可以达到毫秒级别。 也就是说, 三个存储结构的相差级次达到了10的三次方。       

存储器的作用

        那么进入主题, 我们思考一下对于冯诺依曼体系结构来说, 不能将存储器直接去掉。 让输入设备直接通向中央处理器再前往输出设备, 这是为什么?答案是因为输入输出设备的速度和cpu的差距太大了。下面对细节进行解释: 

        首先木桶原理告诉我们,木桶的存水量由最短的那个短板所决定。 那么对于计算机来说, 寄存器的存储速度最快。而磁盘也就是输入输出设备的存储速度最慢。那么也就是说, 磁盘决定了整个冯诺依曼体系的运行速率。 那么去掉存储器也就是内存后, 整个计算机体系的运行速率仍然由输入和输出设备进行决定。 那么去掉存储器的意义就不会太大。

        那么友友们就会疑惑了, 那么既然去掉存储器和不去掉存储器。 根据木桶效应计算机体系的效率都是由输入输出设备进行决定, 那么为什么还要加存储器增加计算机的成本呢?

        这个问题很重要很重要, 为什么? 原因就是“缓存原理”——这个词不是官方, 这个词是博主为了好理解, 自己说的。 佬们笑一笑就好。

        首先我们要知道, 内存的存储空间一般都在1g到32g(目前一般的电脑都在16g, 有可能有的电脑更多, 而且也很少有1, 2g的电脑了)。 那么我们的内存就可以在cpu没有工作的时候, 先将输入输出设备的数据预缓存到自己里面。等到cpu开始工作的时候, 就将这些预先缓存好的数据再放到cpu中解析与处理。 这个时候内存还能基于预缓存输入输出设备输送过来的其他数据。 这就是IO, 系统两条总线并行。 可以大大加快整个系统的工作效率。  

        那么, 有的友友可能又会问。 博主, 那既然cpu里面的存储那么快, 为什么不将计算机的内存, 磁盘, 这些存储设备都换成cpu这样的呢?

        对于这个问题, 首先我们要重新知道, cpu的存储空间, 其实就是寄存器。 那么我们知道, 寄存器的造价非常昂贵, 可使用的内存非常小。 要想造出一台几百个g寄存器的计算机, 成本非常高。 一般群众用不起——要知道, 计算机造出来, 就是要给群众使用的, 计算机之所以能发展的这么好, 就是因为它还算便宜。 如果一台计算机几十几百万, 那么没有多少人会用。 当然有人会用, 但是还是在少数。 所以, 现在有一套成本低, 效率不错的计算机体系结构——冯诺依曼, 为什么不用。 所以, 冯诺依曼, 我们的现在的计算机还在使用它。 

冯诺依曼的数据流动  

程序的运行

      那么, 关于为什么不去掉存储器的问题我们想清楚后, 再来思考一个问题:一个程序要运行, 为什么要加载到内存中呢?(这里可能有点友友不知道程序要运行必须加载到内存中, 这里记住就可以

       那么, 我们就要知道, 对于内存来说, 内存是一个断电易丢失数据的存储空间。 那么一个程序我们能够长久地保存在计算机中, 那么它势必是存储在磁盘中。也就是说, 程序是放到输入设备中的, 而cpu只从内存中拿数据。 所以, 一个程序想要被cpu计算, 那么这个程序就要被放到内存中。 所以, 程序在运行之前, 一定要先将程序缓存到内存中, 然后cpu再从内存中拿到数据。 这个过程, 是由冯诺依曼体系决定的。所以, 软件在执行的时候, 必须遵守硬件的规则。 硬件就是底层和下限, 软件就是上层和天花板。 

数据的打印

        第二个问题:为什么对于打印一行的数据来说, 默认的数据, 是可能被缓存起来的?在哪里缓存呢?

        首先, 数据是默认缓存到内存的某个区域, 如果这时缓存区没有满或者没有换行符, 那么这个缓存区就不会刷新, 只有刷新后, 那么才会将缓冲区的数据全都打印出来。 这就是为什么我们经常看到一行一行的打印数据。 

网络交互数据的流动

        第三个问题, 我们在网络上发送文件, 发送消息聊天的时候。 数据是怎么流动的呢?

现在我们有张三和李四两个人, 两个都登录了qq, 并且两个人还在聊天。

        那么假如张三给李四发了一条消息。 首先, 张三从键盘上输入, 然后输入的内容进入到了存储器之中进行缓存, 然后这些内容有传送到了cpu之中进行计算, 然后返回到内存之中, 又从内存之中输送到张三的显卡之中。 李四的电脑上面的网卡接收到张三网卡中传送过来的信息后, 将数据缓存到内存中, 然后放到cpu中进行计算放回内存, 最后从内存取出放到李四的显示屏上。 这就是聊天时的数据流动。 

        那么发送文件是类似的。 假如张三给李四发了一个文件, 首先, 张三的电脑要从磁盘里拿到这个文件放到存储器中进行缓存, 然后内存中的文件放到cpu中进行解析和计算。 完成之后放回存储区, 然后输送到网卡中, 进而输送到李四的网卡中。 那么李四的网卡接受到文件之后就将文件放到存储区, 然后经过cpu的解析与计算放回存储区, 再从存储区输送到李四电脑的磁盘中。 这就是传送文件时的流动。 

综上, 我们其实可以发现, 在冯诺依曼体系中的数据传送, 归根结底就是就是两台冯诺依曼依靠输入输出设备, 网卡等硬件,将数据进行传送的过程。 

        

--------------------------------------------------

以上, 就是本节全部内容, 下面是本节的笔记

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

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

相关文章

Firealpaca 解锁版下载及安装教程 (火焰羊驼绘画软件)

前言 FireAlpaca是一款简单易用的电脑绘画软件,采用了类似于Photoshop的图层绘画方式。对于喜欢手绘和创作漫画的朋友来说,FireAlpaca的多图层功能使得绘画过程更加便捷和简单。作为一个小型图像编辑软件,它能够轻松处理多个图层或手绘图&am…

网络编程的学习之udp

Udp编程过程 Sento不会阻塞 实现聊天室效果 上线 聊天 下线 服务端需要一个地址,去保留名字和ip地址 交互的时候发结构体 下面这个宏只能在c语言里使用 ser.sin_port htons(50000); 上面是端口号50000以上,两边要一样 这里是不要让udp发的太快&am…

Python | Leetcode Python题解之第225题用队列实现栈

题目: 题解: class MyStack:def __init__(self):"""Initialize your data structure here."""self.queue collections.deque()def push(self, x: int) -> None:"""Push element x onto stack."&…

Java 快速入门学习 -- Day 1

Java 快速入门 Ⅰ 学习视频快捷键封装继承方法的重写多态异常I/O 流多线程网络编程 -- 单向通信XML注解navicat mysqlJDBC查询数据库中所有元素并打印 ) 学习视频 【3天搞定JavaSE到SpringBoot框架】 快捷键 // psvm 回车 public static void main(String[] args) {}// s…

【动态规划Ⅳ】二维数组的动态规划——最小路径和

二维数组的动态规划 最小路径和64. 最小路径和原地修改数组定义二维数组进行状态转移优化:用 一维数组进行状态转移相似题目:LCR 166. 珠宝的最高价值 120. 三角形最小路径和原地修改数组定义二维数组进行状态转移一维数组进行状态转移自底向上&#xff…

推荐一个比 Jenkins 使用更简单的项目构建和部署工具

最近发现了一个比 Jenkins 使用更简单的项目构建和部署工具,完全可以满足个人以及一些小企业的需求,分享一下。 项目介绍 Jpom 是一款 Java 开发的简单轻量的低侵入式在线构建、自动部署、日常运维、项目监控软件。 日常开发中,Jpom 可以解…

【R语言+Gephi】利用R语言和Gephi实现共发生网络的可视化

【R语言Gephi】利用R语言和Gephi实现共发生网络的可视化 注:本文仅作为自己的学习记录以备以后复习查阅 一 概述 Gephi是一款开源免费的多平台网络分析软件,在Windows、Linux和Mac os上均可以运行,像他们官网所说的,他们致力于…

Excel第29享:基于sum嵌套sumifs的多条件求和

1、需求描述 如下图所示,现要统计12.17-12.23这一周各个人员的“上班工时(a1)”。 下图为系统直接导出的工时数据明细样例。 2、解决思路 首先,确定逻辑:“对多个条件(日期、人员)进行“工时”…

ONLYOFFICE 8.1版本版本桌面编辑器测评

ONLYOFFICE官网链接:ONLYOFFICE - 企业在线办公应用软件 | ONLYOFFICE ONLYOFFICE在线办公套件:在线办公套件 | ONLYOFFICE ONLYOFFICE在线PDF编辑器、阅读器和转换器:在线PDF查看器和转换器 | ONLYOFFICE ONLYOFFICE 8.1版本桌面编辑器是…

【中项第三版】系统集成项目管理工程师 | 第 4 章 信息系统架构⑤ | 4.8 - 4.9

前言 第4章对应的内容选择题和案例分析都会进行考查,这一章节属于技术相关的内容,学习要以教材为准。本章分值预计在4-5分。 目录 4.8 云原生架构 4.8.1 发展概述 4.8.2 架构定义 4.8.3 基本原则 4.8.4 常用架构模式 4.8.5 云原生案例 4.9 本章…

【DevOps】在云原生时代的角色与重要性探索

🐇明明跟你说过:个人主页 🏅个人专栏:《未来已来:云原生之旅》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是云原生 2、云原生的核心特性 3、什么是DevOps…

昇思25天学习打卡营第14天|基于MindNLP的文本解码原理

基于MindNLP的文本解码原理 文本解码 文本解码是自然语言处理中的一个关键步骤,特别是在任务如机器翻译、文本摘要、自动回复生成等领域。解码过程涉及将编码器(如语言模型、翻译模型等)的输出转换为可读的文本序列。以下是一些常见的文本解码方法和原理: 1. 自回归解码:…

安装nodejs | npm报错

nodejs安装步骤: 官网:https://nodejs.org/en/ 在官网下载nodejs: 双击下载下来的msi安装包,一直点next,我选的安装目录是默认的: 测试是否安装成功: 输入cmd打开命令提示符,输入node -v可以看到版本,说…

Django项目创建的基本准备工作【4】

【 一 】软件开发模式 官话下面 人话 瀑布开发就是将什东西都定义好了在进行开发对吧 敏捷就是进行模块化一样 分批进行 规定一个时间段完成什么样的功能。 总结来说,瀑布开发强调在项目开始之前进行详细的计划和准备,并按照预定的顺序逐步进行&#x…

E. Beautiful Array(cf954div3)

题意:给定一个数组,可以先对数组进行任意排序,每次操作可以选择一个ai,将它变成aik, 想让这个数组变成一个美丽数组(回文数组),求最少操作次数 分析: 先找出相同的数字…

使用Docker制作python项目镜像

各docker桌面版本集合:如果提示新版本系统不支持,可下载旧版本 我也分享在下面。 链接: https://pan.baidu.com/s/1HvaO2wOIE3pNE0bM7Qm3sA?pwdg7ky 提取码: g7ky –来自百度网盘超级会员v2的分享 来源参考:https://zhuanlan.zhihu.com/p/65…

【Linux】命令执行的判断依据:;,,||

在某些情况下,很多命令我想要一次输入去执行,而不想要分次执行时,该如何是好? 基本上有两个选择, 一个是通过shell脚本脚本去执行,一种则是通过下面的介绍来一次入多个命令。 1.cmd:cmd&#…

【RHCE】基于用户认证和TLS加密的HTTP服务(HTTPS)

目录 一、创建用户账号 二、TLS加密 三、配置http服务子配置文件 四、创建访问http服务的文件夹以及输入重定向到文件 五、配置Linux本地仓库以及Windows下的本地仓库 六、基础操作 七、测试 一、创建用户账号 用户认证 # 创建两个账户 [rootlocalhost ~]# htpasswd -…

前端面试39(关于git)

针对前端开发者的Git面试题可以覆盖Git的基础概念、常用命令、工作流程、团队协作、以及解决冲突等方面。以下是一些具体的Git面试 Git基础知识 什么是Git? Git是一个分布式版本控制系统,用于跟踪计算机文件的更改,并协调多个人共同在一个项…