【linux】冯诺依曼体系+操作系统
我们使用的计算机都是由一个个硬件所组成的,那么如何有条不紊的运行呢?那是因为有冯诺依曼体系约束着硬件,而操作系统来管理着他们,从而使得计算机的硬件和软件完美结合。

一、冯诺依曼体系
首先我们得了解什么是冯诺依曼体系结构,其实笼统来说就是对硬件按一套规定的标准来执行的规则。具体我们看下面:

这里我们说的是数据流(数据信号)的理解:
存储器:存储器就是内存,内存的特性是掉电易失(只要关闭电源,内存中存储的数据就立马消失,不会保存)
外存:那么外存就是除了内存之外的,比如:磁盘等等,它的特性是永久存储性。它也叫外设(外设是相对于cpu和内存来说),外设分为输入设备(键盘等)和输出设备(显示器等),但是磁盘和网卡是既属于输入设备也属于输出设备。(我们写文件读文件,从网上读取信息和上传信息)
cpu=运算器+控制器+其他:就如上图所示。运算器包括逻辑运算和数学运算。我们可能认为cpu很聪明,但是其实它很笨!为什么?cpu只会被动的接受别人的指令、别人的数据,从而执行别人的指令,计算别人的数据。那么cpu一定要先识别出指令和数据,识别是依据cpu自己的指令集,cpu中的指令集是预先就会在磁盘中加载好,所以我们写的代码编译的本质其实就是将代码转化为二进制可执行成程序(转化为cpu中的指令集的形式),从而cpu才会识别完成,并且无脑的去执行你的指令和计算数据。
现在我们了解了冯诺依曼体系结构中的各个部分,那么他们之间是如何进行数据流的传输呢?我们来看下图:

我们知道cpu需要得到数据再去执行,但是数据是从哪里来呢?我们可以看到cpu如果从外设直接读数据,那完了!很慢很慢,若从内存中读取数据,那相比于外设,还是快多了。所以我们就会知道,cpu读取数据只会从内存中读取数据。而内存中的数据是提前从磁盘中加载到内存中的(这个内存和外设的数据交互称为IO过程),然后cpu再从内存中读取数据从而执行。那相应的cpu内执行以后的数据要更新后加载到磁盘中,也是先到内存中,再从内存中加载到磁盘中。
所得的出结论是:cpu不和外设直接打交道,只和内存打交道!
那我们上面所说的这一过程,是如何加载数据?什么时候加载?都是由操作系统来完成的,所以这才是硬件和软件的完美结合!那么操作系统又是什么呢?我们来看。
二、操作系统
操作系统是一个管理软、硬件的软件。为什么要管理呢?对下管理软硬件的资源,对上给用户提供良好的,安全的,稳定的,高效的执行环境。
1.对下
那怎么管理呢?我们来看:(举个例子)
首先管理分为做决策和做执行,管理者会更偏向决策。
我们知道,校长来管理学生是怎么样管理呢?他会把你每一个学生都记住,如何一个一个管理吗?当然不会。其实校长管理我们它只需要拿到我们的数据就行,通过管理数据来管理我们。校长拿到我们的学号、成绩信息,等等就可以连面都不见,把我们管理的很好。
所以我们可以得到:所谓管理,本质是通过数据来管理被管理者
那么校长怎么拿到数据呢?当然是通过中间的辅导员(也就是中间的执行者,执行者不仅向上提交数据信息,而且也会向下执行管理者的决策),得到数据以后,校长是如何对这些数据进行管理的呢?我们总结六个字:先描述,再组织!
对于收集的数据,校长会先考虑这些数据的共性,先对学过C语言的校长来说,他会创建一个结构体,结构体包括:
struct student {//学生名字//学生性别//学号//成绩//...struct student * next; }所以很巧妙的把学生个体建模为一个一个的结构体变量,但是如果统一管理呢?再组织,学过数据结构的校长就会通过链表的方式,一个一个把结构体变量链接起来,对链表进行增删查改的操作就可以了:
等再新增学生,只需把收集好的数据创建结构体变量以后,和之前的链表节点链接起来,若想查找,只需要按照key值遍历链表,找到想要找的学生。
所以我们继续总结:管理数据的方式:先描述,再组织!
再回到操作系统,以硬件为基础,现在我们就明白操作系统是如何管理硬件了:
操作系统管理硬件是通过管理数据,那么操作系统和硬件之间的驱动就是负责向上提交硬件的数据,并且向下执行操作系统的决策,至于怎么管理数据:先描述,再组织。操作系统会把信息先汇总成一个结构体,里面包括类型,状态等等,之后再组织,把结构体变量利用数据结构算法等联系起来,就可以实现操作系统对硬件的管理了。
我们现在已经清楚,管理软硬件其实就是管理数据!管理方式就是先描述,在组织!
2.对上
对下我们已经了解清楚了,那操作系统是如何对上提供良好的执行环境呢?
举个例子:
在银行这个体系结构中:
行长要管理银行的硬件(仓库里的钱、桌椅板凳、电脑设备等等),也要管理人(部门经理、具有业务能力的员工等等),那么行长也是通过安保、后勤等等来收集数据,然后对这些数据进行先描述,再组织的数据管理。
行长对上(即用户)也要提供良好的服务,但是银行是不信任任何人的,不会说让用户自己进仓库去存取钱等等。所以行长提供了小窗口(那种玻璃板下面掏了一个小洞),对需要服务的用户,提供服务!这样既保护了自己,也提供了服务!
那么为了让用户体验到更好的服务,比如对于年纪大的老年人,可能不是太懂办理业务,所以银行大厅就会有一个大堂经理,来专门服务,办理业务只需要把信息告诉大堂经理,之后大堂经理帮你去窗口办理。
回到操作系统的对上:

操作系统同样不信任任何人,为了保护自己和提供服务,就会提供用户能看懂的接口。比如我们经常敲得命令行,都是有对应的接口去通过操作系统和底层的硬件来交互的。
总结:
硬件部分是由冯诺依曼体系结构来控制,而软件部分就是通过操作系统来进行管理:管理方式,管理本质我们现在都已经很清楚了!下期再见!
相关文章:
【linux】冯诺依曼体系+操作系统
我们使用的计算机都是由一个个硬件所组成的,那么如何有条不紊的运行呢?那是因为有冯诺依曼体系约束着硬件,而操作系统来管理着他们,从而使得计算机的硬件和软件完美结合。 一、冯诺依曼体系 首先我们得了解什么是冯诺依曼体系结构…...
从0开始 莫比乌斯函数和反演 学习笔记
莫比乌斯 0 前言 建议先看这篇比较简略的文章(有大概了解) 莫比乌斯函数_为最后的荣光的博客-CSDN博客 再根据个人情况食用本篇博客 1 莫比乌斯函数 1 1 定义 首先对 n n n 唯一分解: 唯一分解: 唯一分解定理一篇就够了_求…...
IntersectionObserver“替代”滚动条监听
概要 IntersectionObserver 接口提供了一种异步观察目标元素与其祖先元素或顶级文档视口(viewport)交叉状态的方法。其祖先元素或视口被称为根(root)。 当一个 IntersectionObserver 对象被创建时,其被配置为监听根中…...
Maven下载安装及IDEA配置Maven的超详细教程
Maven下载安装及IDEA配置Maven的超详细教程 1、IntelliJ IDEA 下载、安装及配置过程2、maven下载、安装、配置过程2.1 mavan下载2.2 安装2.3 配置 3、在IDEA中配置Maven3.1 进入设置界面3.2 maven配置 4、IDEAmaven创建工程示例 Maven是一个能使我们的java程序开发节省时间和精…...
【JAVAEE】线程池基础知识⭐
目录 1.什么是线程池 2.为什么要使用线程池 3.怎么使用线程池 4.自定义一个线程池 5.为什么不推荐使用系统自带的线程池 5.1线程池构造方法的参数和含义 5.1.1拒绝策略 5.2线程池的工作原理 5.3为什么不适用系统自带的线程池 补充:工厂模式 1.什么是线程池…...
【源码解析】@ControllerAdvice实现异常捕获与响应增强处理的原理解析
全局异常处理 demo展示 Slf4j RestControllerAdvice public class GlobalExceptionAdvice {ExceptionHandler(RuntimeException.class)public R<Void> handleNotPermissionException(RuntimeException e, HttpServletRequest request) {String requestURI request.get…...
Visual Studio Code 插件的开发、调试及发布完整详细教程
本篇文章主要讲解:Vscode的拓展插件,从环境安装到生成项目文件再到调试及部署发布的完整开发教程。 日期:2023年5月10日 vscode 1.78.1 一、准备node环境及安装yo 项目初始化,优先安装yo、再通过yo创建code及插件项目。 基础条件 需要先安装node,且node环境已经正确安装…...
Qt音视频开发38-ffmpeg视频暂停录制的设计
一、前言 基本上各种播放器提供的录制视频接口,都是只有开始录制和结束录制两个,当然一般用的最多的也是这两个接口,但是实际使用过程中,还有一种可能需要中途暂停录制,暂停以后再次继续录制,将中间部分视频不需要录制,跳过这部分不需要的视频,而且录制的视频文件必须…...
bat脚本、dos命令
bat脚本 bat脚本就是DOS批处理脚本,就是将一系列DOS命令按照一定顺序排列而形成的集合,运行在windows命令行环境上。这个文件的每一行都是一条DOS命令 在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.…...
【星戈瑞】Sulfo-Cyanine5 mal红色荧光Cy5-maleimide
Sulfo-Cyanine5 mal是一种具有强荧光信号的染料,主要应用于生物荧光成像领域。它的化学式为C38H43KN4O9S2,分子量为803.00。这种染料具有良好的水溶性,可在水溶液中稳定存在。它的光学特性包括吸收峰位于646 nm和发射峰位于662 nm,…...
Dcip的学习1-计算器
文章目录 前言一、配置安装环境1.1 网址1.2 再次打开需要进行的操作1.3 NodeJS控制台的操作1.4 出现的页面 二、Dcip生成计算器2.1 软件的基本单位 - Unitform中添加内容 2.2 OnleftChange(); 前言 只是为方便学习,不做其他用途, 一、配置安装环境 1.1 …...
ChatGPT使用9大技巧详解
目录 技巧1:To Do and Not To Do 技巧2:增加示例 技巧3:使用引导词,引导模型输出特定内容...
随机变量X,分布函数X~F(x)的理解。
1.随机变量X 1.通常认知的"x"与随机变量X 我们通常意义上的 x 是自变量,y f(x) 中的自变量。 但是 X 更多意义是 对应法则 " f " ,X完整写法是 X(ω) ω ∈ Ω。 X这个对应法则,可以将样本点映射到实数轴上。 那么X这…...
11.构造器的查询.分块.聚合
学习要点: 1.构造器查询 2.分块.聚合 本节课我们来开始学习数据库的构造器查询以及分块和聚合查询。 一.构造器查询 1. table()方法引入相应的表,get()方法可以查询当前表的所有数据; //获取全部结果 $users DB::table(users)-&g…...
微服务保护——Sentinel
初识Sentinel 雪崩问题 微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩。 解决雪崩问题的常见方式有四种: 超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待舱壁…...
MySQL面试整理
https://houchen-study.oss-cn-hangzhou.aliyuncs.com/%E9%9D%A2%E8%AF%95/MySQL/MySQL%E9%9D%A2%E8%AF%95%E5%A4%A7%E5%85%A8%281%29.pdf 数据库基础知识 为什么要使用数据库? 什么是MySQL? 数据库的三大范式是什么? MySQL有关权限的表…...
Vscode C++环境配置
多文件编译 打开设置搜索coderunner 找到Executor Map 加入-I目录名 目录名/*.cpp 调试 点击调试以后会产生tasks.json文件,加入链接文件和库文件...
matlab小波去噪
本文将为您介绍如何利用MATLAB进行小波去噪处理,并应用于实际数据。小波去噪是一种通过对数据进行小波分解和重构的方法,有效地去除信号中的噪声,提高信号质量。该方法不仅广泛应用于信号处理、图像处理等领域,在实际生产和科研中…...
为什么要采用全网营销策略?全网营销有何优势?
现在市场上有很多全网营销公司,其实很多企业的经理人疑惑全网营销是要干什么?这些公司能干什么?这里小马识途营销顾问给大家做一个整体的解读。 全网营销,概括地说就是在整个互联网,利用各类互联网平台和工具对产品和服…...
prometheus实战之四:alertmanager的部署和配置
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是《prometheus实战》系列的第四篇,在《prometheus实战之三:告警规则》中曾经提到过,整个告警功能分为规则和…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...




