=========================================================================
个人主页点击直达:小白不是程序媛
Linux专栏:Linux系统化学习
=========================================================================
目录
冯诺依曼体系结构
组成介绍
CPU和内存
以使用微信发消息为例理解冯诺依曼体系结构
操作系统
冯诺依曼体系结构
随着世界上第一台计算机ENIAC(埃尼阿克)的诞生,人类顺利进入计算机时代。但是早期的计算机都是由各种电路和电路板组成非常的单一,只能解决一些简单的问题。用计算机来解决各种复杂的实际问题问题的需求越来越高级,时间的推移计算机伴随着人类技术的进步更加的高级。到现在我们常见的笔记本计算机,不常见的服务器计算机,大部分遵守冯诺伊曼体系结构。
组成介绍
输入设备
向计算机输入设备和信息的设备。是计算机与用户或其他设备通信的桥梁。输入设备是用户和计算机系统之间进行信息交换的主要装置之一。
键盘,鼠标,摄像头,扫描仪,光笔,手写输入板,游戏杆,语音输入装置等都属于输入设备。
输出设备
输出设备是计算机硬件系统的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设备操作等。也是把各种计算结果数据或信息以数字、字符、图像、声音等形式表现出来。
常见的输出设备有显示器、打印机、绘图仪、影像输出系统、语音输出系统、磁记录设备等。
存储器
存储器的主要功能是存储程序和各种数据,并且能够在计算机运行过程高速、自动地完成程序或者数据的存储,存储器是有记忆的设备,而且采用俩种稳定状态的物理器件来记录存储信息,所以计算机中的程序和数据都要转换为二进制代码才可以存储和操作。
就是我们常说的内存
运算器
计算机中执行各种算术和逻辑运算操作的部件。运算器的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作,亦称算术逻辑部件(ALU)。
控制器
控制器又称为控制单元(Control Unit),是计算机的神经中枢和指挥中心,只有在控制器的控制下,整个计算机才能够有条不紊地工作、自动执行程序。
控制器的工作流程为:从内存中取指令、翻译指令、分析指令,然后根据指令的内存向有关部件发送控制命令,控制相关部件执行指令所包含的操作。
控制器和运算器共同组成中央处理器(Central Processing Unit),CPU是一块超大规模集成电路,是计算机运算核心和控制核心,CPU的主要功能是解释计算机指令以及处理数据。
CPU和内存
根据上面图片我们可以观察到,只有CPU和内存之间的数据交换是双向的。像输入设备和输出设备只能接收CPU处理好的数据。我们又知道计算机里几乎所有的设备都有存储数据的能力!那为什么不直接将输入输出设备和CPU直接相关联,而是靠内存这一媒介呢?
根据上面的存储分级图,越往上内存容量越小、响应时间越快,相应的造价就越贵。
从经济情况层面来考虑,如果都使用高级别的存储设备来组成计算机,成本过高计算机一定很贵不能造福人类;反之,如果都是用低级别的存储设备来组成计算机,成本虽然低,但是性能很差基本都用不了。
从木桶理论来考虑,如果将低级别的存储设备和CPU直接相关联,整体的效率会降低,高级别的存储设备CPU的性能无法完全释放,造成性能浪费。
根据上面两点内容,我们先将数据写入到内存中,使用数据时CPU从内存中拿去数据进行处理,最后将处理好的数据交给我们的内存或者输入/输出设备。
以使用微信发消息为例理解冯诺依曼体系结构
我使用输入设备键盘输入”你好“,内存从键盘中读取我们写入的数据;这其中我们要发送的消息并不只是单单的”你好“两个字,还有你接收人的各种信息,内存将所有的数据交给CPU;CPU将我们的数据处理打包好交给输出设备;输出设备网卡将我们的消息发送过去。
作为接收方的你,网卡输入设备接受到我们的信息;内存读取数据交给CPU;CPU将数据处理好交给输出设备;这样就在的的输出设备显示器上可以看到我给你发的”你好“。
操作系统
上面是我们计算机底层的一个结构,我们在操作计算机时就是在对它们的操作,那是谁将它们组织起来供我们使用的呢?那就是操作系统。
概念
操作系统是一款软件,进行软硬件组员管理的软件。
- 内核(进程管理,内存管理,文件管理,驱动管理)(宏观层面)
- 其他程序(例如函数库,shell程序等等)(微观层面)
设计操作系统的目的
- 与硬件交互,管理所有的软硬件资源
- 给用户提供安全、稳定、高效的良好环境
操作系统管理的核心
- 进程管理
- 内存管理
- IO管理
- 驱动管理
操作系统如何管理硬件?
- 先描述起来,用struct结构体
- 在组织起来,用链表或其他高效的数据结构
总结
- 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统
- 调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。
- 一个用户如果想访问非常底层的数据或者硬件,必须贯穿上图整个计算机层状结构。也就意味着必定调用系统调用
- 库函数和系统调用之间是上下层的调用和被调用的关系,库函数在上,系统调用在下。
今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,您的支持就是我前进的动力!