当前位置: 首页 > news >正文

【Linux基础】冯诺依曼体系结构操作系统的理解

目录

  • 前言
  • 一,冯诺依曼体系
    • 1. 为什么有内存结构?
    • 2. 对硬件中数据流动的再理解
  • 二,操作系统(Operator System)
    • 1. 概念
    • 2. 操作系统结构的层状划分
    • 3. 操作系统对硬件管理的理解
    • 4. 用户与操作系统的关系的理解
    • 5. 系统调用和库函数的关系
    • 6. 为什么要有操作系统?

前言

本篇文章主要介绍计算机体系结构–冯诺依曼系统和操作系统是如何对数据/资源进行管理的,这也是我们后面学linux进程的重要基础铺垫。

一,冯诺依曼体系

我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

在这里插入图片描述

截至目前,我们所认识的计算机,都是有一个个的硬件组件组成,其中:
输入设备:键盘,鼠标,摄像头,话筒,磁盘,网卡…
输出设备:显示器,声卡,磁盘,网卡…
中央处理器(CPU):运算器,控制器,寄存器,各级别缓存…
存储器:就是内存!

对于没有了解过这一部分知识的同学,很难分清楚内存和磁盘的关系与区别:

内存和磁盘是计算机中主要的存储部件内存是利用了电效应实现了存储,一旦电脑断电它存储的数据就会丢失!
然而磁盘是外设,是永久存储介质!

数据是要在计算机的体系结构中进行流动的,流动过程中,进行数据的加工处理。
数据从一个设备到另一个设备,本质:是一种拷贝!

而计算机对数据进行处理无非就是两种操作:一是在整个体结构的设备之间进行数据的拷贝,二是CPU对数据进行运算。
而CPU是非常快的,所以数据在设备间的拷贝的效率,决定了计算机整机的基本效率!

1. 为什么有内存结构?

首先我们先来铺垫一个概念:
存储器金字塔结构
在这里插入图片描述

结论: 离CPU越近的设备,运行速度越快,造价也越贵!

那有同学就会觉得,既然离CPU越近的设备,运行速度越快,那为什么又要加一个存储器(内存)呢,直接从输入设备–>CPU–>输出设备,那计算机不是非常快吗?

解答:
在这里插入图片描述

所以冯诺依曼的这种体系很巧妙,将中央处理器进行复杂的数据处理,运算,而离CPU远一点的设备用于存储数据,或者接受数据后传给内存做分析。

这就得出了这样的结论:

冯诺依曼系统既有高价格的设备,用于处理复杂的数据,又有低价格的设备用于存储数据或进行数据交互,这使得冯诺依曼体系的计算机可以在价格不高的前提下,做到效率比较高!

正是这种能让老百姓买得起的价格,并且使用起来比较高效的模式,才让电脑等计算机设备变成一种高性价比的东西,才让冯诺依曼系统到现在也如此流行!

2. 对硬件中数据流动的再理解

在硬件数据流动角度,在数据层面:

1.中央处理器不和外设直接打交道、中央处理器只和内存打交道;
2.外设(输入和输出)的数据,不是直接给中央处理器的,而是先要放入内存中。

经常听见老师说,程序在运行之前,必须先加载到内存中,这是为什么?

解答:
首先,程序=代码+数据,然而只要是数据,最终都要CPU来处理,CPU只能从内存中读取数据,所以这些代码和数据要经过和内存的交互,处理完程序后会形成可执行程序.exe文件,此文件会被存储在外设磁盘中!
所以说,程序在运行之前,必须先加载到内存中,这是冯诺依曼体系结构规定这么做!!

注意:磁盘的内容怎样被传到内存,内存又怎样和CPU交互,在交互中出现问题怎么处理,这些工作由操作系统来完成

通过实际案例来进行理解数据流动的过程(注:目前还没有学习网络,所以网络部分忽略):

案例1:QQ发消息与收到消息的过程

很明显,在QQ上发送消息时发的不仅仅是消息,还有发送时间,发消息人的头像等所以在发送消息前,从键盘输入的数据要被加载到内存经过CPU处理后推送至输出设备:网卡(计算机中和网络打交道的硬件设备),经过网络后推送到收消息的人的输入设备:网卡,将网卡数据加载到内存后被CPU处理了交给显示器显示收到的消息!
在这里插入图片描述

案例2:微信发文件与接受文件

与发消息不同,发送文件是从自己的磁盘中将文件拷贝一份后加载到内存,经过CPU处理后推送到输出设备网卡上,要接受文件的人在经过网络后在网卡上,收到此文件,最终将文件存储至自己的磁盘上。

结论:

以上案例只是想让大家更深一步了解硬件,之间的关系,并且输入输出设备不止有,键盘和显示器,还有其他的硬件也能传递信息。

二,操作系统(Operator System)

1. 概念

操作系统是一款软件,是计算机启动的第一款软件,在我们的手机/电脑开机时加载的就是操作系统。它是一款进行软硬件资源管理的软件

1. 广义的认识:操作系统的内核+操作系统的外壳周边程序(给用户提供使用操作系统的方式)。
2. 狭义的认识:只是操作系统的内核。

2. 操作系统结构的层状划分

这里主要把下图的后三个阶段讲明白:

在这里插入图片描述

那么,操作系统是怎样管理软硬件的呢?
现在给大家讲一个小故事:

在公司里有人员管理系统,而在学校里有教务系统,就是用于管理学生的系统。假如陶大的吕校长是一个程序员,最开始学校只有100人,吕校长一个人就可以管理好它们的生活起居和学习运动,但是有一天陶大扩招了,现在有5万个学生,吕校长一想这样不行,我得写一段代码让计算机帮我管理陶大的学生,写了一个结构体:

struct student
{int age;int height;int grade;string name;......
}

学生太多了又不易保存和查找
于是校长将学生以链表得方式链接在一起

struct student
{struct student* next;int age;int height;int grade;string name;......
}

在这里插入图片描述

如果李四或者赵六有一门挂科了,那么校长就打开代码编译器,找到李四和赵六将他们的状态改为挂科!

结论:
1. 校长管理学生不是真正的人,而是在管理学生对应的数据!
2. 校长对学生的管理工作,变成了对链表的增删查改!

3. 操作系统对硬件管理的理解

和校长管理学生一样,操作系统也不是直接管理硬件,而是管理硬件映射出来的信息和校长创建的结构体类似,操作系统也会对各个硬件创建一个结构体,结构体中存放硬件的各种信息和健康状态等等,再通过链表或者其他数据结构将这些结构体一一链接起来统一管理!

管理这些硬件或学生需要做到
先描述,再管理!

操作系统的管理核心有:

1.进程管理
2.内存管理
3.文件/IO管理
4.驱动管理

这里管理都要遵循一个原则,那就是:先描述,再管理!

要管理进程得先描述进程得性质,内存管理管理得是内存,首先要描述内存,C/C++得结构体正好可实现这功能。

操作系统将软件硬件管理好并不是它的目的,它得目的是给用户提供良好的(稳定,高效,安全得)使用环境,而管理只是一种手段!!

再看此图:
在这里插入图片描述

操作系统管理底层硬件并不是直接管理的,它要通过驱动程序,而驱动程序是厂商自定义的。每一个硬件都有对应的驱动程序来做管理,像键盘,鼠标,U盘等等都有对应的驱动程序,然后操作系统再通过这一整套成熟的驱动程序来管理下层的硬件!并且在此基础上衍生出各种软件业务,和用户服务!

4. 用户与操作系统的关系的理解

这里主要是涉及层状结构的前三部分:
在这里插入图片描述

然而虽然说操作系统是为用户提供服务的,但是它并不相信用户,计算机不允许用户直接访问底层硬件,而是要经过操作系统,用户要访问操作系统,必须使用系统调用的方式,使用操作系统。因为用户中可能有坏人,就像银行一样,为你提供服务但是不信任你,于是在操作系统和用户之间还有系统调用窗口和shell外壳来阻止群众中的坏人直接获取Linux内核中的各种信息!

系统调用说白了就是操作系统给用户提供了一个又一个的函数用户通过调用函数来获取操作系统内的各种数据,然而函数是操作系统内部写的,所以你只能看到有限部分的数据!

5. 系统调用和库函数的关系

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

但是呢,系统调用是有操作系统提供的,有些系统调用的接口比较复杂,也不适合用户直接操作,所以我们在系统调用之上又封装了一个软件层(各种库,比如我们常用的C/C++标准库) – 用户操作接口。就像在银行存钱取钱时,可能要带身份证/户口本等资料。但是有些老年人连这些最基础的可能都不懂,所以银行有提供了专属窗口服务老年人。

6. 为什么要有操作系统?

操作系统对下层(手段)进行软硬件管理工作,对上层提供良好(高效,稳定,安全)的运行环境(目的)。

相关文章:

【Linux基础】冯诺依曼体系结构操作系统的理解

目录 前言一,冯诺依曼体系1. 为什么有内存结构?2. 对硬件中数据流动的再理解 二,操作系统(Operator System)1. 概念2. 操作系统结构的层状划分3. 操作系统对硬件管理的理解4. 用户与操作系统的关系的理解5. 系统调用和库函数的关系6. 为什么要有操作系统…...

算法题解:斐波那契数列(C语言)

斐波那契数列 斐波那契数列是一个经典的数学序列,其中每一项的值是前两项的和。数列的前两项通常定义为0和1,即: F(0) 0 F(1) 1 F(n) F(n-1) F(n-2) (n ≥ 2)输入一个正整数n,求斐波那契数列的第n项。 样例 假设输入 n …...

SSM 框架 个人使用习惯 详细

SpringMVC主要是controller、service、dao(mapper)层交互 controller:处理数据请求的接口 service:处理请求的数据 dao(mapper):对数据进行持久化 下面我将对controller和service.impl进行讲…...

[羊城杯 2020]Blackcat1

知识点:数组加密绕过 进入页面熟悉的web三部曲(url地址,web源代码,web目录扫描) url地址没有什么东西去看看源代码. 这有一个mp3文件点一下看看. 在最后面发现了 PHP源码. if(empty($_POST[Black-Cat-Sheriff]) || em…...

腾讯云Ubuntu系统安装宝塔,配置Java环境,运行spring boot项目

致谢 本次学习宝塔部署spring boot项目,参考如下资料 https://www.cnblogs.com/daen/p/15997872.html 系统安装宝塔 直接用的腾讯云云服务器面板上的登录,你可以换成 xshell 进入宝塔官网: https://www.bt.cn/new/download.html 我们采…...

双亲委派机制知识点

类加载器 双亲委派模型 为什么采用双亲委派模型 打破双亲委派机制的场景 Tomcat 打破双亲委派机制:目的是可以加载不同版本的jar包 实现类隔离:在Tomcat中,每个Web应用使用独立的类加载器加载类文件,这样做的好处在于,当在同一T…...

vue part 11

vuex的模块化与namespace 115_尚硅谷Vue技术_vuex模块化namespace_1_哔哩哔哩_bilibili 116_尚硅谷Vue技术_vuex模块化namespace_2_哔哩哔哩_bilibili vue-router路由 很常见的很重要的应用:Ajax请求,将响应的数据替换掉原先的代码从而实现不跳转页面…...

【QT】常用类

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:QT 目录 👉🏻QMediaPlayer👉🏻QMediaPlaylistsetPlaybackMode 👉🏻QDir👉…...

从index_put出发全面学习cuda和pytorch技术

一 前言 深感目前对于cuda和pytorch所涉及知识的广度和深度,但一时又不知道该如何去学习,经过多日的考虑,还是决定管中窥豹,从一个算子出发,抽丝剥茧,慢慢学习,把学习中碰到的问题都记录下来,希望可以坚持下去。 二 函数功能描述 【torch算子】torch.index_put和tor…...

浅谈住房城乡建设部科技创新平台布局重点方向

最近住房建设部组织开展住房城乡建设部科技创新平台(以下简称部科技创新平台)申报工作。详细内容见住房城乡建设部科技创新平台开始申报了 (qq.com)。在这里有4大方向共15个课题。内容见下图: 虽然我是做技术的,但是如何体现创新还…...

调用 write()函数后,如何知道数据是否已经写入磁盘?

在 Linux 中调用 write() 函数后,可以通过以下几种方式来确定数据是否已经写入磁盘: 一、使用同步函数 1. fsync() 函数: - 这个函数会强制将与文件描述符相关的所有修改过的内核缓冲区写入磁盘,并等待直到磁盘 I/O 操作完…...

策略路由与路由策略的区别

🐣个人主页 可惜已不在 🐤这篇在这个专栏 华为_可惜已不在的博客-CSDN博客 🐥有用的话就留下一个三连吧😼 目录 一、主体不同 二、方式不同 三、规则不同 四、定义和基本概念 一、主体不同 1、路由策略:是为了改…...

从底层原理上理解ClickHouse 中的稀疏索引

稀疏索引(Sparse Indexes)是 ClickHouse 中一个重要的加速查询机制。与传统数据库使用的 B-Tree 或哈希索引不同,ClickHouse 的稀疏索引并不是为每一行数据构建索引,而是为数据存储的块或部分数据生成索引。这种索引的核心思想是通…...

xtu oj 锐角三角形

锐角三角形 题目描述 n条边,任选3条边,能组成多少个锐角三角形(选的边不同就认为是不同的三角形)? 输入 第一个是一个整数T(1≤T≤1000),表示样例的个数。 每个样例占2行,第一行是一…...

MATLAB系列04:循环结构

MATLAB系列04:循环结构 4. 循环结构4.1 while循环4.2 for循环4.2.1 运算的细节4.2.2 break语句和continue语句4.2.3 嵌套循环 4.3 逻辑数组和向量化4.3.1 逻辑数组的重要性4.3.2 用 if/else 结构和逻辑数组创建等式 4.4 总结 4. 循环结构 循环(loop)是一种 MATLAB …...

虹科方案 | 精准零部件测试!多路汽车开关按键功能检测系统

欢迎关注虹科,为您提供最新资讯! #LIN/CAN总线 #零部件测试 #CAN数据 导读 在汽车制造业中,零部件的安全性、功能性和可靠性是确保车辆整体性能的关键。虹科针对车辆零部件的LIN/CAN总线仿真测试,提出了基于虹科Baby-LIN系列产…...

【加密算法基础——AES CBC模式代码解密实践】

AES 解密实践之代码实现 AES 解密使用python脚本比较灵活,但是一定要保证脚本是调试过的,才能在找到正确的密文,密钥,初始向量的情况下,解出正确的明文。但是对于AES解密,命令行无法处理key截断的问题。 实…...

【ViT+Dis】Deepfake Detection Scheme Based on Vision Transformer and Distillation

文章目录 Deepfake Detection Scheme Based on Vision Transformer and Distillationkey points深伪检测检测算法蒸馏法与教师网络实验训练:参数总结Deepfake Detection Scheme Based on Vision Transformer and Distillation 会议:2021 作者: key points 以往基于CNN结…...

maya-vray渲染蒙版

要用一个叫vrayMulWrapper的材质球,把alpha Conterbution调到-1,勾选matte surface启用蒙版物体。...

计网简简单单复习一下

文章目录 基础体系结构(分层模型)为什么要分层?OSI 七层模型?每一层的作用?TCP/IP 四层模型是什么?每一层的作用是什么?五层体系结构以及对应的协议每一层常见协议有哪些?从输入 URL 到页面展示到底发生了什么?URI和URL的区别;forward和redirect的区别DNS作用是什么?D…...

接口测试中缓存处理策略

在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...