浅谈冯诺依曼体系和操作系统
🌎冯诺依曼体系结构
文章目录
冯诺依曼体系结构
认识冯诺依曼体系结构
硬件分类
各个硬件的简单认识
输入输出设备
中央处理器
存储器
关于内存
对冯诺依曼体系的理解
操作系统
操作系统概念
设计操作系统的目的
理解管理概念
管理工作
先描述,再组织
为什么要有操作系统
总结
系统调用
理解系统调用
总结
本文小结
前言:
我们常见的计算机,像笔记本,台式机等,不常见的计算机,像服务器,大部分都遵守冯诺依曼体系结构。那冯诺依曼体系结构究竟是什么呢?话不多说,开启我们今天的话题!
🚀认识冯诺依曼体系结构
✈️硬件分类
截止到目前为止,我们所认识的计算机都是由一个个硬件组件组成。
- 输入单元:包括键盘、鼠标、扫描仪等设备。
- 输出单元:显示器,打印机等。
- 中央处理单元:简称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内部的属性。
✈️总结:
- 从开发角度而言,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做——系统调用。
- 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有些开发者会对部分的系统调用进行封装,从而形成了库,有了库,就很有利于更上层的用户或开发者进行二次开发。
📒✏️本文小结
- 大部分计算机都是冯诺依曼体系结构所组成的。
- 冯诺依曼组成的各个部件都只与内存进行直接的交互.
- 操作系统是一个对软硬件进行资源管理的软件。
- 操作系统向下进行管理,方式是:先描述,再组织。向上提供安全、高效的服务。
- 为了操作系统安全,需要有系统调用作为媒介让用户与操作系统进行交互。
如果这篇文章对你有帮助的话,还望三连支持一下博主~~
相关文章:

浅谈冯诺依曼体系和操作系统
🌎冯诺依曼体系结构 文章目录 冯诺依曼体系结构 认识冯诺依曼体系结构 硬件分类 各个硬件的简单认识 输入输出设备 中央处理器 存储器 关于内存 对冯诺依曼体系的理解 操作系统 操作系统…...

Good Bye 2023
Good Bye 2023 Good Bye 2023 A. 2023 题意:序列a中所有数的乘积应为2023,现在给出序列中的n个数,找到剩下的k个数并输出,报告不可能。 思路:把所有已知的数字乘起来,判断是否整除2023,不够…...
多开工具对手机应用响应速度的优化与改进
多开工具对手机应用响应速度的优化与改进 摘要: 如今,手机应用的多样化和个性化需求不断增长,用户对应用的响应速度要求也越来越高。为了满足用户的需求,开发者们使用了多种技术手段进行应用的优化和改进。其中,多开工…...

文件批量整理,文件归类整理,文件批量归类
我们每天都要面对无数的文件,从工作报告、个人照片到电影和音乐。如何有效地管理和归类这些文件,成为了我们日常生活和工作中所要处理的。今天,小编就给大家介绍一款简单易用的工具——文件批量改名高手,助你轻松实现文件批量归类…...

Python+Django+Mysql+SimpleUI搭建后端用户管理系统(非常详细,每一步都清晰,列举了里面所有使用的方法属性)
一、在Anaconda环境下创建虚拟环境 (1)打开Anaconda Prompt(install),创建虚拟环境,如下图所示: 方法一:默认情况下虚拟环境创建在Anaconda安装目录下的envs文件夹中 conda create --name usermanage …...
【Qt-QWidget-QLabel-QFrame-QSlider-View-Bar】
Qt编程指南 ■ Label■ QLabel■ QMovie 显示动画■ Widget■ QWidget■ QTabWidget■ QTableWidget■ QListWidget■ QStackedWidget■ QCalendarWidget■ QFrame■ QFrame■ View■ QT...

11|代理(上):ReAct框架,推理与行动的协同
11|代理(上):ReAct框架,推理与行动的协同 在之前介绍的思维链(CoT)中,我向你展示了 LLMs 执行推理轨迹的能力。在给出答案之前,大模型通过中间推理步骤(尤其…...

毫秒格式化
## 计算当前毫秒数: const [start,setStart] useState(new Date().getTime())useEffect(()>{setInterval(()>{setCurrMill(new Date().getTime()-start)},1)},[]) ## 格式化毫秒 function formatMilliseconds(milliseconds) {const totalSeconds Math.flo…...
pytorch与cuda版本对应关系汇总
pytorch与cuda版本关系 cuda版本支持pytorch版本cuda10.21.5 ~ 1.12cuda11.01.7 ~ 1.7.1cuda11.11.8 ~ 1.10.1cuda11.31.8.1 ~ 1.12.1cuda11.61.12.0 ~ 1.13.1cuda11.71.13.0 ~ 2.0.1cuda11.82.0.0 ~ 2.1.1cuda12.12.1.0 ~ 2.1.1 cuda 与 cudnn关系 cuda版本支持cudnn版本cu…...

Linux系统下隧道代理HTTP
在Linux系统下配置隧道代理HTTP是一个涉及网络技术的话题,主要目的是在客户端和服务器之间建立一个安全的通信通道。下面将详细解释如何进行配置。 一、了解基本概念 在开始之前,需要了解几个关键概念:代理服务器、隧道代理和HTTP协议。代理…...

unity学习笔记----游戏练习03
一、修复植物种植的问题 1.当手上存在植物时,再次点击卡片上的植物就会在手上添加新的植物,需要修改成只有手上没有植物时才能再次获取到植物。需要修改AddPlant方法。 public bool AddPlant(PlantType plantType) { //防止手上出现多个植…...

VistualStudio查看类图UML
点击菜单栏中的工具–》获取工具和功能。 然后在资源管理器中对应的代码中鼠标右键选择查看类图 生成一个ClassDiagram.cd文件就是类图的文件了。 根据需要拖拽就可以生成类图了。...

elasticsearch系列九:异地容灾-CCR跨集群复制
概述 起初只在部分业务中采用es存储数据,在主中心搭建了个集群,随着es在我们系统中的地位越来越重要,数据也越来越多,针对它的安全性问题也越发重要,那如何对es做异地容灾呢? 今天咱们就一起看下官方提供的…...

基于Java网上点餐系统设计与实现
博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…...

公司电脑文件加密系统——防止内部核心文件数据 | 资料外泄,自动智能透明加密保护
一套从源头上保障企业电脑数据安全和电脑使用安全的加密软件。天锐绿盾加密软件包含了表格数据加密、图纸加密、文档文件加密、内网文件加密流转、密级管控、电脑离线管理、文件外发管理、灵活的审批流程、工作模式切换、服务器白名单等功能。天锐绿盾加密系统全面覆盖Mac、Win…...

计算机毕业设计------ssm茶叶溯源系统
项目介绍 茶叶溯源系统,分为前台与后台。普通用户可在前台通过18位的编码查询茶叶的出售历史。 后台分为两种角色,管理员与经销商; 管理员主要功能包括: 主界面; 管理员管理:管理员列表、添加管理员&am…...

【网络安全 | Misc】miss_01 太湖杯
解压时提示输入密码: 如果 frFlags 或 deFlags 不为0会导致zip的伪加密 将deFlags的值修改为0 将9改为0,另存为123.zip: 即可绕过加密: 得到一个zip一个docx,但zip需要密码: 因此看docx有无敏感信息&#x…...

【深度学习目标检测】十一、基于深度学习的电网绝缘子缺陷识别(python,目标检测,yolov8)
YOLOv8是一种物体检测算法,是YOLO系列算法的最新版本。 YOLO(You Only Look Once)是一种实时物体检测算法,其优势在于快速且准确的检测结果。YOLOv8在之前的版本基础上进行了一系列改进和优化,提高了检测速度和准确性。…...

《深入理解C++11:C++11新特性解析与应用》笔记六
第六章 提高性能及操作硬件的能力 6.1 常量表达式 6.1.1 运行时常量性与编译时常量性 大多数情况下,const描述的是运行时常量性,也即是运行时数据的不可更改性。但有时候我们需要的却是编译时的常量性,这是const关键字无法保证的。例如&am…...
C# 基于事件的观察者模式
观察者模式是一种软件设计模式,用于定义对象之间的一对多依赖关系,当一个对象的状态发生变化时,它的所有依赖者(观察者)都将得到通知并自动更新。这种模式通过解耦合主题和观察者来提高对象的灵活性。 定义 观察者模式…...

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...