文章目录
- 冯诺依曼体系结构
- 对冯诺依曼体系结构的理解——用QQ和朋友聊天时数据的流动过程
- 操作系统是什么
- 操作系统的作用
- 操作系统
冯诺依曼体系结构
冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。
数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。
我们所认识的计算机,都是有一个个的硬件组件组成:
输入单元:包括键盘, 鼠标,扫描仪, 写板等
中央处理器(CPU):含有运算器和控制器等
输出单元:显示器,打印机等
关于冯诺依曼,必须强调几点
- 这里的存储器指的是内存
- 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
- 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取
- 一句话,所有设备都只能直接和内存打交道
冯诺依曼体系结构规定了硬件层面上的数据流向,所有的输入单元的数据必须先写到存储器中 ,然后 CPU 通过某种方式访问存储器,将数据读取到 CPU 内部,运算器进行运算,控制器进行控制,然后将结果写回到内存,最后将结果传输到输出设备中。但是输入设备和输出设备相对于中央处理器来说是非常慢的,于是在当前这个体系整体呈现出来的就是,输入设备和输出设备很慢,而CPU很快,根据木桶原理,那么最终整个体系所呈现出来的速度将会是很慢的。
解释:当一个快的设备和一个慢的设备一起协同时,最终的运算效率肯定是以慢的设备为主,就如 “ 木桶原理 ” —— 要去衡量木桶能装多少水,并不是由最高的木片决定的,而是由最短的木片决定的,一般 CPU 去计算时,它的短板就在磁盘上,所以整个计算机体系的效率就一定会被磁盘拖累。所以我们必须在运行时把数据加载到内存中,然后 CPU 再计算,而在计算的期间可以同时让输入单元加载到内存,这样可以让加载的时间和计算的时间重合,以提升效率。
对冯诺依曼体系结构的理解——用QQ和朋友聊天时数据的流动过程
要使用QQ,首先需要联网,而你和你的朋友的电脑都是冯诺依曼体系结构,在你向朋友发送消息这个过程中,你的电脑当中的键盘充当输入设备、显示器和网卡充当输出设备,你朋友的电脑当中的网卡充当输入设备、显示器充当输出设备。
刚开始你在键盘当中输入消息,键盘将消息加载到内存,此时你的显示器就可以从内存获取消息进而显示在你自己的显示器上,此时你就能在你自己的电脑上看到你所发的消息了。
在键盘将消息加载到内存后,CPU从内存获取到消息后对消息进行一系列操作,然后再将其写回内存,此时你的网卡就可以从内存获取已经处理过的消息,然后在网络当中经过一系列处理(这里忽略网络处理细节),之后你朋友的网卡从网络当中获取到你所发的消息后,将该消息加载到内存当中,你朋友的CPU再从内存当中获取消息并对消息进行操作,然后将处理过的消息写回内存,最终你朋友的显示器从内存当中获取消息并显示在他的电脑上。
操作系统是什么
操作系统是一款软件,进行软硬件资源管理的软件!!!
操作系统的作用
操作系统将软硬件资源管理好(手段)、给用户提供良好的(稳定、高效、安全)使用环境(目的)
操作系统
我们第一眼看到的就是计算机实物,也就是计算机底层的硬件。这些硬件看似是一个个罗列出来的,但实际在底层都遵守冯诺依曼的组织形式。
硬件遵守冯诺依曼体系
而单单只有这些硬件是不够的,还需要有一个软件来对这些硬件进行管理。例如,内存何时从输入设备读取数据?读取多少数据?内存何时刷新缓冲区到输出设备?是按行刷新还是全刷新?这些都是由软件进行管理的,而这个软件就是操作系统.
问题:难道操作系统直接和硬件交互吗?
OS不信任任何用户,任何对系统硬件或者软件访问,都必须通过OS的手
操作系统主要进行以下四项管理:
- 内存管理:内存分配、内存共享、内存保护以及内存扩张等等。
- 驱动管理:对计算机设备驱动驱动程序的分类、更新、删除等操作。
- 文件管理:文件存储空间的管理、目录管理、文件操作管理以及文件保护等等。
- 进程管理:其工作主要是进程的调度。
而操作系统再往上就是我们所处的位置,在这里我们就可以用命令行或是图形化界面进行各种操作,这一层被称为用户层。
在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。
管理
用学校来举例:
- 学生(被管理者) —— 软件和硬件
- 辅导员(执行者) —— 驱动
- 校长(管理者) —— 操作系统
管理者和被管理者并不直接打交道,本质管理者是通过 “ 数据 ” 来进行管理的,管理数据,就一定要把学生信息抽取出来,而学生信息可以用一个结构体来描述,每一名同学创建一个结构体变量,然后利用指针把所有的同学关联起来,构成一个双向循环链表。操作系统并不和硬件打交道,而是通过驱动程序进行操作。
总结就是一句话:先把进程描述起来,再把进程组织起来!(即先描述,再组织)