【Linux】冯诺依曼体系结构和操作系统概念

news2024/9/30 15:20:45

文章目录

  • 🎪 冯诺依曼体系结构
    • 🚀1.体系概述
    • 🚀2.CPU和内存的数据交换
    • 🚀3.体系结构中数据的流动
  • 🎪 操作系统概念理解
    • 🚀1.简述
    • 🚀2.设计目的
    • 🚀3.定位
    • 🚀4.理解
    • 🚀5.管理的本质
    • 🚀6.系统调用


🎪 冯诺依曼体系结构

数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。
在这里插入图片描述

🚀1.体系概述

现代计算机发展所遵循的基本结构形式始终是冯·诺依曼机结构。这种结构特点是“程序存储,共享数据,顺序执行”,需要 CPU 从存储器取出指令和数据进行相应的计算。
在这里插入图片描述

  • 输入设备:包含键盘,话筒,摄像头,网卡,磁盘(I)

  • 存储器:包含内存(寄存器、高速缓冲存储器以及主存储器,操作系统关机数据不复存在)和外存(硬盘,软盘,CD,磁带,操作系统关机数据也可保存)

  • CPU:包含运算器(数据流计算交换)和控制器(接收指令和发出控制指令)

  • 输出设备:包含显示器,磁盘,网卡,声卡声响

比如我们上qq聊天,我们需要把聊天内容通过键盘输入给计算机(通过键盘这种输入设备),然后消息发出,显示到对方屏幕上(这时对方显示器就是输出设备)

而且它们的运行速度也有很大差异,在市面上可以几百块钱可以买到512G或者1T的硬盘,而内存只能买到8G或者12G的,显然同等存储空间下内存比硬盘要贵很多,那么同等地,它的速度也会比硬盘或者外设快很多。

而越昂贵,它的速度也就越块,运行速度:CPU >> 内存 >> 外设

🚀2.CPU和内存的数据交换

既然前面说了CPU速度是最快的,那么为什么还要存在内存呢,直接把CPU连到外设是不是会大大提升效率?
在这里插入图片描述
答案是否定的,举个例子来说,CPU工作的速度是纳秒级,而内存是微秒级,最后外设是毫秒级,如果CPU直接跟外设打交道,那么将是纳秒跟微秒的对比,CPU造价最贵,自然速度也就最快,那么它的时间将是很昂贵的,一个外设输入就会占用很多CPU的时间,这就跟木桶原理是一样的
在这里插入图片描述

木桶所能盛放的最大水量取决于最短的那块木板,而不是最长的那块,所以CPU如果直接跟外设打交道,那么计算机的运行速度完全取决于外设的速度,而CPU那么快的速度显然是浪费掉了,这时便引入了内存。

内存的访问速度比外设快,但是又比CPU慢,CPU可以直接从内存中拿到数据,放进CPU计算的同时,DMA可以把外设的东西调到内存,下次CPU就可以直接从内存中拿取数据。

这就是为什么我们打开一个程序的时候,需要先把数据加载到内存中,然后再交给CPU运行,因为这是体系结构决定的

结论:在数据层面,CPU一般不和外设沟通,而是只和内存打交道

🚀3.体系结构中数据的流动

我们下面模拟一下qq消息在两台主机中的传递:
在这里插入图片描述
数据先由张三的键盘输入"晚安",然后该消息被刷新到我们自己的显示器上,然后点击发送,这期间由DMA将数据调入内存,内存中数据在调入CPU进行加密,然后将加密后的数据返回给网卡,网卡在通过网络进行输出给另一台主机,另一台主机的网卡(此时网卡为输入设备)接收到数据,将数据给CPU进行解密,最后显示到对方李四的显示器上。

结论:在数据层面上,外设一般不直接和CPU打交道,而是和内存打交道

🎪 操作系统概念理解

在计算机中,操作系统是其最基本也是最为重要的基础性系统软件。从计算机用户的角度来说,计算机操作系统体现为其提供的各项服务;从程序员的角度来说,其主要是指用户登录的界面或者接口;如果从设计人员的角度来说,就是指各式各样模块和单元之间的联系。事实上,全新操作系统的设计和改良的关键工作就是对体系结构的设计,经过几十年以来的发展,计算机操作系统已经由一开始的简单控制循环体发展成为较为复杂的分布式操作系统,再加上计算机用户需求的愈发多样化,计算机操作系统已经成为既复杂而又庞大的计算机软件系统之一
在这里插入图片描述

🚀1.简述

操作系统(OS)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等

操作系统包含:

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

🚀2.设计目的

  • 与硬件交互,管理所有的软硬件资源
  • 为用户程序(应用程序)提供一个良好的执行环境

🚀3.定位

  • 一款进行软硬件资源管理的软件

🚀4.理解

我们应该如何理解操作系统对硬件做管理呢?比如在IT公司中,有boss,还很多个团队,每个团队有队长和队员,我们可以拿boss - 队长 - 队员来解释。

在每个IT公司中,boss会做决策,比如开发某款产品,然后他会把任务下发给对应的团队,团队队长便会根据这个来组织队员进行软件的开发:

在以上的描述中:

  • boss:决策(管理者)
  • 队长:决策被执行
  • 队员:参与执行(被管理者)

在这里插入图片描述

在上述例子中我们看到,boss是不需要跟队员直接沟通达到执行决策的目的的,也就是:1.管理者和被管理者是不需要直接沟通的

那既然管理者和别管理者不需要直接沟通,那怎么做到管理的呢?我们想像一下,如果IT公司的员工订了一份外卖,此时外卖小哥把外卖送到了员工的办公桌上,那么他进入了公司大楼,但他是公司的员工吗?显然不是,要被定义为公司员工,得在公司电脑上能查到该员工的信息才行,不是进入公司大楼的就是该公司员工。同样的,假如说一个员工被炒鱿鱼了,他人离开公司就行了吗?显然不是,该公司需要删除这个员工的信息才行。所以说管理的本质是:2.对被管理对象的数据做管理

那么boss怎么拿到员工数据呢?这就需要每个团队的队长反馈队员数据给boss,boss才能拿到员工数据。也就是3.管理者通过一种媒介(这里是队长)拿到被管理者数据

所以说我们操作系统也是如此:
在这里插入图片描述
操作系统通过硬件驱动实现对硬件进行管理。

🚀5.管理的本质

正如我们上文所说,队长把队员数据交给boss,那么boss怎么看呢,一个大的IT公司至少有几百上千人,boss如果想查找业绩最低的人员开除,那岂不是得找很久?于是boss就想了一个办法:把所有队员的数据用一个类描述出来,比如叫Programmer,这个类里面有成员姓名(name),年龄(age),业绩(achievement)等基本信息,这就叫数据的描述然后每个人员的信息我们便可以清楚的看到:

在这里插入图片描述
如果我们要查找人员信息呢,我们得用一种数据结构来组织每个人员的基本信息
比如boss想用二叉树来组织:
在这里插入图片描述
此时我们只需要遍历这棵二叉树即可实现对员工信息的查找,操作系统也是,比如进程管理,操作系统会用PCB来描述进程的结构,又比如内存管理,操作系统会用页表来管理内存

总之,管理就是先描述,在组织,这句话会贯穿我们Linux的整个学习过程

🚀6.系统调用

操作系统的作用是对下提供管理好软硬件资源,、对上给用户提供良好(安全,高效,稳定,功能丰富)的良好环境,“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。会使处理器从用户态进入核心态

我们所熟知的系统调用有:

  • GUI(图形化界面)
  • shell和命令行
  • C函数(stdio.h)
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AOP面向切面编程思想。

目录 一、AOP工作流程 1、基本概念 2、AOP工作流程 二、AOP核心配置 1、AOP切入点表达式 2、AOP通知类型 三、AOP通知获取数据 1、获取参数 2、获取返回值 3、获取异常 四、AOP事务管理 1、Spring事务简介 2、Spring事务角色 3、事务属性 一、AOP工作流程 1、…

Linux内核启动(理论,0.11版本)分段与分页

为什么要虚拟内存 我们知道,在之前上微机原理时,我们的程序是可以直接访问内存的,而且访问的是直接的物理内存,在实模式下,寄存器是16位的,数组总线(data bus)是16位的,…

设计模式-值类型与引用类型、深拷贝与浅拷贝、原型模式详解

一. 值类型和引用类型 1. 前言 (1). 分类 值类型包括:布尔类型、浮点类型(float、double、decimal、byte)、字符类型(char)、整型(int、long、short等)、枚举(entum)、结构体(struct)。 引用类型:数组、字符串(string)、类、接口…

DamiCMS SQL注入分析

2023年将会持续于B站、CSDN等各大平台更新,可加入粉丝群与博主交流:838681355,为了老板大G共同努力。 一、入口文件(单入口文件模式) 看一下Index.php文件代码:引入了php_safe.php文件 查看一下php_safe.php防御文件: 对变量e…

2019_41 考研408

2019年(单链表)41.(13分)设线性表采用带头结点的单链表保存,链表中的结点定义如下:typedef struct node {int data;struct node* next;}NODE;请设计一个空间复杂度为O(1)且时间上尽可能高效的算法,重新排列L中的各结点,得到线性表L(q,a,,a,an…

【正则表达式】获取html代码文本内所有<script>标签内容

文章目录一. 背景二. 思路与过程1. 正则表达式中需要限定<script>开头与结尾2. 增加标签格式的限定3. 不限制<script>首尾的内部内容4. 中间的内容不能出现闭合的情况三. 结果与代码四. 正则辅助工具一. 背景 之前要对学生提交的html代码进行检查&#xff0c;在获…

牛客小白月赛66

牛客小白月赛66_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com)冒着期末挂科的风险打了打&#xff0c;缓解了一下网瘾&#xff0c;感觉还行最近为了期末鸽了很多期的div3&#xff0c;一学期末就手痒想训&#xff0c;感觉再不打人要没了&#xff0c;结果…

linux性能优化-内存回收

linux文件页、脏页、匿名页 缓存和缓冲区&#xff0c;就属于可回收内存。它们在内存管理中&#xff0c;通常被叫做文件页&#xff08;File-backed Page&#xff09;。通过内存映射获取的文件映射页&#xff0c;也是一种常见的文件页。它也可以被释放掉&#xff0c;下次再访问的…

DOM编程-显示网页时钟

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>显示网页时钟</title> </head> <body bgcolor"antiquewhite"> <script type"text/javascrip…

剑指offer(中等)

目录 二维数组中的查找 重建二叉树 矩阵中的路径 剪绳子 剪绳子② 数值的整数次方 表示数值的字符串 树的子结构 栈的压入、弹出序列 从上到下打印二叉树① 从上到下打印二叉树③ 二叉搜索树的后序遍历序列 二叉树中和为某一值的路径 复杂链表的复制 二叉搜索树与…

C++复习笔记8

泛型编程&#xff1a;编写的是与类型无关的通用代码&#xff0c;是代码复用的一种手段&#xff0c;模板是泛型编程的基础。 1.函数模板&#xff1a;类型参数化&#xff0c;增加代码复用性。例如对于swap函数&#xff0c;不同类型之间进行交换都需要进行重载&#xff0c;但是函数…

K_A12_003 基于STM32等单片机采集光敏二极管模块参数 串口与OLED0.96双显示

K_A12_003 基于STM32等单片机采集光敏二极管模块参数 串口与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明IIC地址/采集通道选择/时序对应程序:四、部分代码说明1、接线引脚定义1.1、STC89C52RC光敏二极管模块1.2、STM32F103C8T6光敏二极管模块五、基础知识…

面向 3DoF+的虚拟视图合成算法研究(陈 莹)

面向 3DoF的虚拟视图合成算法研究&#xff08;陈 莹&#xff09;论文贡献多视点联合的虚拟视图合成算法视图合成中多视点伪影消除算法面向虚拟视图合成算法的 3DoF系统基于深度的虚拟视图合成算法视点映射&#xff08;3D-Warping&#xff09;三维空间映射变换&#xff08;3D-Wa…

TYPE-C 手机/电脑同时充电直播 视频采集卡方案

Type-C音视频采集卡有什么作用&#xff1f; ​能够帮助专业用户和游戏玩家迅速搭建简单、高性价比的音视频解决方案。可将新闻联播、体育竞赛、视频教学课程、网络视频等&#xff0c;通过HDMI高清视频信号分段或整体录制在本地计算机共享使用。支持多种带HDMI接口的游戏机设备…

生物素-琥珀酰亚胺酯Biotin-NHS;CAS号:35013-72-0;可对溶液中的抗体,蛋白质和任何其他含伯胺的大分子进行简单有效的生物素标记。

结构式&#xff1a; ​ 生物素-琥珀酰亚胺酯Biotin NHS CAS号&#xff1a;35013-72-0 英文名称&#xff1a;Biotin-NHS 中文名称&#xff1a;D-生物素 N-羟基琥珀酰亚胺酯&#xff1b;生物素&#xff0d;琥珀酰亚胺酯 CAS号&#xff1a;35013-72-0 密度&#xff1a;1.50.1 …

vue项目第二天

项目中使用element-ui库中文网https://element.eleme.cn/#/zh-CN安装命令npm install element-ui安装按需加载babel插件npm install babel-plugin-component -Dnpm i //可以通过npm i 的指令让配置刷新重新配置一下项目中使用element-ui组件抽离文件中按需使用element ui &…

sqoop 数据同步方案理解+问题解决

sqoop数据同步——问题与解决方案 1、sqoop导出oracle数据&#xff0c;数据源无法选择表空间&#xff0c;只能指定默认表空间的表。 方案&#xff1a;不指定数据源的表名&#xff0c;而是使用–query&#xff0c;利用sql语句把数据带出来。 例&#xff1a;--query "SELE…

【游戏逆向】内存构造发包结构体实现协议发送简单代码

捕捉到游戏的封包以后 我们可以对其进行发送来实现功能 基本有两种方式 第一种直接调用明文发包函数 第二种构造明文封包以后&#xff0c;再调用加密算法&#xff0c;然后通过send等发包函数对其进行发送 如果能够把加密算法分析透彻的话&#xff0c;第二种方式是最好的 …

element Ui树状图控件 spring boot Vue 实现角色授权功能

目录 前言&#xff1a; 二. element ui 2.1官网提供的核心代码 三.表结构 ​编辑 四.后端 4.1功能分析 4.2实体类 4.3 查询全部权限显示的结果 4.2修改角色权限的后台方法 五.vue 5.0代码总览 5.1树形图 5.2所需要的绑定数据 5.3所需方法 前言&#xff1a; 先上图…

微搭低代码从入门到精通04-创建自定义应用

微搭中的应用分为两类&#xff0c;模型应用和自定义应用。上一篇我们介绍了模型应用的创建方法&#xff0c;本篇我们介绍一下自定义应用的创建方法。 登录微搭的控制台&#xff0c;在左侧的菜单里点击应用&#xff0c;点击新建应用&#xff0c;选择新建自定义应用 输入应用的名…