当前位置: 首页 > news >正文

【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也是只会和内存进行联系,因为内存可以预先加载大量数据,从而提升计算机的整体效率(因为计算机效率的主要矛盾点就是数据的复制)

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

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

结语

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

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

相关文章:

  • svn: E155017: Checksum mismatch while updating 校验错误的解决方法
  • whisper相关的开源项目 (asr)
  • leetcode 17. Letter Combinations of a Phone Number
  • Ubuntu 24.04部署安装Honeyd蜜罐
  • 大学之大:浦项科技大学2025.5.25
  • 塔能科技:以多元技术赋能全行业能耗节能转型
  • STM32 输出比较输出PWM控制呼吸灯小实验(2种实现 铁头山羊与江协科技)
  • 掌阅iReader新形态墨水屏Tango发布:科技与美学共舞,开启灵动阅读新体验
  • HTTP请求全链路剖析:请求头、XHR与状态码的实战指南
  • 8.Java 8 日期时间处理:从 Date 的崩溃到 LocalDate 的优雅自救​
  • ADS学习笔记(二) 交流小信号仿真
  • 2025最新智能优化算法:野燕麦优化算法(Animated Oat Optimization Algorithm, AOO),MATLAB代码
  • HTTP协议版本的发展(HTTP/0.9、1.0、1.1、2、3)
  • 黑马点评-分布式锁Lua脚本
  • 进阶-自定义类型(结构体、位段、枚举、联合)
  • Lua基础语法
  • 在Windows平台基于VSCode准备GO的编译环境
  • Mustache 模板引擎详解_轻量、跨语言、逻辑无关的设计哲学
  • 一文讲透golang channel 的特点、原理及使用场景
  • 正则表达式:字符串模式匹配的利器
  • 网站做301打不开/绍兴seo计费管理
  • 需要企业网站建设/企业网搭建
  • 合肥高端网站建设公司/seo1搬到哪里去了
  • 云南旅游网站建设公司/襄阳百度开户
  • 怎么样注册自己的网站/长沙seo霸屏
  • 网站代运营服务/接广告推广