一.什么是冯诺依曼体系结构
计算机为什么要叫计算机?顾名思义,计算机就是负责计算的机器,像我们的电脑,开机运行后,他无时无刻都在进行计算工作,也就是各种硬件设备相互配合完成,使用显示器给你反馈出结果。
说到硬件,那就不得不提到计算机的组成了,计算机的组成就是依照冯诺依曼体系结构所打造出来的。
所以说白了,冯诺依曼体系结构就是描述计算机组成的。
冯诺依曼体系结构如下:
这是一个抽象的概念图。我们举出一些具体的硬件设备来理解冯诺依曼体系结构。
- 输入设备:键盘,摄像头,话筒,鼠标等。
- 输出设备:显示器,喇叭,磁盘,网卡等。
- 存储器:也就是计算机的内存,硬件设备为内存条。
- 运算器和控制器:它们两个统称为cpu,还有各种缓存啊等等。
二.为什么我们的计算机要使用冯诺依曼体系结构
上面说到了我们的计算机使用冯诺依曼体系结构所造出来,该计算机就是像我们这种笔记本电脑一样,便捷方便可以给老百姓使用,而不是上个世纪五六十年代那种的一整个屋子大的计算机,老百姓想要使用,当然性价比要高,不然老百姓用不起,造电脑的也赚不了钱。
这是电脑中硬件设施的处理数据的速度和本身的造价。
规律:造价越贵的,处理速度越快,容量越低。
造价越便宜的,处理速度越慢,容量越高。
故而得知计算机中设备的处理速度cpu>内存>各种外设。
这就是计算机的CPU不直接和外设打交道的原因,因为短板效应,也就是木桶效应,如果cpu和外设打交道,那么计算机的整体效率可能大致就接近外设的速度了,速度太慢了,指定是不行。
内存的处理速度单位是微秒/纳秒,而cpu的处理速度是纳秒。所以我们计算机的设备都是和内存相连接的。使得计算机的效率大致和内存的效率一致。
上面说的电脑的性价比,我们当然可以高价格造出高储存高速度的计算机,但是这样电脑的造价就太夸张了,所以我们现在普遍的计算机都是使用冯诺依曼体系结构所造出来的,主要是价格不贵,存储数据也足够大(硬盘),处理数据的速度也挺快的,主打一个性价比。
当然冯诺依曼体系结构也有一些缺点的:
冯.诺依曼体系结构的局限严重束缚了现代计算机的进一步发展,而非数值处理应用领域对计算机性能的要求越来越高,这就亟待需要突破传统计算机体系结构的框架,寻求新的体系结构来解决实际应用问题。在体系结构方面已经有了重大的变化和改进,如并行计算机、数据流计算机以及量子计算机、 DNA计算机等非冯计算机,它们部分或完全不同于传统的冯.诺依曼型计算机,很大程度上提高了计算机的计算性能。
三.计算机是如何使用该结构进行工作的
对冯诺依曼体系结构的理解我们当然不能只停留概念上的理解,接下来我们举个例子,理解该体系结构到底是如何运作起来的。
**具体例子:**你叫小王,你的暗恋对象叫小红,你们是同学关系,刚高考完,你准备勇敢一次,再微信上你要表白她,你在电脑的微信聊天框上发了一句:“我喜欢你,小红,你可以做我女朋友吗?”,当然小红的电脑微信上就接收到了该条消息,我们就来分析一下,该消息是如何从小王的电脑上,传送到小红的电脑上的。
1.小王使用键盘输入信息,然后被内存处理,到了cpu进一步处理,然后发送到网卡上,网卡通过网络进行数据的传送。
2.然后小红的网卡也使用网络接收到了该信息,把数据加载到内存中去,内存又加载到cpu中去,cpu后经过内存又到了输出设备(显示器)上。
所以这样的一段消息就从一台电脑通过网络到了另一台电脑上去了。
讲个恐怖的事情,小红看到消息后,立马回了小王消息说:“对不起,你是个好人!”。(好人卡就位了🤣)
四.操作系统-“先描述,再组织”
上述中对冯诺依曼体系结构的运用,都是建立在有操作系统的基础上,假如没有操作系统,电脑上的硬件设备只不过是一堆破铜烂铁。
①操作系统是什么呢?
操作系统是一款软件,进行软硬件资源管理的软件。
②为什么要有操作系统?
操作系统将软硬件资源管理好(手段),给用户提供良好的(稳定,高效,安全)的使用环境(目的)。
作为一个人,我们认识这个世界,都是通过属性来认识的,比如说:一个美国华人,世界武术巨星,成龙的偶像等等一系列的属性描述起来,把他们组织起来,进而我们知道这个人:李小龙。
对于操作系统来说,它也是通过六字箴言-先描述,再组织将软硬件资源管理起来的。
这里我们使用下面的例子来理解操作系统是如何将各种硬件设备管理起来的。
1.校长管理学生理解”先描述,再组织“
一般大学里面都是上万人,校长要将所有人给管理起来,校长就使用结构体存放每个学生的信息,然后使用链表将所有的学生给链接起来,结构体如下:
struct stu
{
string id;//学号
string name;//名字
int age;//年龄
//…………
struct stu*next;
}
就这样,结构体中包含一个学生的信息,然后使用链表将所有的学生链接起来,这样校长就可以将全校的学生给管理起来了。
而操作系统管理硬件设备同样是如此的,先描述,再组织。
操作系统和硬件设备打交道,中间还穿插着驱动程序,比如当电脑开机时,你将键盘和鼠标插入到电脑上,电脑会叮的响一声,此时该硬件的驱动程序的启动了,反馈给操作系统,表示该硬件设备可以使用了。
驱动程序(Driver)是一种软件,它在操作系统和硬件设备之间起到中介的作用。
硬件设备通常具有独特的功能和操作方式,而操作系统需要一种统一的方式来与这些硬件进行交互。驱动程序就是为了实现这种兼容性和通信而存在的。
它包含了硬件设备的特定指令和控制逻辑,能够将操作系统发出的通用命令转换为硬件设备能够理解和执行的具体操作。同时,它也会将硬件设备的状态和数据反馈给操作系统,使得操作系统能够对硬件的工作情况进行监控和管理。
下图就是整体的管理图:
操作系统管理,其中核心是这几个:
- 内存管理
- 驱动管理
- 文件/IO管理
- 进程管理
后续细说。
2.系统调用
什么是系统调用呢?
这里的用户广义上指的是所有人,狭义上指的是开发者。
开发者当然可以访问操作系统的最底层,但是你作为一个普通用户,你也不擅长直接访问底层os数据或访问硬件,必须贯穿整个层状结构。贯穿层状结构就必须通过系统调用,像我们使用的strlen等函数和cout等关键字都是封装了系统调用,我们才能直接使用,所以说现在的编程都是站在了巨人的肩膀上的。
在系统软件部分和硬件部分,它们都是不相信我们的,但是它还必须给我们提供服务,就像银行前台一样,使用防弹玻璃隔绝我们,但是还是要为我们提供服务,就是这么个道理。
外壳程序(shell,图形化界面)就会调用系统调用。
站在开发者的角度来说,可以直接调用系统接口,将系统接口封装成各种各样好用的函数,打包成库,要实现很多功能,不需要自己去写了,而是直接调用库函数即可!
外壳程序(shell,图形化界面)就会调用系统调用。
站在开发者的角度来说,可以直接调用系统接口,将系统接口封装成各种各样好用的函数,打包成库,要实现很多功能,不需要自己去写了,而是直接调用库函数即可!