档案信息网站建设的意义,渠道推广代理,wordpress 虎嗅2016,饰品企业网站建设个人主页#xff1a;Lei宝啊
愿所有美好如期而遇 冯.诺依曼体系 CPU#xff1a;运算器#xff0c;控制器
输入设备#xff1a;键盘#xff0c;麦克风#xff0c;摄像头#xff0c;鼠标#xff0c;网卡#xff0c;磁盘等。
输出设备#xff1a;显示器#xff0…个人主页Lei宝啊
愿所有美好如期而遇 冯.诺依曼体系 CPU运算器控制器
输入设备键盘麦克风摄像头鼠标网卡磁盘等。
输出设备显示器声卡显卡打印机磁盘网卡。
存储器内存
这些设备并不是随便连接起来的是由总线连接现在总线集成在主板上这些硬件只需要插入主板的插槽就可以实现连接设备的连接不是单纯为了连接是为了数据的流动能够让数据从输入设备流入内存从内存流出到输出设备就好像数据从磁盘加载到内存再从内存刷到显示器上一样如果硬件不连接数据无法从一个硬件到另一个硬件设备连接不是目的而是为了让数据流动的手段。设备之间数据流动的本质是数据在硬件之间进行来回拷贝拷贝的整体速度是决定计算机效率的重要指标。
而冯.诺依曼体系能够在如今还是主流是因为他的稳定性和效率都不错而且价格便宜。 那么第二个问题来了我们为什么需要内存直接外设和CPU交互不好吗
就像这样 我们加了内存之后看起来更耗费时间了但内存的存在一定是有他存在的意义 寄存器和缓存是集成在CPU上的
越靠近CPU的硬件越贵效率越高容量越小。
越远离CPU的硬件越便宜效率越低容量越大如磁盘。
而CPU和磁盘的效率差距非常大CPU太快磁盘太慢直接交互的话那么对CPU来说会造成效率上的极大浪费。磁盘将数据加载到CPU会很慢而CPU计算很快也就是CPU算出来了而且已经给了输出设备但是输入设备和输出设备反应不过来数据还没再次给到CPU并且CPU算出的数据输出设备还未刷新出去
那加上内存就不浪费了吗硬盘直接和CPU交互还省了和你内存交互的时间你凭什么说加上内存就效率高了?
这是因为我们在内存中加了预加载和缓存把硬件上的问题转换为软件上的问题只要有个好的操作系统那么就可以由操作系统判断预先把数据加载到内存上CPU需要时直接和内存交互然后计算出来的结果不给输出设备而是返回给内存在内存不忙时刷新到输出设备最后也就变成了CPU和内存交互。
这样计算机的整体效率就提高到了以内存效率为主。
当然如果你非常非常有钱可以把所有硬件全部换成寄存器这样的设备当然极快。 那么我们明白了数据传输时先从输入设备加载到内存上再由内存和CPU交互CPU算出来后给内存再由内存刷新到输出设备。
我们也就又有了个问题
为什么说程序要运行时要先加载到内存上呢
首先程序是不是可执行的二进制文件是文件就存储在磁盘上要运行就要先加载到内存上这是冯.诺依曼体系所决定的然后二进制文件由CPU计算后再给到内存结果由内存刷新。
就好像我们的QQ是不是个程序呢? 他要运行一定是在内存中由CPU执行我们在给别人发消息时由键盘输入内容加载到内存中经过CPU计算到内存由内存刷新到网卡中通过网络传输到别人的网卡上这个内容加载到内存中通过CPU解码再由内存刷新到显示器上。、 而硬件都是由操作系统进行管理操作系统是个进行硬件管理的软件其实本质也是可执行程序
它包括了内容管理文件管理进程管理驱动管理等 每一个硬件都有他们各自的驱动程序驱动程序可以驱动硬件也可以使其待机但是驱动只负责执行是否驱动硬件的指令由操作系统下达也就是说操作系统通过驱动来控制硬件。
而操作系统对硬件的管理是有一套逻辑的:
首先他要对硬件的属性进行描述定义一个struct结构体去存放硬件的属性操作系统要管理硬件是定义硬件数量的对象然后通过链表将他们连接起来在操作系统想要管理某个硬件时可以通过遍历这个链表找到对应的硬件然后他通过驱动程序去驱动。当我们不需要这个硬件卸载其驱动或者需要其他硬件而下载驱动时通过对这个硬件的链表的增删查改来管理这些硬件。
总结就是先描述再组织
描述硬件的属性然后通过定义硬件对象将他们用链表连接起来也就是组织起来这样就能进行管理。
就像是我们写的通讯录我们首先是对人的属性进行描述定义人的对象可以定义很多对象而后通过链表将这些联系人连接起来在我们需要查找或者删除某人时他通过对链表的增删查改来管理这个通讯录。
任何面向对象的语言都离不开这六个字一定是先描述对象的属性如类然后通过类去实例化对象而且不止一个对象然后我们通过容器也就是某种数据结构来组织连接这些对象对他们进行增删查改实现对他们的管理C语言也是如此。
这些就是将现实的实际问题进行计算机级别的建模过程转化成计算机能够认识的问题就像我们的操作系统去管理硬件。