(10)Linux冯诺依曼结构操作系统的再次理解

💭 前言:本章我们首先会明确冯诺依曼体系结构的概念,旨在帮助大家理解体系结构在硬件角度去理解数据流走向的问题。理解完之后我们再去谈操作系统、更多有关操作系统的细节,着重谈谈操作系统概念与定位、操作系统是如何去做管理的,引入 "先描述,再组织。

冯诺依曼架构(Von Neumann architecture)

 

冯诺依曼体系结构 (Von Neumann architecture) ,又称 "范纽曼型架构"。它是我们常见的计算机,如电脑、笔记本或服务器大部分都遵守的一个架构体系。

  • 输入设备: 键盘,话筒,摄像头,usb,鼠标,磁盘/ssd,网卡等等

  • 存储器: 存储器其实就是内存!

  • 中央处理器(CPU): CPU,寄存器,各级别缓存

  • 输出设备: 显示器,磁盘,扬声器,网卡等等

注意事项:

图中的存储器指的就是内存。
不考虑缓存情况,这里的 CPU 能且只能对内存进行读写,不能访问外设(输入或输出设备)
外设想要输入或输出数据,也只能写入内存或者从内存中读取。
所有设备都只能和内存打交道

 内存

??思考??:为什么冯诺依曼体系中要存在 "内存" 这样的东西?

  • memory 指内存,disk 指外设磁盘,cd 指光盘磁带 

有很多种存储,且存储的速度方面是有差别的、

站在我们刚刚展出的冯诺依曼体系结构来看,就是 "输入设备" 是最快的,"输出设备" 是最慢的。

存储器是适中的,如果我们此时不考虑内存的存在:

 

先让输入设备接收用户输入,如果用户不输入,或者输入设备在接受用户期间,

我们的 CPU 是属于闲置状态的,当 CPU 把数据拿到之后再进行计算还得写,写完后还得刷。

CPU 把数据计算完再交给输出设备,交给它时速度非常慢,可能还要给用户展示。

总体来说,就是输入设备非常快,运算器和输出是非常慢的,这里就引出了 "木桶效应" 问题。

" 木桶如求盛水多,决于短板短几何。"

CPU 把数据计算完再交给输出设备,交给它时速度非常慢,可能还要给用户展示。

总体来说,就是输入设备非常快,运算器和输出是非常慢的。

  因此,由此构建出的计算机效率是非常低下的!

所以我们就不能够只是裸地将外设和 CPU 直接粘合起来,构成所对应的计算机体系。

所以就有了冯诺依曼体系结构,在输入输出和运算, 控制器之间添加一个中间设备 —— 存储器

存储器最大的价值:输入设备在输入数据时不是把数据直接交给 CPU 的,而是把数据先从外设交给存储器,再将存储器当中的数据再被 CPU 读取,CPU 计算完后再将数据写回存储器,再由内存刷新回输出设备。因此在整个计算机体系当中,内存是属于数据层面上的核心地位。

数据角度:外设不和 CPU 直接交互,而是和内存交互。(CPU 也是如此)

内存在我们看来,就是体系结构的一个大的缓存,适配外设和 CPU 速度不均的问题的。

内存的意义:使用较低的钱的成本,能够获得较高的性能。 

" 我们自己写的软件,编译好之后,要运行,必须先加载到内存。"

 为什么?因为这是 体系结构 决定的!如果不加载到内存 CPU 没办法执行的。

所以我们自己编好的软件加载到内存,这是体系结构决定的,

当你在启动时,还没有执行程序时,你的数据其实已经预加载到内存当中了。

这就牵扯到 "局部性原理" 的概念了:局部性原理是指 CPU 访问存储器时,

无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。

比如正在执行第10行代码,你有理由推断你接下来要执行的代码一定是第10行代码附近的代码。

因为局部性原理的存在,你在访问某些数据时可以将数据的周边数据提前给你加载出来。

 这,就是操作系统预加载数据的根本理论基础。

运算器和控制器

我们先来看 运算器,运算器主要承担了运算的工作。

计算机的计算种类无非两种:① 算数计算    ② 逻辑计算

加减乘除取模这一些就算算数计算,逻辑与逻辑或逻辑反这些就是逻辑计算。

在人的计算世界中,计算其实就是算账、算数。

人会推理一些东西,这实际上就是逻辑。所以计算机的计算和人的计算,无外乎就是这两种。

总结:所有的外设在数据层面上不和 CPU 接轨,直接和内存处理。CPU 读数据直接从内存中读数据,处理完数据后的结果再刷新到内存。

对我们来说,实际上计算机为了提升整体性能,也加了许多其他的优化策略,比如寄存器和缓存,这些话题我们一言难尽,我们放到后面再去探讨。

为什么冯诺依曼系统如此流行?

其实计算机体系不止有冯诺依曼系统,还有哈佛架构和向量处理器系统
,还有流水线结构等等,为啥冯诺依曼系统被广泛使用呢? 

先给大家铺垫一下内存分级的知识:

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

在硬件层面上,CPU只能和内存交互而不能直接和磁盘外设交互!这是因为外设磁盘离CPU很远,处理速度很慢,相信大家都听说过短板效应,所以CPU为了总体的运行速度不被拉低,就不会直接和磁盘外设打交道,而是和内存打交道!

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

这就得出了这样的结论:

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

正是这种能让老百姓买得起的价格
并且使用起来比较高效的模式
才让冯诺依曼系统到现在也如此流行! 

 理解操作系统(OS)

什么是操作系统?

我们之前也讲过,

操作系统是一款软件,用来进行对软硬件资源进行管理的软件。任何一款计算机系统都包含一个基本的程序集合,我们称之为操作系统。

 操作系统包括:

  • 内核(进程管理,内存管理,文件管理,驱动管理)
  • 其他程序(例如函数库,shell 程序等)

定位:在整个计算机软硬件架构中,操作系统的定位是一款纯正的 "搞管理" 的软件。

管理的目的:① 对上:提供一个良好稳定的运行环境    ② 对下:管理好软硬件资源。

而我们今天要重点谈论的就是 "管理",什么叫做管理?如何理解?

再次理解 "管理" 

虽然我们不懂什么是管理,但是我们肯定是被管过的。 

 管理的本质:不是对管理对象进行直接管理,而是只要拿到管理对象的所有的相关数据,我们队数据的管理,就可以体现对人的管理。

"在公司中,你之前负责的模块经你手自己处理了大半年,模块的效率比之前翻了十倍一百倍,领导就知道你一定是做出成绩来了,如果你在公司里什么都没写,什么有效数据都没有产出,所有管理最终都要落实到对数据做管理。" 

这是我又有一个问题了,如果你说它连我的面就不见,他又是如何拿到我的数据的呢? 

执行者可不是只拿数据,还可以落实对应的政策。 

先描述再组织 

对管理的进一步理解:人认识世界的方式 —— 人是通过属性认识世界的。 

 一切事物都可以通过抽取对象的属性,来达到描述对象的目的。 

class OBJ {
    // 成员属性
}

继续刚才的例子,如果你自己就个是个当过程序员的校长,你想管理学校的同学,

那么就可以抽取所有同学的属性,描述对应的同学,我们知道 Linux 内核代码是由C语言写的。

那么C语言中有没有一种数据类型,能够达到描述某种对象的功能?

那就是:struct

struct student {
    学生的基本信息(身高,姓名,年级,电话...)   
    在校基本信息(专业,班级,年级)
    考试成绩(平时成绩,期末成绩)
    学校活动(...学生会, 班长?)
    其他信息
 
    struct student* next;
    struct student* prev;
};

如此一来,对学生的管理,就变成了对链表的增删查改。然后我们在有头插、尾插的各种方法。

现在如过我想找到考试成绩最好的学生,只需要遍历整个链表,找到那个学生的结点即可。

再比如,学校的挂科率太高了,要整治一下这个问题,我们就执行一个排序算法,以绩点排序。

按升序排列,找到若干名排在前面的绩点低的学生,再通过自带的信息联系到辅导员,进行管理。
管理的本质:对数据做管理 对某种数据结构的管理,管理的核心理念 ——" 先描述,再组织。"

所谓的管理,其实就是 "先描述,再组织。"

  • 描述:用 struct 结构体
  • 组织:用链表或其他高效的数据结构

操作系统对硬件的管理

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

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

 

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

 总结

本篇文章的内容大家要有一个基本的认识,然而虽然说操作系统是为用户提供服务的,但是它并不相信用户,因为群众中可能有坏人,就像银行一样,为你提供服务但是不信任你,于是在操作系统和用户之间还有系统调用窗口和shell外壳来阻止群众中的坏人直接获取Linux内核中的各种信息!

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

 

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

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

相关文章

聚观早报 |吉利银河E8将上市;三星Galaxy S24将登场

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 12月26日消息 吉利银河E8将上市 三星Galaxy S24将登场 哪吒L内饰曝光 苹果首款MR头显正量产 IEEE全球研究报告 …

使用防火墙是否可以应对DDoS攻击?

很多游戏行业公司对网络安全不够了解,觉得装个防火墙就可以万事大吉了。实际上使用防火墙确实是解决DDoS攻击问题的一种有效方法,一些更先进的防火墙还可以采用其他防御措施,例如:深度包检测、行为分析、人工智能等,来识别和防御各…

Zookeeper-一致性协议ZAB

ZAB协议介绍 ZAB 协议全称:Zookeeper Atomic Broadcast(Zookeeper 原子广播协议)。 Zookeeper 是一个为分布式应用提供高效且可靠的分布式协调服务。在解决分布式一致性方面,Zookeeper 并没有使用 Paxos ,而是采用了…

《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识(3)

接前一篇文章:《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识(2) 1.1 PCI总线的组成 如前文所述,PCI总线作为处理器系统的本地总线,是处理器系统的一个组成部件。因此,讲述PCI总线的…

​ iOS技术博客:App备案指南

📝 摘要 本文介绍了移动应用程序(App)备案的重要性和流程。备案是规范App开发和运营的必要手段,有助于保护用户权益、维护网络安全和社会秩序。为了帮助开发者更好地了解备案流程,本文提供了一份最新、最全、最详的备…

分布式训练通信NCCL之Ring-Allreduce详解

🎀个人主页: https://zhangxiaoshu.blog.csdn.net 📢欢迎大家:关注🔍点赞👍评论📝收藏⭐️,如有错误敬请指正! 💕未来很长,值得我们全力奔赴更美好的生活&…

PostgreSQL 可观测性最佳实践

简介 软件简述 PostgreSQL 是一种开源的关系型数据库管理系统 (RDBMS),它提供了许多可观测性选项,以确保数据库的稳定性和可靠性。 可观测性 可观测性(Observability)是指对数据库状态和操作进行监控和记录,以便在…

【Linux系统基础】(3)在Linux上部署运维监控Zabbix和Grafana

目录 运维监控Zabbix部署简介安装安装前准备 - Mysql安装Zabbix Server 和 Zabbix Agenta. 安装Zabbix yum库b. 安装Zabbix Server、前端、Agentc. 初始化Mysql数据库d. 为Zabbix Server配置数据库e. 配置Zabbix的PHP前端 配置zabbix 前端(WEB UI) 运维监…

HTML代码全解析

HTML代码全解析实例解析 <!DOCTYPE html> 声明为 HTML5 文档<html> 元素是 HTML 页面的根元素<head> 元素包含了文档的元&#xff08;meta&#xff09;数据&#xff0c;如 <meta charset"utf-8"> 定义网页编码格式为 utf-8。<title> 元…

计算机毕业设计 基于SpringBoot的高校宣讲会管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

hash路由和history路由的区别

当我们构建前端应用时&#xff0c;路由是一个重要的概念。它允许我们在不刷新整个页面的情况下&#xff0c;根据URL的变化来加载不同的内容。在前端开发中&#xff0c;有两种常见的路由实现方式&#xff1a;哈希路由&#xff08;Hash Routing&#xff09;和历史路由&#xff08…

技术合集|企业AI应用落地的关键问题和应对方法

目录 一、生成式AI助力数字化转型的关键 二、用大模型来做什么 三、AI应用如何落地 四、写在最后 2022年11月&#xff0c;OpenAI正式推出ChatGPT&#xff0c;短短一年的时间里&#xff0c;人类被迫重温了文字语言在人类文明中的重要作用——承载着一切的思维表达与沟通实现…

java毕业设计—vue+springboot影院售票及电影管理系统

1&#xff0c;项目背景 目的&#xff1a;本课题主要目标是设计并能够实现一个基于web网页的电影院购票选座系统&#xff0c;整个网站项目使用了B/S架构&#xff0c;基于vue和SpringBoot框架下开发&#xff1b;管理员通过后台管理系统实现管理影院信息&#xff0c;电影信息&…

Node.js-模块与包

1. 模块 1.1 模块化的基本概念 1.2 模块化规范 2.Node.js中的模块化 2.1 Node.js中的模块化分类 2.2 加载模块 2.3 Node.js中的模块作用域 2.4 向外共享模块作用域的成员 2.4.1 module对象 2.4.2 module.exports对象 2.4.3 共享成员的注意点 2.4.4 exports对象 2.5 Node.js中…

介绍一下我本地使用的截图工具 PixPin

介绍一下我本地使用的截图工具 PixPin 0. 背景1. PixPin 安装文件下载2. PixPin 安装3. PixPin 简单配置4. PixPin 使用 0. 背景 截图是工作上的经常性需求&#xff0c;一个好的截图工具会大大提高我们的工作效率。 一直以来&#xff0c;非常喜欢微信自带的截图功能&#xff…

抖店新手应该怎么玩?如何运营?

我是电商珠珠 抖店作为一个短视频电商平台&#xff0c;其兴趣电商发展模式深受大众的喜爱&#xff0c;虽然和拼多多一样&#xff0c;都是走的低价平台&#xff0c;但是在规则和玩法上&#xff0c;略胜一筹。 所以&#xff0c;很多想要做店的人都想要去入驻这个平台&#xff0…

【网络奇缘】——奈氏准则和香农定理从理论到实践一站式服务|计算机网络

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 失真 - 信号的变化 影响信号失真的因素&#xff1a; ​编辑 失真的一种现象&#xff1a;码间…

TPU-MLIR

1、AI 编译器 TPU&#xff0c;张量处理器 AI编译器&#xff0c;把不同框架下的搭建起来的模型&#xff0c;转换为统一形式的中间表达 IR&#xff0c;然后通过 IR 转换成可以在特定芯片平台上运行的二进制模型 Top&#xff0c;芯片无关层&#xff1a;图优化、量化、推理 Tpu…

Java 将PDF 转为图片 工具 【Free Spire.PDF for Java】(免费版)

Java 将PDF 转为图片 使用工具&#xff1a;Free Spire.PDF for Java&#xff08;免费版&#xff09; Jar文件获取及导入&#xff1a; 方法1&#xff1a;通过官网下载jar文件包。下载后&#xff0c;解压文件&#xff0c;并将lib文件夹下的Spire.Pdf.jar文件导入Java程序。 方…

如何进行安全管理

目录 安全管理 修改ECS实例登录密码 方式一&#xff1a;重置ECS实例密码 方式二&#xff1a;在实例内部修改登录密码 安全组 ECS实例加入安全组的规则 使用安全组 补丁管理 安全管理 如果希望保护网站安全&#xff0c;首先就要保护ECS实例安全&#xff0c;这需要对ECS实…