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

目录

一、冯 • 诺依曼体系结构

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 管理理念:先描述,再组织

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

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

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

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

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

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GG_Bond20

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值