浅谈冯诺依曼体系和操作系统
🌎冯诺依曼体系结构
文章目录
冯诺依曼体系结构
认识冯诺依曼体系结构
硬件分类
各个硬件的简单认识
输入输出设备
中央处理器
存储器
关于内存
对冯诺依曼体系的理解
操作系统
操作系统概念
设计操作系统的目的
理解管理概念
管理工作
先描述,再组织
为什么要有操作系统
总结
系统调用
理解系统调用
总结
本文小结
前言:
我们常见的计算机,像笔记本,台式机等,不常见的计算机,像服务器,大部分都遵守冯诺依曼体系结构。那冯诺依曼体系结构究竟是什么呢?话不多说,开启我们今天的话题!
🚀认识冯诺依曼体系结构
✈️硬件分类
截止到目前为止,我们所认识的计算机都是由一个个硬件组件组成。
- 输入单元:包括键盘、鼠标、扫描仪等设备。
- 输出单元:显示器,打印机等。
- 中央处理单元:简称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# 基于事件的观察者模式
观察者模式是一种软件设计模式,用于定义对象之间的一对多依赖关系,当一个对象的状态发生变化时,它的所有依赖者(观察者)都将得到通知并自动更新。这种模式通过解耦合主题和观察者来提高对象的灵活性。 定义 观察者模式…...
ARM CCA机密计算软件架构之软件堆栈概述
Arm CCA平台通过硬件添加和固件组件的混合方式实现,例如在处理元素(PEs)中的RME以及特定的固件组件,特别是监视器和领域管理监视器。本节介绍Arm CCA平台的软件堆栈。 软件堆栈概述 领域VM的执行旨在与Normal world(正常世界)隔离,领域VM由Normal world Host(正常世界…...
《Python机器学习原理与算法实现》学习笔记
以下为《Python机器学习原理与算法实现》(杨维忠 张甜 著 2023年2月新书 清华大学出版社)的学习笔记。 根据输入数据是否具有“响应变量”信息,机器学习被分为“监督式学习”和“非监督式学习”。 “监督式学习”即输入数据中即有X变量&…...
k8s集群通过helm部署skywalking
1、安装helm 下载脚本安装 ~# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 ~# chmod 700 get_helm.sh ~# ./get_helm.sh或者下载包进行安装 ~# wget https://get.helm.sh/helm-canary-linux-amd64.tar.gz ~# mv helm …...
介绍一款PDF在线工具
PDF是我们日常工作中的一种常见格式,其处理也是我们工作的重要基础性环节,一款可靠的处理工具显得十分重要。 完全免费、易于使用、丰富的PDF处理工具,包括:合并、拆分、压缩、转换、旋转和解锁PDF文件,以及给PDF文件…...
docker学习——汇总版
历时一个月将docker系统的学习了一下,并且记录了详细的笔记和实践过程。 希望能对工作需要的小伙伴们有所帮助~ docker基础篇 docker学习(一、docker与VM对比) docker学习(二、安装docker) docker学习(…...
百度沧海文件存储CFS推出新一代Namespace架构
随着移动互联网、物联网、AI 计算等技术和市场的迅速发展,数据规模指数级膨胀,对于分布式文件系统作为大规模数据场景的存储底座提出了更高的要求。已有分布式文件系统解决方案存在着短板,只能适应有限的场景: >> 新型分布式…...
16-网络安全框架及模型-BiBa完整性模型
目录 BiBa完整性模型 1 背景概述 2 模型原理 3 主要特性 4 优势和局限性 5 应用场景 BiBa完整性模型 1 背景概述 Biba完整性模型是用于保护数据完整性的模型,它的主要目标是确保数据的准确性和一致性,防止未授权的修改和破坏。在这个模型中&#…...
ssm基于冲突动态监测算法的健身房预约系统的设计与实现论文
摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装健身房预约系统软件来发挥其高效地信息处理的作用ÿ…...
基于 Element UI 适用于 Vue 2 版本的虚拟列表选择器组件el-select
背景:在某些使用情况下,单个选择器可能最终加载数万行数据。 将这么多的数据渲染至 DOM 中可能会给浏览器带来负担,从而造成性能问题。 ——vue3element-plus有现成的轮子。而vue2element-ui没有。 以下 文章大部分 摘自 源组件中的README.md…...
java常见面试题:请解释一下Java中的常用分布式框架,如Spring Boot、Dubbo等。
下面我将详细介绍Java中的两个常用分布式框架:Spring Boot和Dubbo。 1. Spring Boot Spring Boot是一个用于创建独立、可运行的、生产级别的Spring应用程序的框架。它简化了Spring应用程序的创建和部署,使得开发人员能够专注于编写业务逻辑,…...
静态网站怎么做百度推广/企业网络营销顾问
我希望我的Spring批处理应用程序一次从数据库中读取50条记录,然后将这50条记录发送到处理器,然后再发送给编写器.有人可以告诉我如何做到这一点.我尝试使用JdbcPagingItemReader并将pageSize设置为50,该值可读取50条记录,但是rowMapper,处理器和writer一次只能接收一条记录,而不…...
西安做北郊做网站/大数据分析
BZOJ3919&&DTOJ2308 Portals题目题目描述英文题目中文翻译输入格式输出格式样例样例输入样例输出数据范围与提示样例解释数据范围题解题目 题目描述 英文题目 There is a cake placed in a labyrinth and you desperately want to eat it. You have a map of the la…...
大型网站制作流程/搜索网页内容
接着上篇《编写高效Excel VBA代码的最佳实践(一)》 尽可能少使用“.”,使用对象变量 在前面已经介绍过的对长对象引用使用对象变量以及使用With…End With等都是简化”.”的方法。因为在代码中的每个句点都表示至少一个(而且可能是多个)过程调用,而这些过…...
东莞保安公司投诉电话/seo标签怎么优化
之前因为懒,没有针对otter做更多的解释和说明,在使用过程中,也发现了一些问题,此次补上一个完整的文档,方便大家使用。 Otter是基于cannal开源的,canal又是基于mysql binlog的产品。我们就从binlog说起 bin…...
网站被k换域名 老域名能不能跳转/手机网站制作软件
具体分析见算法导论第十五章,代码如下: #include<iostream> using namespace std; //p为矩阵链,p[0],p[1]代表第一个矩阵,p[1],p[2]代表第二个矩阵,length为p的长度 //所以如果有六个矩阵,length7&a…...
南京市建设厅网站/宁波seo快速排名
Reachability是苹果官方给的检查网络状态的库,想必每个基于网络的应用都会用它来检查网络状态吧,当然笔者也不例外.可是正当自信满满的我,用这个库用的不亦乐乎的时候,突然发现我写的基于网络的程序工作的不是那么流畅了,尤其是仔细检查以后确定是因为用了Reachabil…...