目录
一、冯·诺依曼体系结构
1、初见结构
数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。
冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置。
如下图就是冯·诺依曼体系结构的基本结构。
我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。
2、对体系结构的理解
冯诺依曼体系结构看起来还是比较简单的。但是,在当时那个年代能够提出这样一个体系结构可是十分厉害的。在冯诺依曼体系结构之后,一些人也提出了其他的一些结构,但是直到现在,绝大多数的计算机制造商任然使用的是冯诺依曼体系结构。
冯诺依曼体系结构为什么能够被人们认可并且直到现在还在使用呢?为什么冯诺依曼体系结构是这样的呢? 下面我们就来一一解答。
~ 输入设备、输出设备、运算器和控制器:
首先,计算机的作用就是为了解决问题,而要解决问题,首先需要将数据或是问题输入到计算机当中,所以计算机必须要有输入设备。输入设备:键盘、磁盘、网卡、鼠标、摄像头等。
然后,计算机通过输入设备得到数据,数据在计算机当中进行一系列的算术运算和逻辑运算后,通过输出设备进行输出。当然,光有运算器还是不够的,还需要有控制功能,控制何时从输入设备获取数据,何时输出数据到输出设备等。所以,计算机就必须要有(运算器&&控制器:CPU)。CPU可以响应外部事件。
接着,计算机解决完问题后还需要将计算结果输出显示出来,所以计算机必须要有输出设备。输出设备:显示器、磁盘、网卡、各种打印机等。
上面的输入设备、输出设备、运算器和控制器在结构中的作用我们是能够很好地理解的。但是为什么不让输入设备将数据直接交给CPU,CPU再直接将结构交给输出设备呢?为什么还需要存储器呢?而这也正是冯诺依曼体系结构的精妙之处,它在结构中添加了一个用来过渡的存储器。
~ 存储器:
首先,我们要知道:存储器实际上就是内存。
一般来说,各种硬件的存储效率:CPU&&CPU内部的寄存器 > 内存 > 磁盘/SSD > 光盘 > 磁带。且它们之间的存储效率是数量级的差别。所以,即使是相邻的设备,效率的差别也是非常大的。
所以,在计算机的结构中,输入设备和输出设备相对于中央处理器来说是非常慢的,于是在当前这个体系整体呈现出来的就是,输入设备和输出设备很慢,而CPU很快,而且它们之间的差距不是只相差了几十或者几百,而是差了好几个数量级。根据木桶原理,那么最终整个体系所呈现出来的速度将会是很慢的。
所以我们就不能让输入设备和输出设备直接与CPU进行交互,而在这中间加入内存。内存在这个结构中的特点就是:它比输入设备和输出设备要快很多,但是比CPU又要慢。所以内存就处于慢设备和快设备之间的一个状态,是一个不快也不慢的设备,能够在该体系结构当中就起到一个缓冲过渡的作用。
根据木桶原理,现在的短板就是存储器了,但是CPU和存储器之间的交互效率可比CPU直接与输入输出设备交互的效率高了好几个数量级。这就大大提高了计算机的效率。
作用原理:我们可以预先将外设的数据加载到存储器中,这样CPU在读取数据时可以直接从存储器中读取。CPU处理完数据后又写回内存当中,然后内存再将数据输出到输出设备当中,最后由输出设备进行输出显示。
以上就是冯诺依曼体系结构的设计原理了。
3、总结
1、CPU读取数据(数据+代码)都是要从内存中读取。站在数据的角度,CPU不和外设直接交互。
2、CPU要处理数据,需要先将外设中的数据,加载到内存。站在数据的角度,外设只和内存直接交互。
3、不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)。
二、操作系统
1、概念
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。简单来说,操作系统就是一款进行软硬件资源管理的软件。
操作系统一般包括:1、内核(进程管理,内存管理,文件管理,驱动管理)2、其他程序(例如函数库,shell程序等等) 。
2、作用
1、与硬件交互,管理所有的软硬件资源。
2、为用户程序(应用程序)提供一个良好的执行环境。
操作系统对下通过合理的管理软硬件资源,对上为用户提供稳定的、高效的、安全的、的执行环境。
如下图,计算机体系结构图:
那操作系统是怎么进行管理的呢?
管理的本质是对被管理对象的数据做管理,操作系统并不是直接对计算机中的各种硬件进行决策管理,而是通过数据进行分析,最终做出决策,再由驱动执行,从而达到管理的效果。
所有的管理,本质是对数据做管理,管理的方法是先描述再组织。
说明:1、描述:如用struct、class对对象进行描述。2、组织:利用链表等数据结构将数据组织起来,统一管理。
那操作系统究竟管理些什么呢?操作系统主要进行以下四项管理:
1、内存管理:内存分配、内存共享、内存保护以及内存扩张等等。
2、驱动管理:对计算机设备驱动驱动程序的分类、更新、删除等操作。
3、文件管理:文件存储空间的管理、目录管理、文件操作管理以及文件保护等等。
4、进程管理:其工作主要是进程的调度。
而操作系统再往上就是我们所处的位置,在这里我们就可以用命令行或是图形化界面进行各种操作,这一层被称为用户层。但操作系统为了保护自己,对上只暴露了一些接口,而不会让用户直接访问操作系统,这一系列接口被称为系统调用接口。
但是系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。