浅谈冯诺依曼体系和操作系统

🌎冯诺依曼体系结构


文章目录

冯诺依曼体系结构

    认识冯诺依曼体系结构
      硬件分类
      各个硬件的简单认识
        输入输出设备
        中央处理器
        存储器

    关于内存

    对冯诺依曼体系的理解

    操作系统

    操作系统概念

      设计操作系统的目的
      理解管理概念
      管理工作
      先描述,再组织
      为什么要有操作系统
      总结

    系统调用

      理解系统调用
      总结

    本文小结


前言:

  我们常见的计算机,像笔记本,台式机等,不常见的计算机,像服务器,大部分都遵守冯诺依曼体系结构。那冯诺依曼体系结构究竟是什么呢?话不多说,开启我们今天的话题!

在这里插入图片描述


🚀认识冯诺依曼体系结构

在这里插入图片描述

✈️硬件分类

  截止到目前为止,我们所认识的计算机都是由一个个硬件组件组成。

  • 输入单元:包括键盘、鼠标、扫描仪等设备。
  • 输出单元:显示器,打印机等。
  • 中央处理单元:简称CPU。
    |
    |______ 运算器:对数据进行计算任务
    |
    |______ 控制器:对计算机硬件流程进行一定的控制

关于冯诺依曼,必须 强调 的几点:

  •  不考虑缓存的情况下,这里的CPU只能对内存进行读写,不能访问外设。
  •  外设要输入输出数据,也只能从内存写入和读取数据。
  •  也就是说,所有设备只能直接和内存打交道

注意: 它们都是独立的个体, 各个部分必须用 总线 连接起来,总线分为 系统总线 和 IO总线。


✈️各个硬件的简单认识
🚩 输入输出设备

  输入输出设备是指能够把数据输入到计算机或者把计算机处理的数据输出给用户的设备。可以说,它是计算机与外界沟通的桥梁,没有输入输出设备,计算机就没办法接收发送数据,更不能和用户进行交互。

🚩 中央处理器

  中央处理器全称Central Processing Unit,简称CPU,它由 负责执行算数逻辑运算运算器(ALU)负责控制计算机运行,协调其他部件工作控制器(CU) 组成。CPU是计算机中最重要的硬件之一,它的性能决定了计算机整体性能。

🚩 存储器

  存储器是 指内存,而不是磁盘,具有 “掉电易失” 的特性,如果突然停电导致计算机不能正常工作,那么加载到内存中的数据就很容易丢失了。而我们所谓的 磁盘,其实 也属于输入输出设备的一种


🚀关于内存


  不知道你有没有想过,我们直接让CPU与输入输出设备进行交互就好了啊,为什么还需要内存这个 “中间商” 呢?

在这里插入图片描述
  其实,在我们计算机当中,存在着一种存储金字塔模型:

在这里插入图片描述
  我们可以发现:

  • 距离CPU越近的存储单元,效率越高,造价贵,单体容量小
  • 距离CPU越远的存储单元,效率越低,造价便宜,单体容量大

  输入与输出这些是设备,距离CPU有一定距离,而相 对CPU来说,这些设备的速度就显得非常慢 了,而有一个原理叫做 木桶效应

在这里插入图片描述
  一个团队的好坏,取决于最差的那个人,而计算机也是如此,整个计算机就像一个团队一样,而这些外设对于CPU来说非常的慢,所以这些外设 必定会拖慢CPU的速度

  于是人类就在计算机外设与CPU之间,加上了 内存 ,让外设直接访问到内存,CPU也只需要从内存中拿数据即可。

在这里插入图片描述
  但是这似乎看起来更加拖慢速度了?原本我CPU只需要与外设打交道,现在还多了个 “中间商” 在那赚差价,不就变得更慢了吗?

  其实,在我们内存中,存在着两个机制:预先加载缓存 技术:

  • 预先加载:指在用户调度之前,预先将数据加载到内存或缓存 中,这样可以减少用户的等待时间。
  • 缓存:将 数据存储在临时存储器 中,以便于快速访问。

  这就好比,在工作当中有一个急性子和一个慢性子的人合作,而事情往往会向着慢性子的方向发展,但是如果在来一个性子适中的人,既可以催促慢性子人工作,等到慢性子的人汇聚一定工作结果,适中性子的人再将结果反馈给急性子的人,而其他闲的时候也可以和急性子的人一起干其他事情。

  而我们存储金字塔越往塔尖就存储设备就越贵,如果我们把内存全部换为更加高效的寄存器,效率确实很高,但是我们 普通用户消费不起 啊,而最 适中且大众能够接受 的选择就是 内存

  我们再看冯诺依曼体系结构:

在这里插入图片描述

  我们只看数据流动的信号,我们来思考一个问题:为什么我们前面说程序在运行的时候,为什么要先把程序加载到内存?

  我们要先知道,程序文件是存储在磁盘当中 的,而程序中的指令和数据,是要被CPU拿来执行的,磁盘属于外设,那么根据上图,外设就 必须要先经过内存,才能被CPU读取。

  结论因为冯诺依曼体系是这样规定的,所以运行程序要先加载到内存


🚀对冯诺依曼体系的理解


  对冯诺依曼体系的理解不能只停留在概念上,要深入到软件数据流理解上,我们拿在QQ与别人聊天为例子:

  阿熊与远在异地的女朋友联系,一个在安徽,一个在北京,并且两人都在用电脑聊天,这时,阿熊给女朋友发了一句:“在吗?”
  我的问题是:当阿熊输入 在吗 这个字符串,整个数据的信息流动是怎样的?

  首先,两人都是用电脑在联系,那么两台电脑就是两台冯诺依曼机,而发送端输入的内容经过冯诺依曼处理,由网卡经网络所送到对端,对端再由网卡接收,进行解包等操作,最后到输出设备。

在这里插入图片描述

  这个时候,阿熊的女朋友刚学完C语言,直接给阿熊发了一个关机程序,阿熊女朋友将程序拖入聊天框内,点击发送。
  我的问题是,这个时候的数据传输又是怎样的?

  其实只需要把上图的接收端和发送端调换一下位置,程序要传输,需要先被加载到内存中,在由输出设备经网卡传输,接收端也是由网卡接收到输入设备,加载到内存进行解包等操作,最后到了阿熊的输出设备。

  结论数据在流动的时候必须从外设到达内存,完全遵循冯诺依曼体系结构。


🚀操作系统


  什么是操作系统,对我们来说,这是一个很模糊的观念,今天我们就来简单认识一下操作系统。

  我们先来了解一下计算机层状结构图:

在这里插入图片描述

✈️操作系统概念

  任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:

  • 内核(进程管理,内存管理,文件管理,驱动管理)
  • 其他程序(例如函数库,Shell程序等)

也可以这样理解:操作系统是一个 软硬件 资源 管理 软件

✈️设计操作系统的目的
  • 与硬件进行交互,管理所有的软硬件资源。
  • 为用户程序(应用程序)提供一个良好的执行环境。

  在整个操作系统软硬件架构中,操作系统的 定位 是:一款纯正的 “搞管理” 的软件。

✈️理解管理概念

那么什么叫做 管理

 世界上无非就三种人,一种是 做决策的人,一种是 做执行的人,还有一种是 既做决策,也做执行 的人。而我们的管理者其实就是做决策的人,而被管理者就是做执行的人。

  那么对于我们操作系统来说,操作系统就是管理者底层硬件部分就是被管理者

在这里插入图片描述

✈️管理工作

  我们拿校园生活举例:

  在大学期间,校长就是管理者,辅导员是保证管理决策的落地,而学生就是被管理者。在大学开学之前,校长没见到你的面,但是却知道你是我们学校的,于是将录取通知书发给你。

  明明校长没有和你见过面,但是却能将录取通知书发给你,说明管理者不需要对执行者见面。

结论管理者的本质,不在于对人做管理,而在于对人的信息做管理,管理者的核心工作是做决策,根据数据来做决策。

在这里插入图片描述

  这里有个疑问:为什么没有见过面,但是校长却知道我?

  其实是因为辅导员保证了校长所做决策的落地,辅导员在你还没上大学的时候,就已经将你的信息从高中档案里拿到了。而校长只需要从辅导员那里获取信息即可。

✈️先描述,再组织

  但是,当数据量很大的时候,我们的校长该如何管理呢?假如我们的校长曾经是个教C语言的老师,校长C语言很好,于是,校长写了一个 结构体 来对每个学生的信息进行管理:

struct Student{char name[20];//姓名char sex[5];//性别int age;//年龄char tele[20];//电话//...
};

  每个学生的信息我们用结构体对象来存储,但是如何让很多学生的数据关联起来呢?这时校长想到了在学习数据结构时学过的——链表,使用 链表将学生信息进行关联 起来:

struct Student{char name[20];//姓名char sex[5];//性别int age;//年龄char tele[20];//电话//...
};
struct Student *next; //链式结构关联起数据

  有了链式结构之后,校长就对着整个链表在那里翻看,校长一想,这不对啊,这样的话还用链表存储干嘛呢?直接读不就完了?
  然后校长想到,写一批 对链表的增删改查 的代码,这样,当学校需要一个会C++的同学参加比赛,那么校长直接遍历这个链表,找到C++考的最好的同学去参加即可。

  这样以来,校长所有的决策工作,就变为了对链表的增删查改!

在这里插入图片描述

  其实这也就是对管理的一个 计算机建模 的过程,这个过程用六个字来总结就是:先描述再组织

如何理解六个字?

  就拿上面的结构体举例,校长想要管理学生,需要知道这个学生的脾气吗?需要知道这个学生的爱好吗?不需要,校长只需要知道学生的属性信息即可,也就是将学生的属性信息进行具象化描述,再将这些属性组织起来,就是Student结构体,再以链表的形式进行管理。
  所以,校长对学生的管理工作 转化为了 对链表的增删查改!

  那么将学生、辅导员、校长映射到操作系统中就是:

在这里插入图片描述

✈️为什么要有操作系统

  现在再来看这个问题,其实就是在问:为什么要有操作系统的管理

  • 对下管理好软硬件资源 ——手段
  • 对上提供一个良好的运行环境 ——目的

  操作系统通过对下硬件的管理,对上给用户提供 安全、稳定、高效、功能丰富的执行环境,让用户有一个好的体验,这就是操作系统存在的意义。

✈️总结
  •  管理者和被管理者不需要见面。
  •  管理的本质是 对被管理者的数据做管理
  •  管理的方法是:先描述,再组织

🚀系统调用

✈️理解系统调用

  我们前面所介绍的是从操作系统到硬件的过程,下面我们来谈谈从操作系统往上的部分:

在这里插入图片描述
  在操作系统往上的部分,是面向用户的,但是为什么在用户和操作系统之间却存在一个叫做 系统调用 的东西?

  这时候举一个例子来帮大家理解:

  大家在去银行取钱的时候,你去到跟前台说:“我要取100万”,难道这个时候前台就会乖乖的给你去金库里拿钱了?天知道你是不是真的有100万,而且就算有你该怎么证明?

在这里插入图片描述

  银行不能保证钱是你的钱,不能保证你是好人还是坏人,而我们前面也说了,这里的银行就是操作系统,而我们前面也说了,操作系统的目的是为了给用户 提供安全 高效的服务。这明显很不安全。

  这就好比银行直接让来的用户自己去金库里取钱,是一件很危险的事情,操作系统也是如此。也就是说,操作系统直接交给用户来操作是一件很危险的事情,于是在用户和操作系统之间出现了——系统调用

  系统调用就像是银行的柜台,如果你是来抢劫银行的,那柜台那头的小姐姐会毫不犹豫的按下报警按钮,防止金钱丢失。而系统调用正是如此。

在这里插入图片描述

  操作系统不知道你是好人坏人,干脆把大家都当为坏人,你只能通过我给你的接口来进行访问,内核数据结构的属性用户不能直接更改,需要通过系统调用接口来间接更改。

  其实将其抽象化,可以把操作系统看为一个巨大的类,而类中public部分是给用户展示的,用户可以直接操作,而private部分用户不可直接操作,可以调用接口来间接修改private内部的属性。

✈️总结:
  • 从开发角度而言,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做——系统调用。
  • 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有些开发者会对部分的系统调用进行封装,从而形成了库,有了库,就很有利于更上层的用户或开发者进行二次开发。

📒✏️本文小结

  •  大部分计算机都是冯诺依曼体系结构所组成的。
  •  冯诺依曼组成的各个部件都只与内存进行直接的交互.
  •  操作系统是一个对软硬件进行资源管理的软件。
  •  操作系统向下进行管理,方式是:先描述,再组织。向上提供安全、高效的服务。
  •  为了操作系统安全,需要有系统调用作为媒介让用户与操作系统进行交互。

在这里插入图片描述
  如果这篇文章对你有帮助的话,还望三连支持一下博主~~

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

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

相关文章

linux中用户账号和权限管理

一.Linux 用户分三类 1.普通用户 权限受限制的用户 2. 超级管理员 拥有至高无上权限 3. 程序用户 不是给人使用的,给程序用 运行程序不能使用超级管理员,从安全考虑 超级管理员 uid 为0 普通用户 1000~60000 &#xff0…

Python实现的面部健康特征识别系统

Python实现的面部健康特征识别系统 引言1. 数据集获取与准备2. 模型训练3. Flask框架的应用4. 前台识别测试界面 结论与展望 引言 本文将介绍一个基于Python的面部健康特征判别系统,该系统利用互联网获取的公开数据集,分为健康、亚健康和不健康三个类别…

传统船检已经过时?AR智慧船检来助力!!

想象一下,在茫茫大海中,一艘巨型货轮正缓缓驶过。船上的工程师戴着一副先进的AR眼镜,他们不再需要反复翻阅厚重的手册,一切所需信息都实时显示在眼前。这不是科幻电影的场景,而是智慧船检技术带来的现实变革。那么问题…

零基础打靶—BC1靶场

一、打靶的主要五大步骤 1.确定目标:在所有的靶场中,确定目标就是使用nmap进行ip扫描,确定ip即为目标,其他实战中确定目标的方式包括nmap进行扫描,但不局限于这个nmap。 2.常见的信息收集:比如平常挖洞使用…

【损失函数】SmoothL1Loss 平滑L1损失函数

1、介绍 torch.nn.SmoothL1Loss 是 PyTorch 中的一个损失函数,通常用于回归问题。它是 L1 损失和 L2 损失的结合,旨在减少对异常值的敏感性。 loss_function nn.SmoothL1Loss(reductionmean, beta1.0) 2、参数 size_average (已弃用): 以前用于确定是…

LabVIEW在大型风电机组状态监测系统开发中的应用

LabVIEW在大型风电机组状态监测系统开发中的应用 风电作为一种清洁能源,近年来在全球范围内得到了广泛研究和开发。特别是大型风力发电机组,由于其常常位于边远地区如近海、戈壁、草原等,面临着恶劣自然环境和复杂设备运维挑战。为了提高风电…

Everything 搜索

正则表达式Regex 首先需要开启 Everything 工具在(字符串)查找时,对正则表达式功能的支持: 需要在【菜单栏】⇒ 【Search】⇒ 勾选【Enable Regex】 查看Everything 支持的语法:

Java安装详细教程

文章目录 一、JDK 下载 和 安装1.1 选择 Java版本1.2 下载 JDK 二、 配置环境变量2.1 配置环境变量的原因2.2 配置环境变量2.3 验证配置是否成功 参考资料 一、JDK 下载 和 安装 1.1 选择 Java版本 访问 Oracle 官方网站的 Java 下载页面Java Archive | Oracle。 在 “Java …

MAC 中多显示器的设置(Parallels Desktop)

目录 一、硬件列表: 二、线路连接: 三、软件设置: 1. 设置显示器排列位置及显示参数 2. 分别设置外接显示器为:扩展显示器,内建显示器为主显示器 3. 设置Parallels Desktop屏幕参数 四、结果 一、硬件列表&a…

005、数据类型

1. 关于数据类型 Rust中,每个值都有其特定的数据类型,Rust会根据数据的类型来决定如何处理它们。 Rust是一门静态类型语言,它在编译程序的过程中就需要知道所有变量的具体类型。在大部分情况下,编译器可以根据我们如何绑定、使用变…

【Redis-10】Redis集群的实现原理和实践

Redis集群是Redis提供的分布式数据库方案,通过分片来进行数据共享,实现复制和故障转移的功能。 1. Redis集群节点 一个Redis集群由多个节点组成,多个节点可以通过命令实现连接,由独立状态转为集群状态,命令是cluster …

《Python机器学习原理与算法实现》学习笔记

以下为《Python机器学习原理与算法实现》(杨维忠 张甜 著 2023年2月新书 清华大学出版社)的学习笔记。 根据输入数据是否具有“响应变量”信息,机器学习被分为“监督式学习”和“非监督式学习”。 “监督式学习”即输入数据中即有X变量&…

WPF 消息日志打印帮助类:HandyControl+NLog+彩色控制台打印+全局异常捕捉

文章目录 前言相关文章Nlog配置HandyControl配置简单使用显示效果文本内容 全局异常捕捉异常代码运行结果 前言 我将简单的HandyControl的消息打印系统和Nlog搭配使用,简化我们的代码书写 相关文章 .NET 控制台NLog 使用 WPF-UI HandyControl 控件简单实战 C#更改…

10TB海量JSON数据从OSS迁移至MaxCompute

前提条件 开通MaxCompute。 在DataWorks上完成创建业务流程,本例使用DataWorks简单模式。详情请参见创建业务流程。 将JSON文件重命名为后缀为.txt的文件,并上传至OSS。本文中OSS Bucket地域为华东2(上海)。示例文件如下。 {&qu…

Unity坦克大战开发全流程——结束场景——通关界面

结束场景——通关界面 就照着这样来拼 写代码 hideme不要忘了 修改上一节课中的代码

[2024区块链开发入门指引] - 比特币运行原理

一份为小白用户准备的免费区块链基础教程 工欲善其事,必先利其器 Web3开发中,各种工具、教程、社区、语言框架.。。。 种类繁多,是否有一个包罗万象的工具专注与Web3开发和相关资讯能毕其功于一役? 参见另一篇博文👉 2024最全面…

数据结构:第7章:查找(复习)

目录 顺序查找: 折半查找: 二叉排序树: 4. (程序题) 平衡二叉树: 顺序查找: ASL 折半查找: 这里 j 表示 二叉查找树的第 j 层 二叉排序树: 二叉排序树(Binary Search Tree&…

FTP的基本介绍

FTP ftp的介绍: ftp是一个可以提供共享文件的服务器,他可以通过iis.msc也就是windows 的服务器管理器来打开,或者通过cmd命令行打开 如何使用iis.msc打开ftp,如何使用cmd打开ftp ,如何匿名登录ftp,ftp和…

音频修复和增强软件:iZotope RX 10 (Win/Mac)中文汉化版

iZotope RX 是一款专业的音频修复和增强软件,一直是电影和电视节目中使用的行业标准音频修复工具,iZotope能够帮助用户对音频进行制作、后期合成处理、混音以及对损坏的音频进行修复,再解锁更多功能之后还能够对电影、游戏、电视之中的音频进…

Centos7:Jenkins+gitlab+node项目启动(3)

Centos7:Jenkinsgitlabnode项目启动(1) Centos7:Jenkinsgitlabnode项目启动(1)-CSDN博客 Centos7:Jenkinsgitlabnode项目启动(2) Centos7:Jenkinsgitlabnode项目启动(2)-CSDN博客 Centos7:Jenkinsgitlabnode项目启…