【Linux 学习计划】-- 冯诺依曼体系 | 操作系统的概念与定位,以及其如何管理软件

目录

冯诺依曼体系结构

操作系统是干什么的?

理解操作系统中的管理

对OS(操作系统)宏观、整体的分析

总结

结语


冯诺依曼体系结构

首先我们来看这样一张图,这就是大名鼎鼎的冯诺依曼体系

在日常生活中,所有的计算机都是遵循冯诺依曼体系结构的

其中这里面有很多都是我们日常生活中耳熟能详的

比如输入设备:键盘,麦克风摄像头等等,输出设备:显示器,声卡,网卡等等

还有像CPU和存储器(其实就是内存),这些我们在日常生活中都是很常见的

同时,我们的数据也必须是在这个体系中流动的,比如你要敲键盘,然后数据要在显示器中显示出来,而数据流动的本质就是复制,所以这就要求冯诺依曼体系中的每一个结构都有一定的存储能力:存储器不必多说,CPU中有寄存器等等

但是,为什么要有存储器呢?直接输入设备链接CPU链接输出设备不就好了吗?

这时我们就需要引入一个概念了,叫做木桶效应,也就是说,计算机整体的效率是由最慢的那个决定的

而我们效率的主要矛盾是什么?CPU的计算速度非常快,这肯定不是主要矛盾,所以最关键的就是数据流动的速度,也就是数据复制的速度

同样的,我们的CPU很快,但是输入和输出设备非常慢,所以导致我们的整体效率就被拖垮了,这也就是为什么我们需要一个内存作为中间桥梁的原因

因为内存中可以预先加载大量数据,CPU不必等数据全部从输入设备中来了才去计算,只需要从内存中读取即可,甚至还能在输入设备传输数据给内存的同时,CPU直接计算好顺带将数据返回给内存顺便给输出设备,这样我们的效率就提升了好几个量级

而同时,冯诺依曼体系结构规定:

CPU之和内存打交道,不和外设打交道

外设的数据只会交给内存,然后再交给CPU处理,最后再给回内存

所以,我们以前学习的时候,可能很疑惑,为什么代码一定要先加载到内存中才能跑起来

现在我们明白了,这时冯诺依曼体系结构要求这么干的,而我们的程序在没有跑起来之前,被放在了磁盘,也就是外设,只有加载到内存里面了,才能交给CPU然后跑起来

最后我们来说一下,为什么冯诺依曼体系结构那么伟大

大家看到这里其实还是比较无感的,认为这就是一个普通的知识点,而这时我们又需要引入一个概念了,叫做存储金字塔:

我们因为需要提升电脑的效率,所以有了存储器

如果你是一个土豪,你当然可以直接用各种寄存器充当内存只为追求极致的效率

但是这样的电脑,可能就需要成百上千万,根本不是老百姓消费得起的

而内存,没那么贵,但是却能够给我们老百姓提供一台效率相对不错的电脑,而老百姓买得起了,才会有那么多的网民,才能养活这么多的互联网公司,才有了如今的互联网时代,这也就是为什么说冯诺依曼体系结构是伟大的

最后举一个例子来演示一下冯诺依曼体系现实中的样子:

比如有两个人此时在wechat上面想聊天,那么左边的人,就需要通过键盘(输入设备)输入消息,然后消息加载到内存,通过CPU执行操作(比如说加密),最后传输给网卡(输出设备),中间网卡之间消息互传的部分,比如说tcp/ip这里就不讲了,最后消息就给到了右边的人

右边的人拿网卡(这时是输入设备)接收到了消息,然后消息加载到内存,交给CPU操作(比如说解密),最后给到右边的人的显示器(输出设备)

至此,两个人之间就能够互传消息了

操作系统是干什么的?

操作系统的作用就是:对系统中的软硬件资源进行管理

我们来举个例子(这张图并不全,这里只讲解硬件部分):

外设,是有很多种类的,还有不同的厂商,都是完全不一样的,所以我们的操作系统是不能直接对硬件进行管理的

比如说:市面上有很多游戏,现在厂商来了,说你要玩我这个游戏,你就自己去找资源,自己找地方买吧,这个时候,我们甚至可能买到盗版的,而这个过程是一个非常不好的体验

而这时来了一个steam,他把游戏全部都管理起来,就对玩家说,要玩?来我这里买,里面的付款啊,下载安装啊等等程序我都帮你处理好了,然后只给你提供对应的按钮,你点击就可以付款下载安装了

而steam这个角色在我们今天这个情景里,就是中间紫色的驱动程序

所有的驱动程序都是厂商自己写的,然后当我们硬件连接系统的时候自动安装(比如有些鼠标,我们刚接上电脑的时候没反应,过一小会听见“噔”一下,然后右下角说什么驱动程序已安装完毕)

而驱动程序都是文件,所以我们的操作系统只需要将这些文件管理好,就能将硬件管理好了

而这里我们只是以硬件为例子,而其他软件也是殊途同归

由此我们就能大概了解,为什么说OS(操作系统)是对软硬件进行资源管理的了

理解操作系统中的管理

你,是一个校长,今天你需要管理你学校里的学生

但是你并不需要直接和每一个学生都见面,你只需要得知每一个同学的数据,就能管理起来了

而你在当校长之前,你还是一个写c语言的程序员,你就想到,可以用struct创建一个学生类型,只要将学生的数据填进去即可

如果要管理起来,就在struct stu里面加上一个指向同样类型的指针,把每一个类型都连接起来,形成一个单链表

这样,我们对学生的管理就变成了对这个单链表的增删查改

比如今天我要找绩点最高的同学,好好表扬一下,那就是在这个链表中找到绩点那个数据最大的那个对应的同学,如果有个同学犯事了,要开除,那也就是把对应节点删掉而已

所以,管理的本质就是先描述,再组织

接下来我们再回到我们最开始讲的OS与硬件和驱动程序之间的关系

我们的硬件自带了驱动程序,而我们的OS就是校长,将所有的驱动程序当成对应的类,填充对应的数据,就能够用数据结构管理起来,所以对硬件本身的管理,就转变成了对特定数据结构的增删查改,也就是先描述再组织

对OS(操作系统)宏观、整体的分析

现在再来看这张图,其实就亲切很多了

OS,对下要管理好各种硬件,对上,要给用户提供各种接口,管理好各种软件

总的目的就是:为用户提供一个良好、稳定、安全、高效的系统

对下我们前文讲过了,就是通过对硬件提供的驱动程序,进行先描述再组织,从而将硬件的管理转换成对特定数据结构的增删查改,从而管理硬件

对上我们现在来讲

首先,我们用户是不能直接管理硬件的,也不能进入操作系统内部

试想一下,银行会允许用户直接走到仓库里面存钱,然后自己输入存了多少钱吗?当然不会。同样的,万一用户操作不当,把OS搞fei了,那不就完damn了嘛

所以对上,OS会提供很多的接口给用户使用,也就是上图中的(system call)系统调用接口

对应的例子可以是银行前台的各种窗口:

你把钱和信息给对应的工作人员,让他们通过这些窗口帮你处理各种业务即可

但是银行中可能还有一些老大爷老大妈,他们甚至都不认识字,所以银行中就有比如客户经理,你不会写字我帮你写,资料什么的我帮你处理好转接,这也就是最上面的用户操作接口

而在过去,我们所有人都是老大爷老大妈,因为用户操作接口中有一个叫做 lib,也就是库函数

我们之前敲代码用的stdio.h就是这里面的东西

总结

冯诺依曼体系结构是计算机中约定俗成的一种结构,其中,输入输出设备都会直接也只会和内存进行联系,而CPU也是只会和内存进行联系,因为内存可以预先加载大量数据,从而提升计算机的整体效率(因为计算机效率的主要矛盾点就是数据的复制)

到了操作系统章节,操作系统可以用结构体将所要管理的东西描述起来,可能是驱动文件,可能是后面要讲到的进程等等,接着再用对应的数据结构管理起来,将对对应对象的管理转变成对对应数据结构的管理

而操作系统通过这些管理,最终达成对下管理好各种硬件,对上能为用户提供各种调用接口并管理好各种软件,最终为用户提供一个良好、稳定、安全、高效的操作系统

结语

这篇文章到这里就结束啦!!~( ̄▽ ̄)~*

如果觉得对你有帮助的,可以多多关注一下喔

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

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

相关文章

新消息!阿里云ACP大模型认证有变化!

阿里云ACP认证是阿里云认证中的高级工程师,ACP认证方向有云计算、大数据、人工智能、大模型等多个,大家都知道,阿里云ACP考试题量共100题,其中70道单选题30道多选题,每题一分,满分100分,80分合格…

MySQL 数据迁移Postgresql(openGuass) 之 pg_chameleon

1 pg_chameleon 介绍 pgchameleon 是一款MySQL 到 PostgreSQL/openGuass 的复制工具。 pg_chameleon 使用场景: 1)分析 2)迁移 3)对多个MySQL 数据库进行数据聚合 操作系统信息 (myenv) rootu24-pg-60:~# cat /etc/issue Ubuntu …

Spark 中,map和foreach的区别

在 Spark 中,map和foreach是两种不同用途的转换操作,主要区别在于: 1. 操作类型与返回值 map:是转换操作(Transformation),返回一个新的 RDD。foreach:是行动操作(Acti…

More SQL(Focus Subqueries、Join)

目录 Subqueries Subqueries That Return One Tuple Subqueries and Self Connection The IN Operator The Exists Operator The Operator ANY The Operator ALL Union, Intersection, and Difference(交并差) Bag Semantics Controlling Dupl…

OpenGL Chan视频学习-4 Vertex Buffers and Drawing a Triangle in OpenGL

一、视频链接 【最好的OpenGL教程之一】https://www.bilibili.com/video/BV1MJ411u7Bc?p5&vd_source44b77bde056381262ee55e448b9b1973 二、相关网站 docs.gl 三、代码整理 c #include <GL/glew.h> #include <GLFW/glfw3.h>#include<iostream>int…

WSL中ubuntu通过Windows带代理访问github

WSL中ubuntu通过Windows带代理访问github 前言: WSL是Windows下的ubuntu访问工具&#xff0c;目前无法访问外网&#xff0c;因此需要配置一下。 步骤一 代理中进行如下设置: 步骤二 ubuntu22.04中修改配置 使用如下命令获取IP地址&#xff1a; ip route | grep default | aw…

为(FramePack)的视频生成添加首尾帧功能

文章目录 &#xff08;一&#xff09;前言&#xff08;二&#xff09;可选的尾帧&#xff08;三&#xff09;测试&#xff08;四&#xff09;例子 &#xff08;一&#xff09;前言 前提是这个&#xff1a;《笔记本6GB本地可跑的图生视频项目&#xff08;FramePack&#xff09;…

C语言中:递归问题的深入研究

C语言中&#xff1a;递归问题的深入研究 函数的递归有两个限制条件&#xff1a; 1.递归存在限制条件&#xff0c;当满⾜这个限制条件的时候&#xff0c;递归便不再继续。 2.每次递归调⽤之后越来越接近这个限制条件。 例子&#xff1a; #include <stdio.h> int main…

《C++20新特性全解析:模块、协程与概念(Concepts)》

引言&#xff1a;C20——现代C的里程碑 C20是继C11之后最具革命性的版本&#xff0c;它通过模块&#xff08;Modules&#xff09;、协程&#xff08;Coroutines&#xff09;和概念&#xff08;Concepts&#xff09;三大核心特性&#xff0c;彻底改变了C的代码组织方式、并发模…

xcode卡死问题,无论打开什么程序xcode总是在转菊花,重启电脑,卸载重装都不行

很可能是因为我们上次没有正常关闭Xcode&#xff0c;而Xcode保留了上次错误的一些记录&#xff0c;而这次打开Xcode依然去加载错误的记录&#xff0c;所以必须完全删除这些记录Xcode才能加载正常的项目。 那么也就是说&#xff0c;我们是不是只需要删除这部分错误记录文件就可以…

华为云Flexus+DeepSeek征文|华为云Flexus云服务器X实例上部署Dify:打造高效的开源大语言模型应用开发平台

目录 前言 1 Dify与华为云部署概述 1.1 什么是 Dify 1.2 华为云与 Flexus 云服务器的优势 2 云服务器部署 Dify 的步骤详解 2.1 模板选择 2.2 参数配置 2.3 资源栈设置 2.4 确认部署信息并执行 3 部署成功后的操作与平台使用指南 3.1 访问平台 3.2 设置管理员账号 …

物流项目第九期(MongoDB的应用之作业范围)

本项目专栏&#xff1a; 物流项目_Auc23的博客-CSDN博客 建议先看这期&#xff1a; MongoDB入门之Java的使用-CSDN博客 需求分析 在项目中&#xff0c;会有两个作业范围&#xff0c;分别是机构作业范围和快递员作业范围&#xff0c;这两个作业范围的逻辑是一致的&#xf…

网络拓扑如何跨网段访问

最近领导让研究下跟甲方合同里的&#xff0c;跨网段访问怎么实现&#xff0c;之前不都是运维网工干的活么&#xff0c;看来裁员裁到动脉上了碰到用人的时候找不到人了&#xff0c; 只能赶鸭子上架让我来搞 IP 网络中&#xff0c;不同网段之间的通信需要通过路由器&#xff0c;…

【前端】PWA

目录 概述实战vue项目问题汇总 PWA&#xff08;渐进式 Web 应用&#xff0c;Progressive Web App&#xff09; 2015提出 概述 PWA 是一种提升 Web 应用体验的技术&#xff0c;使其具备与原生应用相似的功能和性能。PWA不仅能够在网页上运行&#xff0c;还能在手机或桌面上像传…

湖北理元理律师事务所:从法律合规到心灵契合的服务升维

债务优化不仅是数字游戏&#xff0c;更是信任重建的过程。湖北理元理律师事务所在实践中发现&#xff1a;68%的债务纠纷中存在沟通断裂。为此&#xff0c;机构构建了“三维信任修复机制”。 维度一&#xff1a;信息透明的技术实现 区块链存证舱&#xff1a;客户手机实时查看律…

香橙派3B学习笔记2:Vscode远程SSH登录香橙派_权限问题连接失败解决

Vscode下载插件&#xff0c;ssh远程登录香橙派。 ssh &#xff1a; orangepi本地ip 密码 &#xff1a; orangepi 安装 Remote - SSH 扩展SSH插件&#xff1a; SSH远程连接&#xff1a; ssh usernameremote_host ssh -p port_number usernameremote_host默认22端口号就用第一行…

VMware安装Ubuntu实战分享大纲

深入解析快速排序 一、分治策略分解 分解阶段&#xff1a; 选择基准元素 $pivot$将数组划分为三个子集&#xff1a; $$ left {x | x < pivot} $$ $$ equal {x | x pivot} $$ $$ right {x | x > pivot} $$ 递归排序&#xff1a; 对 left 和 right 子集递归调用快速排…

AI 让无人机跟踪更精准——从视觉感知到智能预测

AI 让无人机跟踪更精准——从视觉感知到智能预测 无人机跟踪技术正在经历一场前所未有的变革。曾经,我们只能依靠 GPS 或简单的视觉识别来跟踪无人机,但如今,人工智能(AI)结合深度学习和高级视觉算法,正让无人机的跟踪变得更加智能化、精准化。 尤其是在自动驾驶、安防监…

GATED DELTA NETWORKS : IMPROVING MAMBA 2 WITH DELTA RULE

TL;DR 2024 年 Nvidia MIT 提出的线性Transformer 方法 Gated DeltaNet&#xff0c;融合了自适应内存控制的门控机制&#xff08;gating&#xff09;和用于精确内存修改的delta更新规则&#xff08;delta update rule&#xff09;&#xff0c;在多个基准测试中始终超越了现有…

Laravel单元测试使用示例

Date: 2025-05-28 17:35:46 author: lijianzhan 在 Laravel 框架中&#xff0c;单元测试是一种常用的测试方法&#xff0c;它是允许你测试应用程序中的最小可测试单元&#xff0c;通常是方法或函数。Laravel 提供了内置的测试工具PHPUnit&#xff0c;实践中进行单元测试是保障代…