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

news2024/11/15 16:40:13

目录

一、冯 • 诺依曼体系结构

1.1 冯 • 诺依曼体系结构推导

1.2 内存提高效率

1.3 具体案例理解冯 • 诺依曼体系结构

1.4 其他认识

二、操作系统

2.1 操作系统概念

2.2 操作系统的上下层

2.3 管理理念:先描述,再组织


一、冯 • 诺依曼体系结构

1.1 冯 • 诺依曼体系结构推导

计算机的作用就是为了解决问题。首先需要将数据或问题输入到计算机当中,所以计算机必须有输入设备。计算机解决完问题后还需要将计算结果输出显示出来,所以计算机必须有输出设备。要将问题解决就需要用到中央处理器,其中运算器负责算术运算与逻辑运算,控制器控制具体的流程。

对应到C语言当中,算术运算就是了完成一系列的加减乘除,而逻辑运算就对应于一系列的逻辑与、逻辑或,控制功能就对应于C语言当中的判断、循环以及各个函数之间的跳转等等。

那么好似没有存储器(内存)这个结构也是可以的,如上图所示。但实际上并不是!!!

输入设备和输出设备相对于中央处理器来说是非常慢的,而根据木桶原理,那么最终整个体系所呈现出来的速度将会是很慢的。

于是就不让输入设备和输出设备直接与CPU进行交互,而在这中间加入了内存,最终形成了冯 • 诺依曼体系结构。

内存比外设速度快许多,但比又CPU慢。在冯 • 诺依曼体系结构中,内存就处于慢设备和快设备之间,能够起到缓冲作用

冯 • 诺依曼体系结构运行流程: 用户输入的数据先存储到内存当中,CPU读取数据的时候就直接从内存中读取,CPU处理完数据后又写回内存当中,然后内存再将数据输出到输出设备当中,最后由输出设备进行输出显示。

1.2 内存提高效率

但先将输入的数据交给内存,再由内存将数据交给CPU,这个过程真的比CPU直接从外设中获取数据更快吗?

内存具有数据存储的能力。这也使得软件有了发挥的空间,譬如操作系统可以将可能使用的数据预先加载到内存,以此来提高效率。

同时CPU处理数据和内存加载数据是可以同时进行的。根据统计学原理,当某个数据被访问时,那么下一次有极大可能访问其周围的数据。所以当CPU处理某一数据时,内存可以将该数据周围的数据加载进来,这也使得计算机的效率更高。

输出数据时也是一样,CPU处理完数据后直接将数据放到内存当中,当输出设备需要时再从内存中获取即可,此时CPU就可处理其他的事务(不需要等待外设处理),从而提高效率。这也就有了我们平常所说的缓冲区的概念。

1.3 具体案例理解冯 • 诺依曼体系结构

分析两台电脑使用QQ发送信息的过程,忽略网络处理的细节从而简化模型

通过键盘输入信息并将消息加载到内存后,CPU从内存获取到消息后对消息进行各种处理,然后再将其写回内存,此时本地网卡就可以从内存获取已处理好的消息,然后在网络当中经过一系列处理,之后你朋友的网卡从网络当中获取到你所发的消息后,将该消息加载到内存当中,你朋友的CPU再从内存当中获取消息并对消息进行解包操作,然后将解包好的消息写回内存,最后你朋友的显示器从内存当中获取消息并显示在他的电脑上。

1.4 其他认识

◆   常见输入设备:键盘、鼠标、网卡、硬盘、话筒、摄像头、扫描仪等
常见输出设备:显示器、音响、网卡、硬盘、打印机等
注意: 同种设备在不同场景下可能属于输入设备,也可能属于输入设备

◆   站在数据层面上看,CPU只和内存打交道,外设也只和内存打交道。这也是为什么程序运行之前必须先加载到内存的原因。因为可执行程序(文件)是在硬盘上的,而CPU只能从内存中获取数据,所以必须先将硬盘上的数据加载到内存(即必须先将程序加载到内存)。

◆   CPU当中有寄存器,但寄存器不仅仅在CPU中存在,在其他外设当中也是有寄存器的。例如,当我们敲击键盘时,键盘先将获取到的内容存储在寄存器中,然后再通过寄存器将数据写入内存中。

◆   在物理层面上,各个硬件单元之间是通过总线连接的,外设与内存之间的总线为IO总线,内存与CPU之间的总线为系统总线

二、操作系统

2.1 操作系统概念

操作系统的定位: 操作系统其实就是一款进行软硬件资源管理的软件。

设计操作系统的目的:

1. 与硬件进行交互,管理所有的软硬件资源。

2. 为用户程序(应用程序)提供一个良好的执行环境。

2.2 操作系统的上下层

其实可以将将整个系统类比为一个银行系统进行理解。

底层硬件就是银行内的基础设施,如座椅、电脑、保险箱等。这些物品平时都是员工进行使用,使用这些硬件的员工我们就可以看作是驱动程序。

在一个银行系统里员工也是需要被管理的,管理员工的便是银行行长(操作系统)。而系统调用接口就像是银行提供的一个个窗口,可以供外面的顾客使用,顾客也必须通过系统调用接口才能访问内部,而不能直接操作内核、硬件等。

但在现实情况中,有些用户并不会使用窗口(第一次来银行的客户),这时外面的工作人员就会询问你要办理什么业务,这些工作人员就可以看作是用户调用接口。工作人员了解到你要办什么业务后,会告诉你具体告诉你要如何领票排队、具体去哪个窗口。所以用户操作接口内部还是会调用系统调用接口的。

我们可以发现操作系统并不直接与硬件交互,就像行长不会修电脑。但是为什么要设计成这样呢?

譬如,若操作系统自己来完成键盘的读取操作,那么只要键盘读取方式发生了改变,那么操作系统的内核源代码就需要进行重新编写,这对操作系统来说维护成本太高了。
于是在操作系统与底层硬件之间增加了一层驱动层,驱动层的主要工作就是单独去控制底层硬件。例如,键盘有键盘驱动,网卡有网卡驱动,硬盘有硬盘驱动,磁盘有磁盘驱动。驱动简单来说就是去访问某个硬件,访问这个硬件的读、写以及硬件当前的状态等等,驱动层就是直接和硬件打交道的。而驱动一般是由硬件制造厂商提供的,或是由操作系统相关的模块进行开发的(例如网卡)。
此时操作系统就只需关心何时读取数据,而不用关心数据是如何读取的了,也就是完成了操作系统与硬件之间的解耦。

2.3 管理理念:先描述,再组织

操作系统具体是如何管理的,我们今天先不谈,先谈谈操作系统的管理理念: 先描述,再组织

以校园中的管理举例,校园中可以大致分为三类人: 学生(被管理者)、老师(执行者)、校长(决策者)

在校园中学生几乎是不会看见校长的(操作系统不直接与硬件交互),他只进行决策。可是他不与学生交互,是如何管理学生的呢?

譬如校长想选出三名学生代表在元旦晚会上发表讲话,就让老师将成绩单拿给他,校长从中选出了成绩前三名的学生并让老师告诉这三名学生。在这个过程中,校长并没有与学生交互却管理到了学生,就是根据数据进行的管理。

实际上,学校将我们每个学生的各种信息都进行了管理,基本信息、成绩信息以及健康信息等等。每一套信息就描述了一名学生,校长通过对这些信息的管理就能做到对学生的管理。当学生的数量较多时,校长可以将全部学生的信息组织起来(链表、顺序表、树等)。此时校长对各个学生的管理,实际上就是对数据结构的增删查改。

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

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

相关文章

Acwing - 算法基础课 - 笔记(数学知识 · 四)(补)

数学知识(四) 这一小节讲的是容斥原理和简单博弈论。 容斥原理 定义 最基本的,假设有3个两两相交的圆。那么三个圆所覆盖的面积大小为 S1S2S3−S1∩S2−S2∩S3−S1∩S3S1∩S2∩S3S_1S_2S_3 - S_1 \cap S_2 - S_2 \cap S_3 - S_1 \cap S_3…

【JavaEE】如何开始最基础的Servlet编程(借助Tomcat实现)

什么是Servlet我们知道服务器工作的三部曲:接收请求 -> 处理请求并计算响应 -> 发送响应Servlet是个接口,实现这个接口的类就是用来进行中间的一个步骤“处理请求并计算响应的”,应用于HTTP传输的中间层。借助Tomcat服务器进行Servlet编…

【论文速递】WACV2022 - 从边界框标注学习小样本分割

【论文速递】WACV2022 - 从边界框标注学习小样本分割 【论文原文】:Learning Few-shot Segmentation from Bounding Box Annotations 获取地址:https://openaccess.thecvf.com/content/WACV2023/papers/Han_Learning_Few-Shot_Segmentation_From_Bound…

Word文档和PDF文件如何互相转换?

工作中,有时候我们需要把Word转换成PDF格式,转换后不但更美观、专业,也可以防止文档被修改。 那Word文档如何转换成PDF文件呢?其实在Word里面就可以直接转换。 文档编辑好后,在菜单中点击【文件】选项,然…

搭建 Go 语言的开发环境(文末附视频讲解)

从本小节开始,我们就要正式动手实践了。 类比现实生活,我们若要钉钉子,就需要准备锤子;想要烧菜,就需要准备灶具和食材…… 类似地,若要在电脑上编写 Go 语言程序,便要先配置开发环境。 下载和…

干货 | 互联网广告数据的匿名化方案研究

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。第一部分:背景介绍一、匿名化必要性互联网广告具有非常重要的商业价值,同时也是涉及数据处理十分密集的行业,出现了操作规范化、个人信息保护和商业数据安全等…

[GXYCTF2019]禁止套娃(无参数RCE)

目录 信息收集 知识讲解 涉及函数 PHP的正则表达式 无参rce 用到的函数 思路分析 方法一 方法二 信息收集 拿到这道题,抓包看了看,啥也没有,用dirsearch爆破目录发现.git目录,猜测存在.git源码泄露,用githac…

Web Spider XHR断点 堆栈跟值 逆向案例(四)

声明 此次案例只为学习交流使用,抓包内容、敏感网址、数据接口均已做脱敏处理,切勿用于其他非法用途; 文章目录声明前言一、任务说明二、网站分析三、XHR断点调试,扣JS加密代码四、代码实现1、JS加密代码:encode.js2、…

安卓逆向:基础入门(一)

前言随着app的广泛应用,使用过程中,难免会遇到些很不友好的功能,比如:游戏充值、间断性弹窗广告、续费解锁下一回等等。而随之会产生如何将这些功能取消掉,而Android逆向就可以做到,纵向丝滑。当然这只是安…

Kinect与TOF、双目、结构光相机比较相机国产、非国产统计参数对比分析

Kinect与TOF、双目、结构光相机比较相机国产、非国产统计参数对比分析 Kinect v1和Kinect v2之间的参数比较 从图中可以看出,Kinect v2的表现比Kinect v1要好得多:首先最令人印象深刻的是分辨率的提高,v2达到了1080p,甚至视野也大…

JavaWeb | JDBC概述及IDEA连接MySQL

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址:🔥JavaWeb Java入门篇: 🔥Java基础学习篇 文章目录一、前言二…

java基础学习 day36(字符串相关类的底层原理)

字符串存储的内存原理 直接赋值会复用字符串常量池中已有的new出来的不会复用,而是开辟一个新的空间来创建 “”号比较的到底是什么 基本数据类型比较数据值引用数据类型比较地址值 PS. 所以以后对引用数据类型,不要用“”,改用.equals()…

RS485接线方式小科普

欢迎来到东用知识小课堂!RS-485采用平衡发送和差分接收方式实现通信:发送端将串行口的ttl电平信号转换成差分信号a,b两路输出,经过线缆传输之后在接收端将差分信号还原成ttl电平信号。RS-485总线网络拓扑一般采用终端匹配的总线型…

【Linux】基于 Pintos 实现新的用户级程序的系统调用 | 冯诺依曼架构

💭 写在前面:本章我们首先会明确冯诺依曼体系结构的概念,旨在帮助大家理解体系结构在硬件角度去理解数据流走向的问题。理解完之后我们再去谈操作系统,这个在之前的章节已经有所铺垫,当时我们只讲解了操作系统是什么&a…

车载以太网 - 车辆信息和车辆声明 - 09

到今天这一篇,对于ISO 13400 - 2的DoIP协议介绍就完事了,对DoIP协议的规范介绍基本已经全部包括了,无论是我们作为软件开发人员还是测试人员,了解这部分内容基本就能够满足这块基础的开发要求,大家如果在研究或者学习这块内容的时候有什么问题欢迎私聊;并且在本篇文章结束…

Nginx使用(四)动静分离实例

一、简介Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求和静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面,动静分离从目前实…

Linux系统安装Redis

我这里以CentOS7为例 VMware安装完centOS7之后 1.首先开启网络: 查看ip的命令不是传统的ifconfig或者ipconfig而是ip address 刚安装完使用ip address查看的时候会发现没有ip地址,这里需要修改设置启动网卡 vi /etc/sysconfig/network-scripts/ifcf…

英语学习打卡day1

2023.1.19 重点单词 1.speculation n.推测,投机 speculate v. speculative adj. spectate v.看 spectator inspect 检查(往里看) aspect 外观(看一眼) 2.literally adv.(强调事实可能令人惊讶)真正地,…

5.JAVA基础入门必备

文章目录前言一、数据类型二、标识符三、键盘录入四、IDEA中的第一个代码五、IDEA中的设置六、IDEA的项目和模块操作总结前言 一、数据类型 重点记忆byte的取值范围!! 不同类型数据的打印: public class VariableDemo3{//主入口public static void main(String[] args){//byt…

FrameBuffer 应用

1.Frame 是帧的意思, buffer 是缓冲的意思,所以 Framebuffer 就是帧缓冲。Framebuffer 就是一块内存,里面保存着一帧图像。帧缓冲(framebuffer)是 Linux 系统中的一种显示驱动接口,它将显示设备&#xff08…