1.简要描述
冯·诺依曼体系结构是现代计算机的基本设计思想,其核心理念是将计算机的硬件和软件统一为一个整体,通过存储程序的方式实现计算。冯·诺依曼体系结构的核心思想是通过存储程序实现自动计算,其五大部件协同工作,奠定了现代计算机的基本框架。
2.基本组成部分
冯·诺依曼体系结构由以下五大部件组成:
输入设备:用于将外部数据输入到计算机中(如键盘、鼠标、摄像头等)。
存储器:用于存储程序和数据(包括内存和外存)。
运算器:负责执行算术运算和逻辑运算。
控制器:负责协调和控制计算机各部件的工作,执行程序指令。
输出设备:用于将计算结果输出到外部(如显示器、打印机、扬声器等)。
3.示例说明
但是换句话讲,在Linux中一切皆是文件,发送消息的本质就是基于冯诺依曼结构,从我的键盘文件拷贝数据到对方的显示器文件!!!!!!!
4. 内存与外存
-
内存:与CPU直接交互,速度快但容量有限。
-
外存:如硬盘、SSD等,容量大但速度较慢。
-
内存作为外存和CPU之间的缓存,确保数据能够快速传递。
5. 性能瓶颈
冯·诺依曼体系结构的一个主要问题是“冯·诺依曼瓶颈”,即数据在存储器和CPU之间的传输速度限制了整体性能。图片中提到的“木桶理论”形象地说明了这一点:系统的性能由最慢的环节(如存储器(内存)速度)决定。
6.操作系统
6.1 操作系统概述
操作系统是一种系统软件,处于计算机硬件和其他软件及用户之间的中间层,它对软硬件资源进行管理,为用户和应用软件提供良好的运行环境。
从上图可以看到,操作系统是分为侠义和广义的,内核就是开发者所制造出来的(指的是祖师爷那帮人),外壳是给公司里的各种程序员使用的,诸位程序员在外壳上对操作系统进行开发,开发完成后形成广义的操作系统,也就是大家都在用的安卓苹果等等。
6.2 操作系统结构
用户部分 :包含指令操作、开发操作和管理操作等,用户通过这些操作与计算机系统进行交互。
用户操作接口 :有 shell 外壳、lib 和部分指令,方便用户进行各种操作,就像是用户与操作系统之间的一座桥梁,让用户能够按照自己的意图操控计算机系统。
系统调用接口 :是操作系统提供给用户程序调用的一组接口,用户程序可以通过这些接口请求操作系统提供的各种服务,如文件操作、进程控制等,它是操作系统内核与应用程序之间的桥梁,使得应用程序能够在受控的方式下访问操作系统提供的功能和服务。
系统软件部分 :包括内存管理、进程管理、文件管理和驱动管理等模块。内存管理负责计算机内存的分配、回收等操作,确保各个进程能够合理、高效地使用内存资源;进程管理则对进程的创建、撤销、调度等进行控制和协调,使得多个进程能够有序地运行,提高系统的并发执行能力;文件管理负责文件的存储、读取、写入等操作,为用户和应用程序提供方便的文件存储和访问服务;驱动管理则是对各类硬件设备的驱动程序进行管理和调度,使得硬件设备能够正常工作并被操作系统及应用程序所使用。
驱动程序 :如网卡驱动、硬盘驱动和其他驱动,它们是操作系统与硬件设备之间的接口软件,负责控制和管理特定的硬件设备,使得操作系统和应用程序能够通过驱动程序与硬件设备进行通信和交互,完成各种硬件操作。
硬件部分 :是计算机系统的基础,包括网卡、硬盘等硬件设备,它们为计算机系统的运行提供了物质基础和计算、存储、通信等能力。
6.3 操作系统的必要性
对下 :可以管理好软硬件资源,对计算机系统的各类资源进行统一的管理和调度,确保资源的合理分配和高效利用,避免资源的浪费和冲突。
对上 :能给用户提供便捷、稳定、安全、高效的运行环境,用户和应用程序无需直接与硬件打交道,而是通过操作系统提供的接口和功能来使用计算机资源,大大降低了使用计算机的难度,提高了计算机的可用性和可靠性。
6.4 操作系统与管理
管理的本质 :管理的本质是通过数据来进行管理。在操作系统中,各种资源和对象都可以通过相应的数据结构和信息来进行描述和管理,例如通过进程控制块来管理进程的状态、信息等。
结构化管理 :可以采用链表、数组等结构来对管理对象进行组织和管理。比如使用链表来管理进程列表,方便对进程的增删改查等操作,提高管理的效率和灵活性。
---------------------------------------------------------------------------------------------------------------------------------
上述内容看不懂没关系,这里我在详细解释一下:
例子一:
首先我们要搞明白什么叫做管理者?举个例子,学校里面有校长,老师和同学,同学自然而然便是被管理者那么老师是属于什么?管理者还是被管理者呢?都不是,老师是属于决策的执行者,而决策是由校长制定的,因此在这个例子中,校长是管理者。同理,对于我们的操作系统,驱动程序还有硬件,也符合这三者的关系,我们的操作系统就相当于是管理者,操作系统将命令下达后传达给驱动程序,再由驱动程序传递给硬件。
我们再回到上述例子,管理者是如何知道我的相关数据的呢?管理者要管理被我们管理者,但是他们并没有见过我的面,他是如何管理的我呢?
结论就是见面并不是本质,获取你身上的有效信息才是管理的必要条件。在上述例子中,校长通过辅导员协助收集我们的有效信息,进而可以实现对我们的管理。打个比方,以分宿舍为例,校委会通过老师来收集我们的生源地,将生源地比较靠近的学生分到一起,避免分歧。这便是管理执行的一个例子。
因此我们得出一个结论,管理的本质就是对数据进行管理,管理的做法也就是先描述再组织。
描述可以理解为收集到我们的个人信息,在我们编程语言中便是结构体,这里的组织便是通过一系列的操作方式完成目的,这也就是为什么c++,Python,JAVA等语言为什么要提供类,为什么要提供容器技术,比如stl的原因。
这也就恰恰的解释了我们当时在设计学生管理系统的时候,为什么要用一个结构体来封装每一个学生单元。本质上就是要对数据进行描述!!!
因此对于我们操作系统而言,其内部一定存在着大量的数据结构,匹配着对应的算法,用于我们对数据的管理进行描述与组织。换句话说,如果想学习好操作系统,必须要先了解操作系统内的各种数据结构
例子二:
现在我们再举个例子来论述底层硬件驱动程序和操作系统的关系。假设我现在有一个银行系统,其分为了5个部分,分别为金库,桌椅,宿舍,食堂还有电脑。这5个部分就像我们计算机的操作系统里面的不同数据结构或者函数,你要干什么就调用相应的函数就可以了。比如我来到了银行想存钱,那我就去金库部门,假如我想到银行吃饭,那我就去食堂部门。但是林子大了什么鸟都有,人民群众中可能会有坏人,我们可以直接让人们直接把钱放到金库,然后再去电脑端自己手动输入去更新数据吗?这个是显然不现实的,因此我们的银行系统中会有一个一个的窗口,窗户里面有人来为我我们办理业务。不允许外部的人直接访问银行系统内部的相关数据。这个可以类比为我们计算机系统里面的驱动程序, 然而有些老年人可能不会存钱,有可能这些人不会写字,甚至不会整个操作流程,那如果让这些老年人直接去窗口办理业务的话会大大增加时间成本,因此大堂经理便发挥了重要作用。他们可以根据老年人的要求帮助老年人填写好单子,预约好窗口,减少窗口使用的成本,这也就是程序员存在的意义所在,需要将操作系统开发到普通群众可以拿来就能用!
倘若直接让一个小白去使用我们的操作系统,他是不会用底层的语言来操作系统进而完成他想操作的东西。此时就需要程序员在操作系统进行各种库的开发与调用,比如c标准库,c++标准库。那么在系统调用方面和库函数调用又有什么关系呢?实际上这些库和系统调用是属于上下层之间的关系,使用者通过操纵库函数来进行系统调用,而与操作系统进行交互的唯一方式也只能通过操作系统来调用!
想必到这里,读者应该对操作系统有了初步的理解与认识,下一篇文章中我们将继续讲解进程的概念!