【Linux进程篇1】认识冯·诺依曼体系结构(引出进程详解)
---------------------------------------------------------------------------------------------------------------------------------
每日鸡汤:
用这生命中的每一秒,给自己一个不后悔的未来。
---------------------------------------------------------------------------------------------------------------------------------
目录
一:认识冯诺依曼系统
二:冯诺依曼结构——硬件层
2.1:认识冯诺依曼体系硬件设备
2.2:关于内存
2.2.1:内存
2.2.2:为什么要给计算机引入内存
2.2.3:两个内存问题
2.3:两个实例深入理解冯诺依曼结构
2.3.1:实例一:QQ聊天数据流
2.3.2:实例二:实验报告发送流
三:冯诺依曼结构——软件层(操作系统)
3.1:OS是什么?
3.2:OS为什么进行管理?
3.3:OS是怎么管理的?
3.3.1:OS的六字真言
3.3.2:描述被管理对象
3.3.3:组织被管理对象
3.3.4:总结
一:认识冯诺依曼系统
冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器 和 数据存储器合并在一起的存储器结构。 程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔 公司的8086 中央处理器 的程序指令和数据都是16位宽。
我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。
冯诺依曼体系结构:
二:冯诺依曼结构——硬件层
2.1:认识冯诺依曼体系硬件设备
截至目前,我们所认识的计算机,都是有一个个的硬件组件组成:
外部设备(外设):
- 输入设备:包括键盘, 鼠标,扫描仪, 写板等
- 输出设备:显示器,磁盘,打印机等
内部设备(内设):
- 存储器:内存。
- 中央处理器(CPU):含有运算器和控制器等。
关于中央处理器(CPU):
运算器:对我们的数据进行计算任务(算术运算(1+1=2),逻辑运算(1/0))
控制器:对我们的计算过程(计算硬件流程)进入一定的控制。
即;这五大部分都是独立的个体!各个硬件单元必须使用“线”连接起来,进行数据的交互。
2.2:关于内存
2.2.1:内存
内存 (Memory)是计算机的重要部件,也称内存储器和 主存储器,它用于暂时存放CPU中的运算数据,以及与硬盘等 外部存储器 交换的数据。 它是 外存 与 CPU 进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。
在冯诺依曼体系中的存储器指的是内存
先看计算机中存储分级:
其中,L0,L1,L2,L3全部集成到CPU中,主存L4就是内存,L5和L6称为硬盘。
即存储是分级的!并且从上到下:价格越低,容量越大,速度越慢,离CPU越来越远。
2.2.2:为什么要给计算机引入内存
引入内存(RAM,随机存取存储器)是计算机设计中的一个关键决策,它在计算机系统中扮演着至关重要的角色。
那么为什么要给计算机引入内存呢?首先我们要知道外设运行数据的速度是毫秒级别,而CPU数据的运行速度是纳秒级别。【1ms = 1000000ns】,若没有内存设备,外设直接将数据给入的CPU,根据木桶原理,这个数据运行速度的大差别导致整个计算机的运行速度大大降低到外设级别的速度。即计算机的运行速度取决于外设输入数据的速度。所以,引入内存(速度级别是微秒),调整各个部分的速度差,提高计算机的运行速度。还有一点是,可以使用更少的钱买到不错的计算机。这就会使得计算机被大众所购买。
即引入内存的原因总结有以下几点:
- 提高数据访问速度
- 临时存储空间
- 支持多任务处理
- 虚拟内存的支持
- 数据一致性
- 支持复杂计算
提高数据访问速度
- 快速读写。内存是一种高速存储设备,其读写速度远高于硬盘或固态硬盘。通过将频繁使用的数据和程序代码加载到内存中,可以显著提高计算机的处理速度。
- 减少等待时间。CPU可以直接从内存中读取数据,而不需要频繁地访问较慢的外部存储设备,从而减少了数据访问的等待时间。
临时存储空间
- 工作区。内存为操作系统、应用程序和正在运行的任务提供了一个临时的工作区。这些任务可以在内存中快速执行和交换数据。
- 缓存功能。内存可以作为缓存,存储最近使用过的数据和指令,以便快速访问。这有助于提高系统的整体性能。
支持多任务处理
- 并发执行。现代操作系统允许多个任务同时运行。内存提供了足够的空间来存储多个进程的数据和状态,使它们能够并发执行而不互相干扰。
- 上下文切换。当操作系统在不同任务之间切换时,内存中的数据可以迅速恢复,确保任务之间的平滑过渡。
虚拟内存的支持
- 扩展内存。虚拟内存技术允许操作系统将一部分硬盘空间用作内存的扩展。虽然硬盘的速度较慢,但虚拟内存可以在物理内存不足时提供额外的空间,从而提高系统的稳定性和灵活性。
- 内存管理。通过内存管理和虚拟内存技术,操作系统可以更有效地分配和管理内存资源,优化系统的性能和响应时间。
数据一致性
- 实时更新。内存中的数据可以被实时更新,确保所有正在运行的任务都能访问到最新的数据。这对于需要频繁更新和共享数据的应用尤为重要。
- 减少磁盘I/O。通过将常用数据保存在内存中,可以减少对磁盘的读写操作,延长磁盘寿命并减少I/O瓶颈。
支持复杂计算
- 大数据处理。内存可以容纳大量的中间结果和临时数据,支持复杂的计算任务,如科学计算、数据分析和机器学习等。
- 高性能计算。对于高性能计算应用,内存的容量和速度直接影响计算效率。充足的内存可以支持大规模并行计算和高吞吐量的数据处理。
总结:内存是计算机系统中不可或缺的一部分,它通过提供快速的数据访问、临时存储空间、支持多任务处理、虚拟内存支持、数据一致性和复杂计算等功能,极大地提高了计算机的整体性能和用户体验。没有内存,计算机的运行效率将会大大降低,无法满足现代计算的需求。
2.2.3:两个内存问题
一个程序要运行,必须要先加载到内存中运行,为什么?
答:因为有冯诺依曼系统规定!
为什么当时写的进度条,默认显示的数据是可能会缓存起来的,在哪里缓存?
答:是在存储器(内存)中缓存的。
即:代码也是数据,是数据就必须要在CPU中运行,CPU无法从外设中拿取数据,CPU只能从内存中拿取数据。
2.3:两个实例深入理解冯诺依曼结构
2.3.1:实例一:QQ聊天数据流
当开启电脑时,就将操作系统加载到了内存中了。所以当打开QQ软件时,同样也将QQ软件加载到了内存中了。
2.3.2:实例二:实验报告发送流
具体步骤:实验报告发送给我的朋友整个过程(实验报告从我的磁盘拷贝到对方的磁盘)
实验报告=文档=文件,将其推拽发送给朋友。数据从磁盘中读取,到内存。CPU从内存中拿取实验报告数据进行解密加密等一系列操作,完成后将其加载到内存,之后内存再加载到输出设备(网卡,显示器等),通过网络,到朋友的输入设备(网卡),将其再加载到内存中,CPU从内存中拿取经过解密等操作完成后再加载到内存中,再加载到输出设备(显示屏,磁盘等)中。
总结:所有设备都只能和内存打交道!!!
三:冯诺依曼结构——软件层(操作系统)
3.1:OS是什么?
操作系统是一款进行管理(硬件和软件)的软件!!!
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS),笼统的讲,操作系统包括:
- 内核(进程管理,内存管理,文件管理,驱动管理)
- 其他程序(例如函数库,shell程序等等)
3.2:OS为什么进行管理?
先说结论:
- 操作系统帮助用户,管理好下面的软硬件资源。
- 为了给用户提供一个良好(稳定、高效、安全)的运行环境。。
即:操作系统通过管理好底层的软硬件资源(手段),为用户提供一个良好的执行环境(目的)
OS硬件部分:
操作系统通过其内部的驱动程序来管理下部的底层硬件,因为硬件肯定会有众多的属性,所以可以通过一份结构体来描述这些硬件,注定了操作系统肯定有大量的数据结构。即操作系统和硬件直接打交道。
OS软件部分:
操作系统是一款软件,在操作系统里面,里面会有各种数据,可是操作系统并不相信任何用户!!!所以操作系统为了保证自己的数据安全,也为了保证给用户能够提供服务,操作系统以 接口 的方式给用户提供调用的入口,来获取操作系统内部的数据【类似于银行柜台,只留下一个小小的窗口与用户沟通交互】。
所以所谓的接口:是操作系统提供的用C语言实现的,自己内部的函数调用——系统调用。
系统调用:所有访问操作系统的行为,都只能通过系统调用【System call】来完成。与用户进行交互。
用户操作接口(shell外壳,lib库,部分指令):简称“王婆”,在它们上面进行的编程称为系统编程。即程序员通过用户操作接口来对操作系统进行操作。
例如:当我们输入一个printf打印函数时,通过l找到用户操作接口的【lib函数库】,然后命令到系统调用接口,再往下操作系统,操作系统通过执行显示器驱动程序,显示器驱动程序再调用底层的显示器硬件,将信息打印到显示器上,供给用户看到。
3.3:OS是怎么管理的?
3.3.1:OS的六字真言
面向对象最最最最重要的真言:先描述,在组织!
3.3.2:描述被管理对象
举个形象的例子:“大学就是在管理体系下的一套系统”
在学校学生就是最典型的被管理者,而最典型的管理者就是校长。所以,学生和校长并不是经常见面的。即特点一:管理者和被管理者是不需要见面的!但是校长是如何管理好学生的呢?是通过导员向校长传递关于学生的一系列信息,校长通过这些信息来进行发布相关的管理政策。即特点二:管理者在不见被管理者的情况下,只要能得到管理信息,就可以在未来进行管理决策【管理的本质:通过对数据的管理达到对人的管理】。而辅导员的情况,大部分是没有决策权的,不算管理者。只是传达管理者的决策,即执行者角色。此时得出事情可分为两种:1.决策;2.执行。即特点三:管理者和被管理者不见面的情况下,是通过执行者拿到对应的信息的。
即当前:校长就相当于计算机中的操作系统(OS),辅导员相当于计算机中的驱动程序,学生相当于计算机中的软硬件资源。
一个计算机故障实例:当计算机中的网卡出现问题时,驱动程序将故障信息传递给操作系统,若操作系统能修复则自动修复,若修复不了的,就往上报给用户,提醒用户出现故障(网卡)。
因为软硬件资源的数据量实在是太大了,所以要管理它们,就必须对它们进行描述。例如大学来描述学生:
学生学院 | 专业 | 班级 | 学号 | 姓名 | 性别 | ... |
XXX | XXXX | XXXXX | XXXXX | XX | XX | X |
... | ... | ... | ... | ... | ... | ... |
会将学生描述成为这样一个excl表格形式。
但是只要是事物或者物体,就能通过一系列属性将其表示出来。描述一个学生:
struct Student
{char 学生学院[];char 专业[];char 班级[];char 学号[];char 姓名[];char 性别[];// ...struct Student* next;
}
这就是描述的过程。
3.3.3:组织被管理对象
组织,就是将一个一个的对象组织起来。通过管理好这个组织起来的大家伙(链表、二叉树...)来管理好内部的一个个对象。
例如,将一个学生定义出来:
struct student stu1 = {};
struct student stu2 = {};
//...
通过一个个学生结构体,将众多学生通过链表形式连接起来,这样就可以将这个学生链表结构管理好就可以了。
成功的将 对学生的管理工作 转换成为了 对链表的增删改查等工作。
而在计算机中,所有的设备文件都可以将其描述出来。之后就通过对设备的管理转换成为了对数据结构的管理。
这就是组织的过程。
3.3.4:总结
计算机的世界都是围绕“先描述,后组织”这六子真言展开的。
因为这“六子真言”,在操作系统中,管理任何对象,最终都可以转化成为对某种数据结构的增删改查。这就是建模的过程!
所以:计算机管理硬件或者软件:
- 描述起来,使用 struct 结构体。
- 组织起来,使用链表或者其他高效的数据结构。
相关文章:
【Linux进程篇1】认识冯·诺依曼体系结构(引出进程详解)
--------------------------------------------------------------------------------------------------------------------------------- 每日鸡汤: 用这生命中的每一秒,给自己一个不后悔的未来。 -----------------------------------------------…...
使用iviewui组件库的坑
背景 使用view-design组件库的Input组件的时候,按照产品的要求,输入框中只能键入正整数。 使用效果 如果直接使用组件的type属性,设置类型为number时,乍一看没啥问题,但是当我们键入 小数点(.) 或者 e/E 后面没有跟任…...
高级sql使用技巧
窗口函数(Window Functions): 窗口函数可以在结果集的行之间进行计算,例如计算移动平均值、排名等。在使用时,可以使用 OVER() 语句来定义窗口。例如: sql SELECT employee_id,salary,AVG(salary) OVER (P…...
403 Request Entity Too Lager(请求体太大啦)
昨天收到 QA 的生产报障,说是测试环境的附件上传功能报了 403 的错误,错误信息:403 Request Entity Too Lager。我尝试复现问题,发现传个几兆的文件都费劲啊,一传一个失败。不用说,项目用到 ng 代理&#x…...
Flutter 正在切换成 Monorepo 和支持 workspaces
其实关于 Monorepo 和 workspaces 相关内容在之前《Dart 3.5 发布,全新 Dart Roadmap Update》 和 《Flutter 之 ftcon24usa 大会,创始人分享 Flutter 十年发展史》 就有简单提到过,而目前来说刚好看到 flaux 这个新进展,所以就再…...
小白初入Android_studio所遇到的坑以及怎么解决
1. 安装Android_studio 参考:Android Studio 安装配置教程 - Windows(详细版)-CSDN博客 Android Studio超级详细讲解下载、安装配置教程(建议收藏)_androidstudio-CSDN博客 想下旧版本的android_studio的地址(仅供参考…...
NetCore使用Aop和内存缓存对接口、方法进行数据缓存
通过Aop内存缓存对接口、方法进行缓存 源码地址https://gitee.com/wangbenchi66/nuget 1. nuget包引入 必须引入包 至少在2024.11.7以上 <PackageReference Include"WBC66.Cache.Core" Version"2024.11.7" />必须开启内存缓存 否则后续步骤无法正…...
playwright学习记录2--定位方式
快捷导航 定位方式:元素操作断言方式自动等待 定位方式: csspage.get_by_role() 通过显式和隐式可访问性属性进行定位。page.get_by_text() 按文本内容定位。page.get_by_label() 通过关联标签的文本定位表单控件。page.get_by_placeholder() 通过占位符…...
响应式网页设计--html
一,HTML 文档的基本结构 一个典型的 HTML 文档包含了几个主要部分,基本结构如下(本文以下出现的所有代码都可以套入下面示例进行测试): <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8&q…...
C#核心(8) 静态成员
前言 先前我们已经学习了成员变量以及成员属性。 静态成员对于在整个应用程序中共享数据和功能非常有用。它们可以用于跟踪全局状态、共享常量和实现单例模式等。但是需要注意的是,过度使用静态成员可能导致代码变得难以维护和测试,因此应谨慎使用。其…...
关于git使用的图文教程(包括基本使用,处理冲突问题等等)超详细
目录 用户签名,初始化git git提交流程图 提交到本地库 版本穿梭 分支操作 分支合并冲突 团队协作 github的使用 推送代码 克隆 拉取代码 团队协作冲突 团队协作之分支管理 推送分支到分支: 拉去远程库分支到本地库: 本地删除远程分支&am…...
Axios 的 responseType 属性详解及 Blob 与 ArrayBuffer 解析
在前端开发的广阔天地中,Axios 犹如一颗璀璨的明星,为我们与服务器之间的通信搭建起坚实的桥梁。其中,responseType 属性更是赋予了我们灵活处理服务器响应的强大能力。 一、Axios 的 responseType 属性值及示例 1.arraybuffer 当我们将 r…...
redis集群介绍
1. 节点(Node): • Redis集群中的单个Redis服务器实例。每个节点都运行一个Redis服务器进程,并维护自己的数据。 2. 分片(Sharding): • 将数据集分割成多个部分,并分布到不同的节点…...
JDK中常用的包有哪些?
1.java.lang 描述:包含Java语言的核心类,不需要显式导入。 常用类:Object、String、Math、System、Thread、Exception等。 2.java.util 描述:提供了集合框架、日期和时间功能、随机数生成、扫描和格式化等实用工具类。 常用类…...
校园官网练习---web
HTML: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>西安工商学院</title><…...
MySQL中指定字段的某个值排在前面
一 需求 如果我们想讲表中指定的字段的某一个值排序在最前面应该如何处理? 二 实现方式 方法 1、使用<>,xml中使用<![CDATA[跳过解析的特殊符号]]>或者<(小于符号)>(大于符号) ORDER …...
【51单片机】I2C总线详解 + AT24C02
学习使用的开发板:STC89C52RC/LE52RC 编程软件:Keil5 烧录软件:stc-isp 开发板实图: 文章目录 AT24C02介绍存储器 I2C总线介绍I2C时序结构数据帧AT24C02数据帧 编程实例 —— 按键控制数据大小&存储器写入读出 AT24C02介绍 …...
直接插入排序法
任务描述 本关任务:要求编写程序实现直接插入排序的功能。 相关知识 直接插入排序,是指将无序序列中的各元素依次插入到已经有序的数组中。 假设数组中前 i-1 元素已经有序,现在要将线性表中第 i 个元素插入到前面的有序子表中,…...
mysql中InnoDB索引与MyISAM索引
mysql索引 InnoDB 索引存储 主键索引(聚簇索引) 定义:主键索引是 InnoDB 存储引擎的聚簇索引,它决定了表中数据的物理存储顺序。每个 InnoDB 表都有一个且仅有一个聚簇索引。存储:主键索引的叶子节点直接包含表的数…...
Redis如何保证数据不丢失(可靠性)
本文主要以学习为主,详细参考:微信公众平台 Redis 保证数据不丢失的主要手段有两个: 持久化 多机部署 我们分别来看它们两的具体实现细节。 1.Redis 持久化 持久化是指将数据从内存中存储到持久化存储介质中(如硬盘…...
【计网】物理层学习笔记
【计网】物理层 物理层概述 物理层要实现的功能 在各种传输媒体上传输比特0和1,进而为上面的数据链路层提供透明传输比特流的作用。 物理层接口特性 物理层之下的传输媒体 传输媒体是计网设备之间的物理通路,也称为传输介质。 传输媒体并不包含在…...
vue链接跳转
在 Vue 3 的组合式 API 中,你可以使用 ref 和 setup 函数来实现外部链接跳转功能。 方法 1:使用 click 和 window.open(新标签页跳转) 这种方式在点击时会打开一个新标签页并跳转到外部链接。 <menu-item value"item2&…...
IP地址是电脑自带的吗?是根据什么而决定的
IP地址并非电脑自带,而是由网络运营商或网络服务提供商通过特定的协议和机制进行分配和管理的。要深入理解IP地址的来源和决定因素,我们需要从IP地址的基本概念、分配方式以及影响分配的因素等多个方面进行探讨。 IP地址,即互联网协议地址&am…...
JavaFX史上最全教程 - Shape - JavaFX矩形椭圆
avaFX Shape类定义了常见的形状,如线,矩形,圆,Arc,CubicCurve,Ellipse和QuadCurve。 在场景图上绘制矩形需要宽度,高度和左上角的(x,y)位置。 要在JavaFX中…...
SpringBoot实现的企业资产管理系统
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...
python-读写Excel:openpyxl-(4)下拉选项设置
使用openpyxl库的DataValidation对象方法可添加下拉选择列表。 DataValidation参数说明: type: 数据类型("whole", "decimal", "list", "date", "time", "textLength", "custom"…...
【C++】详解RAII思想与智能指针
🌈 个人主页:谁在夜里看海. 🔥 个人专栏:《C系列》《Linux系列》 ⛰️ 丢掉幻想,准备斗争 目录 引言 内存泄漏 内存泄漏的危害 内存泄漏的处理 一、RAII思想 二、智能指针 1.auto_ptr 实现原理 模拟实现 弊端…...
Qt 环境实现视频和音频播放
在这个示例中,我们将使用 FFmpeg 进行视频和音频的解码,并使用 Qt 的界面进行显示和控制。为了实现音频和视频的解码以及同步显示,我们需要使用 FFmpeg 的解码库进行视频和音频解码,使用 Qt 的 QLabel 显示解码后的视频帧…...
【人工智能训练师】7 大数据处理与应用
大数据处理与应用(Hive技术)(0/100分) 1.本地开发工具连接Hadoop集群 1.本次环境版本为Hadoop2.7.7,对应eclips插件存放于云主机master:/usr/package277/中。 2.本机映射名为hadoop000,云主机Hadoop/Hive的hosts文件中IP需要修改…...
nginx配置文件介绍及示例
一、nginx配置文件一共有main,http,server,location,upstream,stream,events7个块。 step 1: main 块 作用:main 块是 Nginx 配置文件的顶级块,用于设置一些全局的参数和配置&…...
滨州公司做网站/网络营销策划方案3000字
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40212367,本文出自:【张鸿洋的博客】1、概述大家在项目中或多或少的可能会见到,偶尔有的项目须要在APP上显示个树形控件,比方展示一个机构组织&…...
免费ai设计logo网站/网销是做什么的
学期末,大学生会进入到紧张状态。这时候大部分学生都会进入到认真复习的学习状态,但是总有个别学生对于期末考试并不在意,这是因为许多大学生并没有意识到挂科对于自己的影响究竟有多大?大学的学科考试是为了检测学生对于本学期所…...
网站建设任务清单/产品推广软文范文
cin>>n>>m;//输入被除数和除数int lenn.length();int ans0;for(int i0;i<len;i){ans(int)(((long long)ans*10n[i]-0)%m);}cout<<ans; 转载于:https://www.cnblogs.com/Fy1999/p/8976511.html...
遵义发布官网/厦门seo排名优化公司
MDK4工程用MDK5打开,编译引起的错误,类似这种 ..\..\..\Libraries\CMSIS\Core\CM3\stm32f10x.h(214): error: #101: "USB_HP_CAN1_TX_IRQn" has already been declared in the current scope 解决方法是:再次编译,就OK了...
做网站游戏总结的例文/设计一个公司网站多少钱
很多情况下,我们需要在Windows上写脚本,创建计划任务程序,这个过程中可能需要访问linux系统,执行脚本或者上传下载文件。并且我们也不想在Windows上安装什么东西。那最好的办法就是使用putty工具了,putty里面有好多个组…...
校园网站建设的作用/百度指数爬虫
实现伪静态的主要作用是有利于SEO。 常用的有以下几种方法: 第一种是在配置文件中进行配置,方法如下: 第一步:下载UrlRewrite; 第二步:将bll文件引用到项目中去。 第三步:开始在配置文件中进行配…...