冯诺依曼体系结构 与 操作系统

news2025/1/14 1:20:03

一、冯诺依曼体系结构

深入理解冯诺依曼体系结构

计算机的出现就是为了解决实际问题, 所以把问题交给计算机,计算机经过处理,得到一个结果反馈给我们,所以这中间就必然涉及到了输入设备,中央处理器(包括运算器和控制器)和输出设备

运算器主要用于进行各种数值和逻辑运算,包括加减乘除、与或非等操作;控制器则负责从主存中获取指令及相关数据,并决定如何对这些指令进行翻译和执行,以维持计算机系统的正常运行,后面我们就把运算器和控制器统称为中央处理器(cpu), 所以按照我们的理解,体系结构应该如下:

但是由于外部设备(输入设备和输出设备)相对于cpu来说速度很慢,根据木桶原理,计算机呈现出的整体的效率就很低, 所以我们又加入了内存这个设备

内存速度虽然比不上cpu,但是比外设快很多,因此最终呈现出的计算机效率还是不错的,所以内存相当于起到了缓冲的作用,根据该体系结构,计算机处理问题的流程如下:

输入数据到输入设备,将数据从外设加载到内存中,cpu从内存中读取数据进行处理,处理完之后写回到内存,内存再把数据交给输出到输出设备上,最终显示给用户,就有了最终的冯诺依曼体系

值得一提的是把外设的数据加载到内存和cpu读取内存数据是完全可以同时进行的,效率就更高了,所以内存可以理解为一个很大的缓存

冯诺依曼体系结构的价值

计算机中的存储结构是呈现金字塔状的,既然磁盘便宜,为啥不全部搞成瓷盘呢??因为速度太慢了,计算机基本没法运行;那既然寄存器速度快,为啥不全部搞成寄存器呢??因为造价太高了,注定大多数人买不起,计算机也就无法普及开来;所以冯诺依曼体系结构的巨大意义在于用较少的钱造出效率不错的计算机,让普通老百姓用的起计算机,技术改变世界!

冯诺依曼补充内容

1.图中的存储器指的就是内存

2.计算机中几乎所有的设备都具备数据存储能力,只是存储能力强弱的区别

3.内存是掉电易失性存储介质,磁盘相对来说是永久存储性介质

4.设备之间交互的本质是把数据从一个设备拷贝到另一个设备,存储的效率决定了拷贝的效率,决定了设备和设备之间通信的效率

5.把数据从一个设备搬运到另外一个设备这个工作是由操作系统来完成的

6.除了cpu和内存之外计算机中的大部分设备都叫做输入输出单元

输入单元:键盘,话筒, 摄像头, usb, 鼠标, 磁盘/ssd, 网卡

输出单元:显示器,喇叭,打印机,磁盘,网卡,显卡等等各种设备

7.同一个设备既可以是输入设备也可以是输出设备(比如网卡)

冯诺依曼体系的应用

1.解释"程序在运行之前,先要被加载到内存中"这句话

程序是保存在磁盘上的,也就是外部设备,而由冯诺依曼体系结构知道,cpu在数据层面上是不和外设交互的,而是和内存交互,所以必须先把程序加载到内存,cpu才能读取数据,运行程序, 所以是由体系结构决定的!

2.你和qq好友发消息的过程

你输入"在吗"到键盘后,操作系统将数据从键盘加载到内存中,cpu从内存中读取数据并处理(比如打包"在吗"和你的头像,发送时间等等), 处理完之后写入到内存中,然后通过网卡(输出设备)传输到网络上,经过传送,你朋友的网卡(输入设备)接收到你的消息,然后加载到内存,经过cpu的处理(解包等)写回内存,然后从内存输出到显示器上,你就看到了"在吗"这条消息以及发送时间等其他信息,

但是你发送的"在吗"也会显示到你的显示器上,这是为什么?

因为你的内存数据输出到网卡的同时也输出到了你的显示器上,输出设备是不唯一的!

二、操作系统(OS)

OS定位

操作系统是一款进行软硬件管理的软件

当你电脑开机时,操作系统就是第一个加载起来的软件

OS存在的目的

1.将软硬件资源管理好(手段)

2.给用户提供一个良好(稳定,高效,安全,易用)的使用环境(目的)

OS管理的精髓

···管理

以下是通过学校模型来深入理解管理

简化学校的模型,假如只有校长,辅导员和学生,校长是管理者,学生是被管理者,辅导员是什么角色呢???  学校的管理者是校长,但是我们基本很少和校长见面,校长如何做管理??

所有的事情无外乎是在做决策或者是做执行,真正的管理者是做决策的, 而如何做决策??

根据完善的数据做决策! 但是校长和学生很少见面,如何拿到数据?? 辅导员可以拿到学生数据反馈给校长, 辅导员核心工作是做执行!

所以管理的本质不是管人,而是管理数据!

当学生多了起来,这么多的学生信息量是很大的,如何管理这些数据呢???

学生虽然很多,但是要收集的学生的信息种类都一样,比如说姓名,性别,年龄,身高,成绩等等,统计到excel表格里,就变成了对结构化数据的管理!

后来校长把每一个学生的属性抽象出来,成为结构体类型(C++中的类), 于是每个学生都有自己的结构体变量了,但是这些变量是独立的,为了把这些变量关联起来,于是校长用链表把结构体变量连接起来,对学生信息的管理就变成了对链表的增删查改!!! 这就完成了对学生管理的建模过程!

 ···先描述,再组织

任何管理工作都可以经过先描述,再组织来完成计算机建模!

人是通过属性认识世界的,所以“先描述"如何描述?? 通过提炼属性!属性的集合就代表了事物

上述对学生属性进行抽象,形成结构体的过程就是"先描述",然后把一个个结构体变量用数据结构连接起来的过程就是"再组织"

我们之前在写C语言项目/数据结构/,开始写代码的时候总是先写class/struct, 再写其他代码,这就是先描述,再组织!

C++中类和对象有封装继承多态, STL中有各种容器,这就是先描述再组织的体现,所以C++能解决现实中的问题!

计算机的层状结构

我们从两部分来理解计算机的层状结构,第一部分是操作系统以下的部分,也就是OS存在目的中的第1点,把软硬件资源管理好;第二部分是操作系统以上的部分,也就是OS存在目的中的第2点,为用户提供良好的使用环境

···管理好硬件资源

1.底层硬件是以冯诺依曼的形式进行组织的

2.操作系统是要管理底层硬件的,但是操作系统并不直接和硬件交互,如何管理??

只需要拿到硬件相关的数据即可,比如磁盘有几个分区,一共多少容量,当前使用了多少,还剩多少?磁盘状态(休眠/运行/挂掉了)? 这些都是数据,所以只需要对数据做管理,如何拿数据??

OS和底层硬件之间还有一层叫做驱动程序,驱动程序帮助OS获得底层硬件的各种数据,而要管理,就要先描述后组织!Linux是用C语言写的,所以在OS内要出现struct harddev{ 设备属性...}  类似内容,采集到硬件的数据之后形成对硬件管理的数据结构(比如单链表),于是OS对硬件的管理就变成了对硬件对应的数据结构的增删查改!

硬件物理上连接到了电脑并不意味着就被OS管理起来了(比如鼠标插到了电脑上), 必须是OS内存在管理这个硬件的数据对象和数据结构,才叫硬件被OS管理起来了!

操作系统的管理

1.进程管理

2.内存管理

3.文件/IO管理

4.驱动管理

···为用户提供良好的环境

用户广义指所以使用电脑的人,狭义指的是开发者, 首先得让开发者用起来,否则开发者就没法开发出各种软件了,下面的用户默认指的是开发者

用户要访问硬件或者其他信息,直接访问OS不就行了吗??  因为用户也有坏人,所以不让用户直接访问OS内的数据!所有操作系统不相信用户但是必须给用户提供给服务

银行系统和操作系统的设计就很相似:

银行的小窗口就类似于OS的系统调用接口,系统调用接口是OS自己提供的,其实就是OS把自己内部很多有价值的东西封装成函数,  用户要访问操作系统内部的软硬件信息,就得调用系统调用接口,这是用户获取系统数据的唯一方式!

再回顾一下C语言中的printf函数,而printf是将数据打印到了显示器上,而用户是没有能力直接访问硬件的,所以printf必定封装了系统调用! 

但是系统调用使用起来比较麻烦,用系统的人并不善于使用, 开发的人频繁一些系统调用, 为了更加方便使用以及开发:

用系统的人的角度: 提供外壳程序(shell, 图形化界面)(外壳程序一定会调用系统调用)

系统上开发的人的角度: 将系统接口封装成各种各样好用的函数,打包形成库,直接调用函数即可,所以库和系统调用是上下层关系

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

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

相关文章

Find My小风扇|苹果Find My技术与小风扇结合,智能防丢,全球定位

电风扇在我们的日常生活中也是经常会使用到的家电产品,尤其是在炎炎的夏日,风扇能给我们吹来清凉的凉风,如今随身携带的小风扇成为人们出门的必备物品,由于体积小方便经常会被人遗忘在某个地方导致丢失。 在智能化加持下&#x…

C#,数组数据波形排序(Sort in Wave Form)的朴素算法与源代码

1 波形排序 所谓“波形排序”就是一大一小。 将n个身高互不相同的人排成一行 ,对于每个人 ,要求他要么比相邻的人均高 ,要么比相邻的人均矮 ,问共有多少种排法 ,这一问题称为波形排列问题。 2 源程序 using System; using System.Collections; using System.Collections.Gen…

《Docker 简易速速上手小册》第9章 Docker 与持续集成(2024 最新版)

文章目录 9.1 持续集成的基本概念9.1.1 重点基础知识9.1.2 重点案例:Python Web 应用的 CI 流程9.1.3 拓展案例 1:Python 数据分析项目的 CI9.1.4 拓展案例 2:Python 微服务的 CI/CD 9.2 Docker 在 CI/CD 中的应用9.2.1 重点基础知识9.2.2 重…

MCU多核异构通信原理

摘要: 本文结合瑞萨RZ/G2L 多核处理器,给大家讲述一下多核异构设计及通信的原理。 随着电子技术的不断发展,以及市场需求的日益增长,嵌入式系统不仅要求执行复杂的控制任务,还需要实时地采集和处理数据。 为了满足这…

计算机网络:思科实验【4-生成树协议STP及虚拟局域网VLAN】

🌈个人主页:godspeed_lucip 🔥 系列专栏:Cisco Packet Tracer实验 本文对应的实验报告源文件请关注微信公众号程序员刘同学,回复思科获取下载链接。 实验目的实验环境实验内容交换机生成树协议**STP**虚拟局域网**VLAN…

[vue2] 使用provide和inject时,无法获取到实时更新的数据

一、场景 当vue文件中存在多级的父子组件传值(即:祖先向下传递数据)、多个子组件或孙子级组件都要使用顶级或父级的数据时,使用provide 和 inject 组合无疑是很方便的一种做法了,但如此只是注入的初始值,并…

解码云原生架构:应对变革的挑战

云原生是什么 每次听到这个名词,总是感觉既熟悉,又陌生,真的是很难受,盘他! 云原生(Cloud-Native)是一种软件开发和部署的方法论,旨在利用云计算和云服务的优势来构建、部署和管理…

xss-跨站脚本攻击漏洞

前备知识: Cookie和Session是Web开发中用于维持用户状态、跟踪用户会话的核心技术,它们的主要目的是在无状态的HTTP协议基础上实现有状态的用户交互。 **Cookie**: - Cookie是一种由服务器发送到客户端(通常是用户的浏览器&#x…

皓学IT:WEB05-Servlet

一、Servlet 1.1.概述 Servlet是SUN公司提供的一套规范,名称就叫Servlet规范,它也是JavaEE规范之一。我们可以像学习Java基础一样,通过API来学习Servlet。这里需要注意的是,在我们之前JDK的API中是没有Servlet规范的相关内容&am…

C语言编程安全规范

目的 本规范旨在加强编程人员在编程过程中的安全意识,建立编程人员的攻击者思维,养成安全编码的习惯,编写出安全可靠的代码。 2 宏 2.1 用宏定义表达式时,要使用完备的括号 2.2 使用宏时,不允许参数发生变化 3 变量 3.1 所有变量在定义时必须赋初值 变量声明赋予初值,可…

python实现线下缓存最优算法

对于现代计算机为了加快数据存储速度,一般会采用多级缓存的方法,以最简单的二级缓存来说,数据会存放在两个地方,一个地方就是存在内存当中,另一个存放的地方就是存放在硬盘当中,但是这两个地方数据读取的速…

微信小程序-场景功能-开发文档学习笔记

界面常见的交互反馈 查看更多学习笔记:GitHub:LoveEmiliaForever 微信小程序开发指南 微信小程序开发文档 用户和小程序上进行交互的时候,某些操作可能比较耗时,我们应该予以及时的反馈以舒缓用户等待的不良情绪(良好…

Centos服务器部署前后端项目

目录 准备工作1. 准备传输软件2. 连接服务器 部署Mysql1.下载Mysql(Linux版本)2. 解压3. 修改配置4. 启动服务另一种方法Docker 部署后端1. 在项目根目录中创建Dockerfile文件写入2. 启动 部署前端1. 在项目根目录中创建Dockerfile文件写入2. 启动 准备工作 1. 准备传输软件 …

机器学习:SVM算法(Python)

一、核函数 kernel_func.py import numpy as npdef linear():"""线性核函数:return:"""def _linear(x_i, x_j):return np.dot(x_i, x_j)return _lineardef poly(degree3, coef01.0):"""多项式核函数:param degree: 阶次:param …

曲线生成 | 图解B样条曲线生成原理(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 控制点计算之插值2 控制点计算之近似3 仿真实现3.1 ROS C实现3.2 Python实现3.3 Matlab实现 0 专栏介绍 🔥附C/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等)&a…

正则表达式详细使用教程

正则是用于匹配字符串中字符组合的模式&#xff0c;在js中&#xff0c;正则也是对象。 定义正则的两种方式&#xff1a; 1.const 变量名new RegExp(/表达式/) <script>const req new RegExp(/a/)console.log(req.test("asd"))//true</script> 2.con…

Ansible 更换aliyun 镜像 并下载tree

目录 查看系统版本找到对应 的版本对当前镜像进行备份下载aliyuan更换成功安装扩展源更换源之后 的三个命令 这里安装一个aliyun 的镜像 本案例 仅供实验参考 生产环境中请谨慎使用 查看系统版本 先查看linux 的系统 版本 ansible slave -m shell -a uname -a找到对应 的版本…

SpringBoot 学习笔记

文章目录 一、IoC二、AOP三、bean3.1 bean 生命周期3.2 三种依赖注入方式3.3 bean 线程安全 四、SpringMVC五、常用注解5.1 Scope5.2 PostConstruct 和 PreDestroy5.3 Component 和 Bean5.4 Autowired 和 Resource 六、基于 ApplicationContextAware 实现工厂模式七、事务失效八…

Cubase学习:Cubase 12常用快捷键

按键盘上的上下箭头就可以让选中的音符向上或向下移动 数字0键: 停止 Ctrl+数字 0 键: 新建视图层 Alt+数字0 键: 重新设置视图层 小数点键: 播放指针回零点 数字1 键: 左定位指针 数字 2 键: 右定位指针 数字3 键--数字9键: 分别控制 3--9 的7个定位标志 Alt+数字1 键--数字9键…

BoomWorks使用wxWidgets+CodeBlocks+GCC开发的软件合集

♦️ 定时执行专家&#xff08;TimingExecutor&#xff09; V7.0 《定时执行专家》是一款制作精良、功能强大、毫秒精度、专业级的定时任务执行软件。软件具有 25 种【任务类型】、12 种【触发器】触发方式&#xff0c;并且全面支持界面化【Cron表达式】设置。软件采用多线程并…