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

🌎冯诺依曼体系结构


文章目录

冯诺依曼体系结构

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

    关于内存

    对冯诺依曼体系的理解

    操作系统

    操作系统概念

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

    系统调用

      理解系统调用
      总结

    本文小结


前言:

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

在这里插入图片描述


🚀认识冯诺依曼体系结构

在这里插入图片描述

✈️硬件分类

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

  • 输入单元:包括键盘、鼠标、扫描仪等设备。
  • 输出单元:显示器,打印机等。
  • 中央处理单元:简称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内部的属性。

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

📒✏️本文小结

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关键字:try-catch关键字

在 Java 中,try-catch关键字用于异常处理。它们允许编写代码来捕获和处理异常,以确保程序能够在出现问题时合理地处理它们而不会崩溃。 以下是try-catch关键字的基本语法: 在try块中编写可能会抛出异常的代码。如果在try块中的任何代码抛出…

2024年【安全员-B证】考试报名及安全员-B证新版试题

题库来源:安全生产模拟考试一点通公众号小程序 安全员-B证考试报名考前必练!安全生产模拟考试一点通每个月更新安全员-B证新版试题题目及答案!多做几遍,其实通过安全员-B证考试试题很简单。 1、【多选题】《中华人民共和国消防法…

单字符检测模型charnet使用方法,极简

Git链接 安装按照上面的说明,说下使用。 把tools下面的test做了一点修改,可以读取一张图片,把里面的单个字符都检测和识别出来。 然后绘制到屏幕上。 import torch from charnet.modeling.model import CharNet import cv2, os import num…

搭建maven私服

maven maven简介 什么是maven? Maven这个单词来自于意第绪语(犹太语),意为知识的积累。 Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。 Maven 除了以…

20231228在Firefly的AIO-3399J开发板的Android11使用Firefly的DTS配置单前后摄像头ov13850

20231228在Firefly的AIO-3399J开发板的Android11使用Firefly的DTS配置单前后摄像头ov13850 2023/12/28 19:20 缘起,突然发现只能打开前置的ov13850,或者后置的ov13850。 但是不能切换! 【SDK:rk3399-android-11-r20211216.tar.xz】…

[Angular] 笔记 25:指令

组件指令 (chatgpt 回答) 在 Angular 中,组件本身可以被视为指令,这种指令被称为组件指令。组件是 Angular 应用的构建块之一,它封装了一段具有特定功能和特性的用户界面,并且可以在应用中重复使用。 组件指令具有以下特征&…

docker小白第十天

redis集群主从容错切换案例 3主3从的redis集群,某个主机宕机了,需要对应的从机补位。 docker exec -it redis-node-1 /bin/bash # 进入容器1的命令行 redis-cli -p 6381 # 进入节点1的命令行 cluster nodes # 查看集群信息可以看到1号和6号对应是主从关…

【PXIE301-208】基于PXIE总线架构的Serial RapidIO总线通讯协议仿真卡

板卡概述 PXIE301-208是一款基于3U PXIE总线架构的Serial RapidIO总线通讯协议仿真卡。该板卡采用Xilinx的高性能Kintex系列FPGA作为主处理器,实现各个接口之间的数据互联、处理以及实时信号处理。板卡支持4路SFP光纤接口,支持一个PCIe x8主机接口&…

Pearson correlation coefficient (Pearson’s r) 皮尔森相关系数

此图用的是箱状图,的纵轴是“Pearson’s r”,是实际观测值与机器学习模型预测值之间的相关性 Pearsons f得分,它是一个统计量,用来衡量两个变量之间线性相关性的强度。这个得分可能是用来衡量实际观测值与机器学习模型预测值之间的…

App Inventor 2 接入短信服务,实现短信验证码功能

发送短信验证码功能一般都是基于短信平台提供的sdk进行调用,这里是基于阿里云短信平台进行的开发,阿里云短信平台接入步骤请点此参考。 App Inventor 2拓展提供的函数如下: 主要提供2个函数,生成随机位数的数字随机码 和 发送短信…

ctfshow 新手必刷菜狗杯 谜之栅栏题解记录

知识点:图片比较 拿到之后,有两个图片,直观看不出什么,尝试用工具比较。 用010editor打开其中一个,010editor的工具里面就有比较文件选项,比较两个文件,发现有一处不同。题目说栅栏&#xff0c…

《QDebug 2023年12月》

一、Qt Widgets 问题交流 1. 二、Qt Quick 问题交流 1.Q_REVISION 标记的信号槽或者 REVISION 标记的属性,在子类中访问 Q_REVISION 是 Qt 用来做版本控制的一个宏。以 QQuickWindow 为例,继承后去访问 REVISION 标记的 opacity 属性或者 Q_REVISION…

keil5修改默认配色方案

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1. 找到Keil_5\UV4路径下的两个文件2. 修改global.prop文件中的内容第一种 配色方案第二种 配色方案第三种 配色方案第四种 配色方案 最后 前言 提示&#xff…

GPT3.5 改用 GPT4 价格翻了30倍 如何破局? GPT 对话成本推演

场景介绍 假设你搭建了一个平台,提供 ChatGPT 3.5 的聊天服务。目前已经有一批用户的使用数据,想要测算一下如果更换 GPT 4.0 服务需要多少成本? 方案阐述 如果是全切,最简单粗暴的方案就是根据提供 ChatGPT 3.5 消费的金额乘…

【FileZilla】FileZilla的使用及主动模式与被动模式----图文并茂详细讲解

目录 一 FileZilla的简介 1.1 是什么 1.2 应用场景 二 FileZilla的安装及准备工作 2.1 下载安装 2.2 主机连接VMware 三 FileZilla使用 3.1 内部连接文件管理 3.1.1 添加组 3.1.2 添加用户 3.1.3 添加用户密码 3.1.4 添加用户权限 3.1.5 连接测试 3.2 外部连接文…

Solidworks学习笔记

本内容为solidworks的学习笔记,根据自己的理解进行记录,部分可能不正确,请自行判断。 学习视频参考:【SolidWorks2018视频教程 SW2018中文版软件基础教学知识 SolidWorks自学教程软件操作教程 sw视频教程 零基础教程 视频教程】 h…

游戏软件缺少d3dcompiler.dll文件的多种修复方法分享

在操作系统中,d3dcompiler.dll是一个非常重要的组件,主要负责DirectX图形技术的编译和解析。许多用户在安装或使用某些软件时,提示“缺少d3dcompiler.dll”。这个错误通常出现在游戏或应用程序运行时,它会导致程序无法正常启动或运…

【linux】tail的基本使用

在linux可以用find查找一个文件,可以用grep查找符合要求的文件内容,但是有的时候希望查看文件的前几行或者后几行(其实这种场景经常可以遇到,比如接触到日志分析的时候),那就应该使用head和tail这两个工具了…

CentOS 7 实战指南:目录操作命令详解

写在前面 想要在 CentOS 7 系统下更高效地进行目录操作吗?不要犹豫,在这里我为你准备了一篇精彩的技术文章!这篇文章将带您深入了解 CentOS 7 下目录操作相关命令的使用方法。无论您是新手还是有一定经验的用户,这篇文章都将为您…

认识计算机网络——计算机网络的组成

计算机网络是由多个计算机和网络设备组成的系统,通过通信协议实现数据传输和信息交换。它是现代社会信息技术的重要支撑,广泛应用于各个领域。本文将介绍计算机网络的主要组成部分,包括硬件设备、软件协议和网络服务。 一、硬件设备 计算机网…