一、冯诺依曼结构体系
1、冯诺依曼结构体系简介
在现实生活中,我们常见的计算机,如笔记本,不常见的计算机,如服务器,大部分都循序冯诺依曼体系结构。
对于我们现在所认识的计算机,都是由一个个硬件组件组成
- 输入设备:键盘、鼠标、摄像头、网卡、磁盘
- 输出设备:显示器、磁盘、网卡、声卡、音响
- 中央处理器(CPU):含有运算器和控制器
2、为什么要有内存呢?
为什么要有存储器(内存)呢?我们将输入设备的数据直接交给CPU,不是更快吗,那么可以这样做吗?
当然,是一定可以的,但是有代价的。我们首先要知道输入、输出设备都称为外设,而外设一般是比较慢的,CPU却非常快,他们整体效率就会以外设为主,这与木桶效应是一个道理。
那么,因为有了内存的存在,我们就可以对数据做预加载,CPU以后在进行数据计算的时候,根本就不需要访问外设了,而只需要直接从内存里面那数据进行计算。
从而得知:在数据层面,一般CPU不和外设直接沟通,而是直接和内存打交道。
那么,在硬件层面,单机和跨主机之间的数据流是如何流向的呢?
这里我们举一个例子,我们在QQ与朋友聊天,发送一条消息,整个信息是如何在体系结构中流动的呢?
我们从键盘输入数据,预加载到内存,然后,数据通过CPU计算,计算后,把结果写回到内存,然后把一份结果显示到本地显示器上,另一份结果通过网卡传输到网络,再传输到对方输入设备上,也就是对方的网卡,再预加载到内存,通过CPU计算,再写回内存,再把数据刷新到输出设备,也就是对方的显示器中。
二、操作系统
对于数据我们都知道它会预加载到内存中,那么数据有很多怎么办呢?我们应该预加载哪一部分的数据呢?在预加载时,内存不够了,应该怎么办呢?CUP又是如何找到这些预加载的数据呢?这些都是硬件无法完成的。
此时,我们就需要一款软件来进行管理了,这个软件就是操作系统(OS)。
1、操作系统如何对硬件进行管理?
对于操作系统对硬件做管理的理解,我们举一个例子,我们把学校简化为三类人:校长、辅导员、学生。
在日常生活中,我们知道校长才是真正的管理者,而学生是被管理者。但是,对于管理者的校长并没有直接与学生进行沟通,有可能学生都没在学校见过校长。那么,校长是如何进行管理的呢?
校长只需要向下传达指令给辅导员,辅导员再向下传达指令,再交由我们的学生去执行。而校长只需要辅导员把他所管的学生的数据上交给校长,然后校长拿到你的数据,对你进行管理。
管理的本质:对被管理者对象的数据进行管理
那么,校长又是如何对这些数据进行管理的呢?
对于辅导员上交的学生数据,都有一样的属性,都有学号、姓名、成绩等信息,这时候我们就可以先把学生看成一个结构体,再以链表或其他高效的数据结构的方式对学生数据进行组织管理。
结论:校长在计算机内充当操作系统,辅导员充当硬件驱动,学生充当硬件。
由上面例子,可知,计算机管理的本质:先描述,再组织。
2、操作系统为什么要对软硬件进行管理?
上面我们知道了操作系统对硬件的管理,那操作系统为什么要对软硬件资源进行管理呢?
因为操作系统通过对软硬件资源的管理,需要给用户提供一个良好的执行环境。
也就是对下管理好软硬件资源,对上给用户提供良好的执行环境。
但是,操作系统给用户提供良好的环境,他会真正的相信我们吗?
当然,不会!!
下面,我们举个例子来解释这个问题:
对于银行体系,银行有电脑、座椅等硬件,分别由多个部门进行管理,行长只需要对各个部门的领导进行管理,各个部门的领导再向下管理自己的硬件,这就是行长对银行的硬件进行管理,他只需要做决策。但是,当我们去银行取钱的时候,银行会给我们提供良好的服务环境,但是行长并不信任我们,工作人员会直接带我们去仓库取钱吗?我们又是如何取钱的呢?
当然,不会!!银行设置了一个个服务式窗口,而这些窗口就由相对应的工作人员进行执行,这里工作人员就相当于软件,行长就需要对这些软件进行管理。行长管理好这些部门及工作人员,我们就能得到良好的服务环境。
而这些通过窗口来完成特定功能的,就相当于计算机的系统调用接口。
那么,什么是系统调用呢?
在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
系统调用在使用上,功能是比较基础的,对于用户的要求也是相对比较高,所以,有心的开发者对部分系统调用进行适度封装,从而形成了库,有了库,就更利于更上层用户或者开发者进行二次开发。