linux_进程周边知识——理解冯诺依曼体系结构

news2024/11/15 12:16:29

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

        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.coloradmin.cn/o/1925181.html

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

相关文章

github中下载zip后,本地仓库如何与github上的项目相关联

有时候网速问题&#xff0c;git clone 太慢&#xff0c;就直接下载zip文件&#xff0c;然后再进行关联 1、下载zip 2、解压&#xff0c;把文件夹名称中-main去掉 3、进行关联 cd <repo> git init git add . git remote add origin https://github.com/<user>/&l…

springboot在线教育平台-计算机毕业设计源码68562

摘要 在数字化时代&#xff0c;随着信息技术的飞速发展&#xff0c;在线教育已成为教育领域的重要趋势。为了满足广大学习者对于灵活、高效学习方式的需求&#xff0c;基于Spring Boot的在线教育平台应运而生。Spring Boot以其快速开发、简便部署以及良好的可扩展性&#xff0c…

第一个基于FISCOBCOS的前后端项目(发行转账)(已开源)

本文旨在介绍一个简单的基于fiscobcos的前后端网站应用。Springbootjs前后端不分离。 所使用到的合约也是一个最基本的。首先您需要知道的是完整项目分为三部分&#xff0c;1是区块链平台webase搭建&#xff08;此项目使用节点前置webase-front即可&#xff09;&#xff0c;2是…

帕金森病患者在日常饮食中需要注意哪些特殊的营养需求?

帕金森病患者的特殊营养需求 帕金森病患者在日常饮食中需要特别注意以下几个方面的营养需求&#xff1a; 蛋白质摄入&#xff1a;由于帕金森病药物可能与蛋白质竞争同一种转运蛋白进入大脑&#xff0c;因此建议将蛋白质的摄入量分散在一天中的多餐中&#xff0c;避免集中在单一…

【python学习】多线程编程的背景、定义、特点、优缺点、使用场景和示例以及和单线程的区别

引言 随着计算机技术的发展&#xff0c;多核处理器已经成为了主流,为了充分利用多核处理器带来的并行计算能力&#xff0c;提高程序的执行效率和响应速度&#xff0c;多线程编程变得尤为重要 Python作为一种高级编程语言&#xff0c;提供了多线程编程的支持&#xff0c;允许开发…

力扣 24两两交换链表中节点

画图 注意有虚拟头结点 注意判断时先判断cur->next ! nullptr,再判断cur->next->next ! nullptr 注意末尾返回dumyhead->next&#xff0c;用新建result指针来接并返回 class Solution { public:ListNode* swapPairs(ListNode* head) {ListNode *dummyhead new …

【2024_CUMCM】时间序列1

目录 概念 时间序列数据 时期和时点时间序列 数值变换规律 长期趋势T 季节趋势S 循环变动C 不规则变动I 叠加和乘积模型 叠加模型 相互独立 乘积模型 相互影响 注 spss缺失值填补 简单填补 五种填补方法 填补原则 1.随机缺失 2.完全随机缺失 3.非随机缺失…

WGCLOUD登录页面支持输入验证码吗

支持的 v3.5.3版本开始&#xff0c;WGCLOUD支持在登录页面配置输入验证码&#xff0c;我们可以根据自己的场景需要&#xff0c;配置是否在登录页面显示验证码&#xff0c;如下说明 登录页面添加验证码说明 - WGCLOUD

酒店管理系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;酒店管理员管理&#xff0c;房间类型管理&#xff0c;房间信息管理&#xff0c;订单信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;房间信息…

CycleGAN深度学习项目

远程仓库 leftthomas/CycleGAN: A PyTorch implementation of CycleGAN based on ICCV 2017 paper "Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks" (github.com) 运行准备 Anaconda 安装需要的库 指令 pip install panda…

AI时代:探索个人潜能的新视角

文章目录 Al时代的个人发展1 AI的高速发展意味着什么1.1 生产力大幅提升1.2 生产关系的改变1.3 产品范式1.4 产业革命1.5 Al的局限性1.5.1局限一:大模型的幻觉 1.5.2 局限二&#xff1a;Token 2 个体如何应对这种改变?2.1 职场人2.2 K12家长2.3 大学生2.4 创业者 3 人工智能发…

万界星空科技商业开源MES系统全面解析

万界星空科技商业开源MES源码可拖拽式数据大屏 开源MES系统具有定制化、节省成本、开放性和适应性等优势和特点&#xff0c;可以帮助企业更好地管理生产流程。万界星空MES制造执行系统的Java开源版本&#xff0c;为制造业企业提供了全面的生产管理解决方案。万界星空科技的目标…

从零开始做题:满屏的QR

题目 给出一张png图片 解题 import os import re import cv2 import argparse import itertools import numpy as npparser argparse.ArgumentParser() parser.add_argument(-f, typestr, defaultNone, requiredTrue,help输入文件名称) parser.add_argument(-p, typestr, d…

[Vulnhub] Stapler wp-videos+ftp+smb+bash_history权限提升+SUID权限提升+Kernel权限提升

信息收集 IP AddressOpening Ports192.168.8.106TCP:21,22,53,80,123,137,138,139,666,3306, Using Nmap for scanning: $ nmap -p- 192.168.8.106 --min-rate 1000 -sC -sV The results are as follows: PORT STATE SERVICE VERSION 20/tcp closed ftp-data…

昇思25天学习打卡营第20天 | 基于MindNLP+MusicGen生成自己的个性化音乐

基于MindNLPMusicGen生成个性化音乐 实验简介 MusicGen是Meta AI提出的音乐生成模型&#xff0c;能够根据文本描述或音频提示生成高质量音乐。该模型基于Transformer结构&#xff0c;分为三个阶段&#xff1a;文本编码、音频token预测和音频解码。此实验将演示如何使用MindSpo…

Java常用排序算法

冒泡排序&#xff08;Bubble Sort&#xff09; arr[0] 与 arr[1]比较&#xff0c;如果前面元素大就交换&#xff0c;如果后边元素大就不交换。然后依次arr[1]与arr[2]比较&#xff0c;第一轮将最大值排到最后一位。 第二轮arr.length-1个元素进行比较&#xff0c;将第二大元素…

高速数据采集与图像传输对带宽需求的对比分析

对于120MHz高速采集的数据&#xff0c;直接传输原始数据和将数据计算生成1024x1024的图像后再传输图像&#xff0c;这两种方法对带宽的影响会有显著不同。为了进行详细分析&#xff0c;我们需要考虑以下因素&#xff1a;数据采样率、数据量、图像生成算法、图像压缩和传输带宽需…

Spark调度底层执行原理详解(第35天)

系列文章目录 一、Spark应用程序启动与资源申请 二、DAG&#xff08;有向无环图&#xff09;的构建与划分 三、Task的生成与调度 四、Task的执行与结果返回 五、监控与容错 六、优化策略 文章目录 系列文章目录前言一、Spark应用程序启动与资源申请1. SparkContext的创建2. 资…

python:绘制一元四次函数的曲线

编写 test_x4_x2_4x.py 如下 # -*- coding: utf-8 -*- """ 绘制函数 y x^4x^24x-3 在 -2<x<2 的曲线 """ import numpy as np from matplotlib import pyplot as plt# 用于正常显示中文标题&#xff0c;负号 plt.rcParams[font.sans-s…

值得关注的数据资产入表

不错的讲解视频&#xff0c;来自&#xff1a;第122期-杜海博士-《数据资源入表及数据资产化》-大数据百家讲坛-厦门大学数据库实验室主办第122期-杜海博士-《数据资源入表及数据资产化》-大数据百家讲坛-厦门大学数据库实验室主办-20240708_哔哩哔哩_bilibili