6

【Linux】认识冯诺依曼体系&&初识LinuxOS

 2 years ago
source link: https://blog.csdn.net/zhybiancheng/article/details/120250113
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【Linux】认识冯诺依曼体系&&初识LinuxOS

冯诺依曼体系结构

冯诺依曼体系的作用

冯.诺依曼体系结构是现代计算机的基础,现在大多计算机仍是冯.诺依曼计算机的组织结构,只是作了一些改进而已,并没有从根本上突破冯体系结构的束缚。 冯·诺依曼提出的计算机体系结构,奠定了现代计算机的结构理念。

总之:了解冯诺依曼体系有助于我们对计算机有一个大体的认识,在学习阶段只需要有大概的印象即可。

冯诺依曼体系的组成结构

我们常见的计算机大部分都遵循着冯诺依曼体系,下面这幅图简要地描述了冯诺依曼体系结构。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1q2GJONn-1631426985512)(D:\图片\冯诺依曼体系.png)]

说明:(被高亮出来的设备就是计算机的五大部件)

用户: 使用计算机的人

「输入设备」: 键盘,话筒,摄像头,网卡硬盘

「输出设备」: 显示器,音响,网卡硬盘

「存储器」(内存): 具有存储数据的能力,也可以通过**预装数据(数据流向介绍)**来提高计算机的效率

「运算器」: 可以做算术运算逻辑运算

「控制器」: 有控制功能,控制运算器进行怎样的运算。

CPU:运算器和控制器合成中央处理器(CPU)

数据流向(蓝色箭头):也是冯诺依曼体系的组成原理

首先需要知道输入设备和输出设备处理数据的速度相较于CPU是很慢的,根据木桶原理来说如果数据直接从输入输出设备中发送或者接收就会形成一个很大的速度差,这样就会使得整个计算机运行起来的效率还是很低。

因为有IO设备和CPU的效率不均衡,因此引进了「存储器」(具有存储一定数据的设备)。相较于输入输出设备,存储器(内存)处理数据要快的多(虽然还是比CPU要慢),所以冯诺依曼体系中输入输出不和CPU直接对接,而是通过内存过渡一下,先将数据加载到内存当中,然后CPU再从内从中取数据,处理完数据后也不直接给输出设备,而是先给内存,最后内存中的数据再刷新到输出设备上。

以上就是内存预装数据的过程。利用的原理其实就是 「局部性原理」即当访问一个数据的时候,下一次在访问的数据大概率是当前访问数据周围的数据,所以当CPU向存储器索要数据的时候,存储器也同时将当前访问数据周围的数据预装载到存储器当中,使得CPU处理数据和存储器装载数据同时进行。 这样就可以在一定程度上提高真个计算机的效率。

控制信号(红色箭头):

当数据从IO设备中输入输出的时候,IO设备需要通知CPU让它开始处理数据,这时就需要发射控制信号发出可以通知CPU,然后CPU中控制器控制相关设备将数据从外设加载到内存中。

总结:

1.在硬件和数据层面上,CPU只和内存交接,外设只和内存交接。(这就解释了为什么程序运行之前必须先要加载到内存当中,因为程序要运行在CPU上处理,而CPU却只和内存打交道……)

2.数据要得到处理,必须通过操作系统的帮助将数据预装到内存当中。

1.用户通过键盘输入数据,首先是装在外设的寄存器中,所以寄存器在CPU和外设中都存在。

2.各个硬件单元通过通过总线连接,外设和内存之间的总线称为IO总线,内存和CPU之间的总线称为系统总线。

操作系统的意义

操作系统就是一款进行软件和硬件资源管理的软件。(可以在看了后面操作系统的讲解之后再回头康一康)

计算机体系结构讲解(重要)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6xJ0XbIZ-1631426985514)(D:\图片\计算机体系结构.png)]

这张图比较复杂当也很重要,对于认识操作系统有很大的帮助。

从图中可以看出,这幅图是由用户部分,操作系统部分和硬件部分组成的,但是我在画这幅图的时候却不是从上到下的画,而是从 「两端到中间」 这样一个过程,所以大家也可以从 「两端到中间」 这样理解。

首先可以看一下这幅图中最下面硬件这部分,很容易可以看出最下面就是整个计算机中底层一些常见的硬件设备而已,它们遵循着冯诺依曼体系结构的组织形式。

但是一个计算机中不是只有硬件,一个裸机只是一具空壳而已,只要当计算机上有了软件才可以使得计算机具备灵魂。所以计算机上出现了第一个软件:操作系统

而操作系统和硬件设备并不是成对出现的,这时因为硬件设备的变化很多,比如IO设备的读写方式改变了,那么操作系统去操作硬件设备的方式也就是必须要改变,这样我们就不得不去重新修改操作系统的内核,想一想这么多的硬件设备如果都需要每一次都去修改操作系统的内核代码那是多么可怕的事情!**所以驱动层就应运而生,驱动层在操作系统和硬件层中充当了一个过渡的桥梁,让驱动去单独空置硬件,然后操作系统去控制驱动即可。**而驱动一般由制造硬件和厂家去提供,这样我们就可以安心地取使用操作系统即可,这样模板化的分离,其实就是一种解耦,提高了整个计算机的开发效率。

再了解了图中的下半部分之后,我们直接跳到图中最上面的部分,也就是用户层。

对于一般用户来说直接使用操作系统去操作的的成本太高了, 在这里我们就可以用命令行或是图形化界面进行各种操作 ,这样就可以降低操作计算机的成本。

对于一些普通的开发人员来说,我们想要去开发用户级的程序的时候,可能对于操作系统的内核不了解,所以系统通过封装系统级别的接口,构建出了一批语言级的库函数,我们我可以通过调用这些库函数,类似(printf,scanf)实现用户级程序的编写。

当一般开发人员的功底和经验比较深的时候,就会去探索计算机的精髓,也就是了解深入操作系统。当我们先去使用操作系统的时候,操作系统其实本身也是有保护机制的,它是不用让用户直接去访问它的,而是暴露一些系统接口,让用户间接地去使用操作系统。

总结上图:

操作系统对上暴露系统接口给用户使用,对下通过驱动层堆硬件进行管理,所以说操作系统是一款进行软硬件资源管理的软件。

操作系统的作用

最后重申一遍,os的作用

1.对下,与硬件进行交互

2.对上,为用户程序提供一个良好的执行环境。

如有错误,请大家不吝赐教。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK