【Linux】--谈谈冯诺依曼体系结构和操作系统

news2024/11/13 15:01:14

文章目录

  • 冯诺依曼体系
    • 组成部分
    • 数据层面
      • CPU
      • 存储器
      • 外设
      • 结论
  • 操作系统
    • 什么是操作系统
    • 为什么要有操作系统
    • 怎么去管理
  • 总结

冯诺依曼体系

冯·诺依曼结构是一种将程序指令存储器和数据存储器合并在一起的存储器结构,数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。现代的计算机遵循的基本结构就是冯·诺依曼结构

在这里插入图片描述

组成部分

看上图可以总结为三个组成部分

  1. CPU:CPU可以看成是运算器和控制器的统称,这是计算机的核心。用于执行计算机中的各种算数和逻辑运算操作(其中算术逻辑单元是中央处理核心的部分),它也是发布命令的最高“管理者”,完成协调和指挥整个计算机系统的操作。CPU在运行时必须要有数据
  2. 存储器:存储器可以理解为内存,它是用于暂时存放CPU中的运算数据,以及外部存储器交换的数据。它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。只要计算机开始运行,操作系统就会把需要运算的数据从内存调到CPU中进行运算,当运算完成,CPU将结果传送出来。
  3. 外设:这里的外设就是指输入设备和输出设备的统称,像硬盘就是一个即可输出又可输入的设备,还有键盘、鼠标、网卡等。它是一个可以永久存储数据的设备。

在这里插入图片描述

数据层面

今天我们就来具体谈一谈从数据层面上来讲,整个冯诺依曼体系结构之间的原理。

CPU

首先我们先来认识一下CPU:

CPU只要已接收到指令、数据,它就会去执行指令,计算出数据最后的结果。对于CPU而言它有一个自己的指令集,这个指令集就是用来让它能够认识别人给它发出的指令,就像我们人一样,需要通过学习认识字之后,才可以去学习各种的知识然后才可以去工作。对于CPU而言它有了自己的指令集之后,就能理解所接受的指令是什么,从而完成目的。

这就是为什么在我们平时写好代码后,还要去进行编译链接生成一个二进制的可执行程序,目的就是为了编译成CPU能看的懂的指令,然后传给CPU,它接受到了之后就可以去执行这个可执行程序。

CPU的速度是非常快的

存储器

存储器就相当于内存,CPU所有的数据都是从内存中直接获取的。但是内存掉电易失,只能作为一个临时的存储,内存的速度也是比较快的

外设

外设可以看做是输入设备和输出设备的统称。例如硬盘,硬盘是一个即可输入又可输出的设备,它可以永久性的存储我们的数据,但是它的速度相对而言是比较慢的。

结论

对于执行的速度而言:CPU>存储器>外设。那么问题来了,CPU需要数据才能够执行,那它的数据从哪里来呢?

我们都知道CPU的速度是非常快的,但是外设的速度是很慢的,那么根据”木桶原理“,如果现在CPU的数据直接从外设里面获取,那CPU的速度就会有很大的下降。所以我们可以得出一个结论:CPU的数据不可以直接从外设中获取,而是从内存中获取,也就是说CPU不会直接和外设打交道,而是和内存直接打交道。所有的外设只要有数据需要载入就只能载入到内存中,而内存将数据写出,也只会是写到外设中
在这里插入图片描述

操作系统

什么是操作系统

根据冯诺依曼体系我们可以知道CPU不会直接和外设打交道,而是和内存直接打交道。那么对于数据而言,可能会有大量杂乱无章,那CPU怎么才能获取到正确的数据,内存又怎么才能把数据传到CPU,CPU执行完之后又怎么才能传回给内存呢。这时候就需要去管理这些设备之间的链接了。那么操作系统就是负责这些的。也就是说:操作系统是一个负责软硬件管理的软件

为什么要有操作系统

操作系统是非常重要的一个角色,就相当于与一个公司的老板,对下要对整个公司的员工进行管理,对上要为满足客户需要做出决策

也就是说操作系统要与硬件交互,管理所有的软硬件自愿,同时要为用户程序(应用程序)提供一个良好的、稳定的、安全的执行环境

怎么去管理

可以举个例子:假设我们现在是一个校长,我们要如何让怎么去管理全校的学生呢。不可能会是每一个学生都认识,然后了解每一个学生的基本信息和成绩等,那这时我们就可以让每个学院的辅导员去进行学生数据的收集,但是一个学院还是会有很多学生,那辅导员就又可以让每个班的班主任去进行收集。收集学生数据的这个过程我们可以称为对学生的描述,得到了每个学生的数据后,我们再对这些数据进行一个封装,比如用一个链表将所有的学生数据连起来,等我们需要得到哪一个学生的数据时在遍历整个链表就能将所有的数据全部查看到,如果需要开除某一个学生就只要将链表中属于这个学生的数据节点释放掉就行了,这是管理学生就可以转换为对链表的增删查改,也就是将所有的数据组织起来

因此操作系统的管理方式也是类似,因为操作系统的本质就是对数据进行管理,所以它就可以先将所有的数据进行描述,然后再讲所有的数据组织起来,便于管理。对于辅导员来讲,就是一个协助管理的角色,也可以相当于计算机中的驱动

在这里插入图片描述

但是仅仅是这样就足够了吗,肯定不是!假设现在我们是一个银行的行长,银行里面会有金库等非常重要的东西,那现在用户来银行办理业务,如果直接让用户访问到银行里的所有设备是不是就会出现很大安全隐患。所以去银行办理业务时,我们都需要隔着一个个的窗口进行办理,这就是银行的自我保护的一种模式,有了这个窗口既能对外提供服务又能保护好自身。

我们的操作系统也是同理,所有的用户程序都是不可以直接访问到操作系统的,而是通过一个又一个的接口让每一个指令去调用对应的接口从而完成操作。

那么问题又来了,假如你现在去银行办理业务但是你不识字,直接去到窗口办理,让你去填文件那些你都不会填,那这是怎么办呢。这时可能会有一位在大厅的业务人员过来帮助你,你把需求告诉给他后他就会帮你吧所有的文件填好,此时你再去窗口办理业务就可以直接把文件交上了。

那么对于操作系统来讲也是如此,用户写好指令后会先去调用用户的操作接口,操作接口再去调用系统调用接口,这样操作系统也就可以很好地将自己保护起来,并且也能为用户提供服务

在这里插入图片描述

总结

对于计算机底层的这些原理还是比较难理解的

需要不断反复的去研究

这次写的文章也是自己的一些浅浅的理解

有哪些不对之处各位大佬帮忙指点指点🙈

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

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

相关文章

C++继承、多继承及菱形继承

继承 继承是C面向对象的三大特性之一(封装、继承和多态)。 一、构造和析构顺序 先执行父类构造函数,再执行子类构造函数; 先执行子类析构函数,在执行父类析构函数。 二、同名隐藏 2.1 概念 子类中的同名属性和成…

vue父子组件传值记录

之前父子组件传值不太熟悉,组件间传值要么用vuex,要么用sessionStorage缓存,但是sessionStorage感觉用多了不太好,缓存太多容易混淆,vuex还是比较好用,,但是用的过程中好像有个问题,…

Shell之计算命令、流程控制、函数

文章目录🚏 Shell计算命令🚀 Shell计算命令:expr命令详解🚬 求值表达式(整数 前面)🚬 字符串语法🚬 小结🚄 Shell计算命令:(())命令详解🚬 小结🚒 Shell计算命…

linux:2.3.4 查找/搜索命令(find+grep)+压缩/解压缩命令(gzipbzip2+tar+mv+mkdir)

2.3.4 查找/搜索命令 1. find 在 Windows 中搜索文件,一般查找文件需要传入两个条件:① 在哪些目录中查找; ② 查找的内容.。在 Linux 中,查找文件的也需要这两个条件,不同于 Windows 使用搜索框 查找,Li…

蓝桥杯单片机第九届省赛题详细讲解(电子钟)

看之前强烈建议先自己做一遍!!!演示视频题目讲解完整程序main.conewire.honewire.cds1302.hds1302.c工程文件演示视频 题目讲解 首先还是一如既往从题目的程序框图准备起。 将ds18b20,独立按键,数码管显示&#xff0…

弹指间计算机协会 2021“千里码”程序设计竞赛 题面

A.Hello World! Description 为保证所有参赛人员在比赛中都能拿到分数,本题只考察c的输出。 算法比赛不仅考察思考问题的能力,也需要一定的细心程度。 直接输出" HelI0 Wor1d!!" ,您将获得此题的全部分数。 Input 本…

django基于python的旅游网站--python-计算机毕业设计

项目介绍 旅游网站系统的用户分管理员和用户两个角色的权限子模块。 管理员所能使用的功能主要有:首页、个人中心、用户管理、景点分类管理、景点信息管理、门票预订管理、酒店信息管理、客房信息管理、客房预订管理、美食信息管理、用户分享、系统管理等。 用户可…

[MySQL]变量

文章目录1. 变量1.1 系统变量1.1.1 系统变量分类1.1.2 查看系统变量查看所有系统变量查询部分系统变量查看指定系统变量1.1.3 修改系统变量方式一:修改配置文件方式二:使用 set 设置系统变量的值1.2 用户变量1.2.1 用户变量的分类1.2.2 会话用户变量变量…

Maven

Maven是专门用于管理和构建Java项目的工具,它的主要功能有: 提供了一套标准化的项目结构提供了一套标准化的构建流程(编译,测试,打包,发布...)提供了一套依赖管理机制标准化的项目结构 不同IDE之…

C++语法——详细剖析多态与虚函数

目录 一.虚函数与多态的概念与基本使用 (一).概念 (二).基本使用 二.虚函数的底层 三.特殊的虚函数(协变) 四.多态在多继承、菱形继承与菱形虚拟继承中的使用。 (一).多继承 …

C语言分支与循环实战篇-猜数字小游戏/关机小程序

前言 👻作者:龟龟不断向前 👻简介:宁愿做一只不停跑的慢乌龟,也不想当一只三分钟热度的兔子。 👻专栏:C初阶知识点 👻工具分享: 刷题: 牛客网 leetcode笔记软…

大一学生HTML5期末大作业——基于HTML+CSS制作传统节日美食13页(美食网站设计与实现)

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

[LeetCode周赛复盘] 第 317 场周赛20221030

[LeetCode周赛复盘] 第 317 场周赛20221030 一、本周周赛总结二、 [Easy] 6220. 可被三整除的偶数的平均值1. 题目描述2. 思路分析3. 代码实现三、[Medium] 6221. 最流行的视频创作者1. 题目描述2. 思路分析3. 代码实现四、[Medium] 6222. 美丽整数的最小增量1. 题目描述2. 思路…

终极Hadoop大数据教程

终极Hadoop大数据教程 包含 MapReduce、HDFS、Spark、Flink、Hive、HBase、MongoDB、Cassandra、Kafka 等的数据工程和 Hadoop 教程! 课程英文名:The Ultimate Hands-On Hadoop - Tame your Big Data! 此视频教程共17.0小时,中英双语字幕&…

1.3 信号处理函数,创建worker进程

文章目录1、信号处理函数2、创建worker线程3、sigsuspend函数说明4、write函数思考1、信号处理函数 1、初始化信号的函数,用于注册信号处理程序 2、信号处理函数 初始化信号函数,遍历结构体数组,然后给结构体数组中的每个成员注册信号处理函数…

python实现自动检测核酸用码记录 ---- 自动化办公小技巧(摸鱼利器)

自动检测核酸用码记录🥇预备知识✈️os库os.path.exists()os.mkdir()os.remove()os.listdir()👽Python 3 查看字符编码方法⏰python3获取当前系统时间🐤读取图片,保存到指定目录👼将数据保存到csv文件中🥈p…

使用html+css实现一个静态页面(含源码)

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

freeRTOS学习(三)

任务管理 任务功能:任务以C函数的形式实现。唯一特别的地方是它们的原型,它必须返回void并接受一个void指针形参。 void ATaskFunction(void *pvParameters);**每个任务本身都是一个小程序。它有一个入口点,通常在无限循环中永远运行&#…

回归测试选择用例,看这里就可以了。

介绍 在软件生命周期中,软件经常发生变化,软件开发人员任何代码改动都会有引入故障的风险)。 为了消除或减小这种风险,在软件迭代开发模式下,回归测试扮演着重要的角色:它能够帮助测试人员验证新增的功能…

mac配置jdk环境变量

**下载完成后直接安装一路next直到完成。 查看JDK安装后的路径 在终端输入以下命令查看JDK地址** 按照以下命令的顺序来设置jdk环境变量 查看JDK地址 :/usr/libexec/java_home -V。 open -e .bash_profile打开文件 touch .bash_profile 创建文件 打开.bash_prof…