下沙网站制作,维迪wordpress,wordpress加群插件,形容网站做的好的词语目录 编辑 1.关于计算机的体系结构 1.1 冯诺依曼体系结构的诞生 2.冯诺依曼体系结构 2.1 cpu:运算器#xff1a;更多的是让cpu具有特殊的数据计算功能#xff1a; 2.2 控制器 2.3输入设备 2.4输出设备 3.计算机各个硬件设备之间的关系 4.内存与计算机效率 5.关于为什么总说… 目录 编辑 1.关于计算机的体系结构 1.1 冯诺依曼体系结构的诞生 2.冯诺依曼体系结构 2.1 cpu:运算器更多的是让cpu具有特殊的数据计算功能 2.2 控制器 2.3输入设备 2.4输出设备 3.计算机各个硬件设备之间的关系 4.内存与计算机效率 5.关于为什么总说程序运行时要现将程序加载到内存 6 图示数据文件如何在不同体系之间流动 7.关于计算机软件层面操作系统 8.操作系统向下①关于驱动程序 9.②生活中的管理映射操作系统对计算机资源的管理 9.1 生活中的管理实例 9.2 计算机对硬件的管理 10. 操作系统向上服务 10.1系统调用接口 10.2 用户操作接口库封装 1.关于计算机的体系结构
最简单的计算机模型输入--计算--输出
计算机有各种各样的硬件显卡、硬盘、键盘等这些能够看到 和软件看不到的组成而所有的硬件单元都要由一定的体系结构组织起来才能形成我们的计算机软件也是由一定的软件结构组织起来。计算机有很多很多的组织方式也就是体系结构被保留的叫做冯诺依曼体系结构。
1.1 冯诺依曼体系结构的诞生
历史在计算机诞生之前人们在计算的精度和数量上出现了瓶颈对于计算机这样的机器的需求就十分强烈冯·诺依曼的逻辑和计算机思想指导他设计并制造出历史上的第一台通用电子计算机。他的计算机理论主要受自身数学基础影响且具有高度数学化、逻辑化特征对于该理论他自己一般会叫作“计算机的逻辑理论”。而他的计算机存储程序的思想则是他的另一伟大创新通过内部存储器安放存储程序成功解决了当时计算机存储容量太小运算速度过慢的问题。引自百度百科 冯诺依曼 第二次世界大战期间美军要求实验室为其提供计算量庞大的计算结果。于是便有了研制电子计算机的设想。面对这种需求美国立即组建研发团队包括许多工程师与物理学家试图开发全球首台计算机后世称作ENIAC机。虽然采取了最先进的电子技术但缺少原理上的指导。这时冯·诺依曼出现了。他提出了一个至关重要的方面计算机的逻辑结构。冯·诺依曼从逻辑入手带领团队对ENIAC进行改进。他的逻辑设计具有以下特点
1将电路、逻辑两种设计进行分离给计算机建立创造最佳条件2将个人神经系统、计算机结合在一起提出全新理念即生物计算机。
即便ENIAC机是通过当时美国乃至全球顶尖技术实现的但它采用临时存储将运算器确定成根本故而缺点较多比如存储空间有限、程序无法存储等且运行速度较慢具有先天不合理性。冯·诺依曼以此为前提制定以下优化方案
1用二进制进行运算大大加快了计算机速度2存储程序也就是通过计算机内部存储器保存运算程序。如此一来程序员仅仅通过存储器写入相关运算指令计算机便能立即执行运算操作大大加快运算效率。引自百度百科
2.冯诺依曼体系结构 计算机在硬件上被划分为五大单元
中央处理器运算器、控制器也被叫做芯片输入设备 、输出设备、内存 2.1 cpu:运算器更多的是让cpu具有特殊的数据计算功能 比如在游戏王者荣耀中移动游戏人物就是坐标的运算在打架时蓝量血量的减少增加本质上就是对蓝量血量的重新计算后再刷新到人物模型上。如果爆发非常复杂的团战就涉及到多个人物的状态计算计算机就疯狂计算不过这个过程被包装起来的所以所有问题要计算机解决都要能转换成计算机可以计算的问题。一类是加减乘除常规运算一类是逻辑运算。所以运算器就主要做算逻运算。
2.2 控制器
更多的协调协调设备之间cpu之间的信息流动比如一些指令操作。
2.3输入设备
计算机中除了cpu和存储器剩下的都是设备。显示器鼠标摄像头网卡显卡 声卡等每个设备都有1不同1的品牌比如硬盘三星、镁光等等所以计算机是分别有擅长造这些设备的厂家打造的设备按照冯诺依曼体系组织起来的合起来变成新的品牌就是电脑品牌。这个就说明每一个设备都是独立的物理设备。最典型的输入设备键盘、摄像头、鼠标、网卡、磁盘
2.4输出设备
和输入设备定位类似也是独立的声卡、显卡、网卡、磁盘、显示器、打印机等
二者对比不难发现有些设备只做输入有些设备只做输出有些设备既可以做输入又可以做输出。 比如磁盘当我们将磁盘中的内容输出将数据写入既输出又可输入。
这里的存储器指的是内存不是测盘内存有个特点掉电易失性存储介质
硬盘永久性存储介质所以不叫存储器叫做输入输出设备
3.计算机各个硬件设备之间的关系
那么如果我们要通过计算机发送信息我们在输入设备上键盘上敲下字符先不谈发送这个信息首先应该在计算机内部应该可以通过某种方式来到和网络相关的设备比如网卡那么消息才能被发送。那么设备和设备之间是独立的所以设备和设备之间应该要存在某种物理的方式让数据可以在设备之间流动。所以设备之间是连接起来的通过线系统层面叫总线总线的分类连接起来 现在所有的线都被集成在主板上了对于cpu,磁盘有对应的插槽插上过后就可以连接主板上有很多设备线路所以设备之间信息得以流转至少设备之间互相通信是可以做到的所以设备之间是连接的但是各设备互相独立。 设备的链接不是目的不是为了连接而连接是通过连接手段达到设备之间信息流动的目的。所以键盘敲下字符显示器可以拿到信息进行显示。
本篇文章是初次探索所以仅仅考虑下图中的蓝色线路也就是只探讨设备之间信息的流动
比如说输入设备是键盘将数据拷贝到内存
中央处理器让设备写暂停这些叫控制信号。 用户将数据给输入设备输入设备给存储器存储器给cpu,处理给存储器给输出设备展示给用户。
4.内存与计算机效率
数据在设备之间流动实际上设备之间会进行数据的来回拷贝。将数据从一个设备搬到另外一个设备。拷贝的整体速度是决定计算机效率的重要指标。设备到设备之间设备到数据之间拷贝数据速度的快慢就决定了计算机的效率。
计算机现在能够被家家户户使用的原因首先是产品性能稳定其次这个商品的消费负担对于一个家庭来说可以负担也就是价格便宜。很早的计算机是非常昂贵的。
如果我们简单描述一些计算机 那么存储器的作用和存在意义是什么呢
首先为什么体系结构中存在内存
计算机中存在一个存储的金字塔 距离cpu越近效率越高写入快造价越高单体容量越小性价比不高
cpu是皇帝寄存器就是苏公公效率非常快几乎要赶上cpu.
400-800只可以买到4-5g内存条 400-800可以买到1T到2T的固态硬盘。 所以可见内存的成本是要更高一些的。
那么如果没有内存这块按照我画的那个结构来讲应该计算机应该更稳定因为体系结构简单效率更快因为数据从输入设备来到cpu直接计算。但是问题在于输入输出这些叫做设备磁盘等都离cpu很远但是cpu处理数据能力很快
那么最后我们计算机的处理效率就会取决于这些满的外设的效率导致整机的效率变慢就像一个急性子和一个慢性子搭档最后做一个项目的工期是有慢性子决定这非常像我们的木桶原理应该桶可以装多少水完全取决于最短的一边有多高 所以如果二者直接相连就会拖累计算机的效率。cpu会一直处于等待停止状态。
cpu是纳秒级别单次运算输入设备是毫秒差100w倍只是一个举例数据不准确外设跟不上那么解决办法就是在二者直接补充一个设备内存,定期刷新数据给cpu,保证计算机速度不以外设速度作为计算机速度标准以内存为标准。
但是外设的数据处理能力不变而后原先cpu可以直接访问输入输出现在又多一个中间商本来原先就慢现在多了一个内存坎为什么不是反而更慢而是更快。
内存把输入设备的数据在cpu还没有需要这个数据的时候就将数据搬到内存了cpu再读取就直接从内存取输出数据数据直观从cpu输入到内存然后接着处理其他事内存再将数据慢慢刷新到输出设备数据提前从输入设备加载到内存叫做预存将数据从内存缓缓刷新到输出设备叫缓存。这样的机制如果内存处理很好cpu就只和内存交互就整体提高计算机效率。内存怎么预先知道cpu要处理什么数据这是操作系统要处理的工作可以由一定方式知道。
所以在硬件级别上可以把内存看做一个非常大的缓存介于设备和cpu之间从此完后数据得先放到内存CPU直接和内存进行交互不与外设打交道。就像老板跟着一个秘书有签字等先给秘书老板处理工作通过秘书。
所以有时计算机卡顿会通过添加内存条的方式提高效率。如果钱很多将内存用寄存器铺满甚至用寄存器做磁盘不考虑断电技术可以做到。但是很贵所以内存存在使得计算机价格便宜效率也很不错也就呼应了上文中为什么现在的计算机大面积可以普及。这才是冯诺依曼将效率问题转换为软件问题计算机价格向下称为经典的原因。 结论 拷贝速度越快速度越高数据先到内存从内存到cpu处理了从cpu到内存再到输出。 计算机的核心工作内存和cpu交互 5.关于为什么总说程序运行时要现将程序加载到内存
首先磁盘是外设内存是内存
我们在写C语言代码的时候一直说程序在运行的时候必须将程序先加载到内存。
原因程序编译好之后是一个文件文件存储在磁盘或者硬盘外设中程序中有对应的指令和数据语句等是由cpu执行所以程序必须从外设拷贝到内存中cpu读取数据只会从内存中读取
所以在数据层面cpu只和内存打交道外设也只和内存打交道。核心地位。所以程序运行时必须先加载到内存是由冯诺依曼体系决定。 6 图示数据文件如何在不同体系之间流动 7.关于计算机软件层面操作系统
计算机开机时第一个被加载的软件就是操作系统。开机等待就是在加载操作系统
操作系统是一个进行软硬件资源管理的软件
关键字软硬件 管理 软件
操作系统存在的意义
对下管理好软硬件资源---这是操作系统的手段
对上为用户提供一个良好的稳定高效安全的运行环境这是操作系统的目的。 底层硬件是按照冯洛伊曼体系结构组成
8.操作系统向下①关于驱动程序
驱动程序首先只有每个硬件比如声卡、网卡等设备只有其生产厂家知道这些设备该如何访问比如说想让设备启动终止离线或者对设备写入数据那么对于这些设备如何访问只有企业才才知道那么将访问这个设备的方式或者方法写成一个软件软件可以控制对应硬件或者将硬件的接口公开由其他人来编写控制这个硬件的设备。所以驱动程序就是这样一个软件 操作系统要使用硬件使用驱动程序提供的方法就可以读写关闭启动硬件。硬件软件打包给操作系统调用操作系统就调用驱动程序提供接口就可以操作硬件了。驱动程序只提供访问方法上层操作系统来决定硬件的动作通过驱动访问硬件设备实现。每一款硬件都要有其匹配的驱动程序这也就是为什么有时我们需要安装驱动程序。很多常见驱动是电脑内置的网卡驱动键盘驱动等等有时我们购买一些硬件可能没有对应的驱动我们的对应硬件厂家就会提供对应硬件的驱动下载地址
比如我们的游戏手柄Xbox 所以驱动实际上和普通的软件没有区别。有时我们的网络突然掉了声音没有了等通常也会采取更新驱动的方式解决。驱动在编写时也得按照操作系统的规矩来编写。
9.②生活中的管理映射操作系统对计算机资源的管理
操作系统是一个搞管理的软件我们再来谈谈管理和如何管理计算机领域
世界上只有两种人做决策 做执行 二者混合出行摆烂的就是既做决策又做执行
那么所谓的管理更多的就是做决策好的管理就要做出正确的决策。操作系统就相当于一个管理者的角色被管理者基本就是做执行。就是硬件扮演的角色驱动作为一个中间角色促进使得决策落地。
9.1 生活中的管理实例
用一个学院的例子来给大家举例 院长作为一个学校的真正的管理者负责指定和安排学院的相关工作包括学生和老师但是重点是如何管理好学生。对于院长来说管理工作并不是记住每一个人然后亲自来看管每一个学生。这就是说管理者和被管理者可以没有交集不用见面管理的本质是对人的信息和数据做管理。比如学号为多少的同学旷课多该采取什么措施那些学号的住那个楼层等等。管理者的核心工作是做出正确的决策但是也是根据信息根据数据来做出决策要保证决策的正确性比如要发奖学金肯定就要找到成绩最高的那几个同学进行发放发现有个学号老是显示旷课就该开除。
那么管理者和被管理者之间互不见面怎么实现通信信息传达呢这个就是辅导员中间层的作用开学第一天院长就会让辅导员收集每个同学的基本信息每个同学才有了自己的编号也就是学号、宿舍号、班级号等等。如果某一天某个学号的同学表现的太好或者太坏院长就让辅导员找找这个同学执行一下开除或者奖励工作。
随着学院越来越多的人也就说院长手里关于人的数据是非常多的。在院长层面来说此时对于不同的学生信息是不一样的管理起来就不怎么方便对人的管理就要转变为对数据的管理学生对于院长工作需要的信息类型是一样的也就说院长只需要学生关于学校属性的数据就像你工作后老板不关心你的学号这种属性数据是多少一样。那么对于每一个学生就有一个通用的属性描述了 struct student { int student number;//学号 //性别 //年龄 //班级 // // }; 但是有了这个对学生整体数据的描述觉得和拿着一张数据表的时候没有什么两样只是稍微对数据进行精确化了一些。所以 struct student { int student number;//学号 //性别 //年龄 //班级 // // struct student * next//创建一个指向下一个信息的指针 }; 院长创建了一个这样的学生链表数据结构将学院学生的数据都组织起来
对学生的组织管理决策工作也就变成了对学生数据管理的增删查改。此时的管理工作和效率变简单了。
这个过程也就是计算机对管理的一个建模过程中心思想为先描述再组织。
9.2 计算机对硬件的管理
那么映射到我们操作系统对应对底层硬件的管理来说也就是一样的了底层硬件对于操作系统来说信息比较多也比较庞杂操作系统将硬件的属性描述称为硬件的属性的结构体链表。然后根据设备命名通过驱动来操作我们的设备打开、关闭、链接等等。同时院长在管理学生的同时也要管理辅导员那么操作系统也要对驱动程序进行管理也是先描述再组织利用数据结构进行管理。 struct device { char name; char status;//状态 struct device* next; } 所以计算机操作系统管理硬件的方式为
①先将硬件的属性进行描述使用结构体操作系统是用c语言写的②再将其组织起来用链表或者其他数据结构队列、二叉树都可以方便管理。重点先描述再组织的建模过程建模将现实问题转换成计算机认识处理的问题这个过程就是计算机建模。 10. 操作系统向上服务
我们再来看一下操作系统存在的意义就是为什么要用操作系统呢
在早期的计算机中是没有操作系统概念的人们通过开关来控制计算机控制输入输出。
二进制--汇编语言--C语言--软件--操作系统
这是一个发展流程。 为什么要有操作系统也就是为什么要有操作系统的管理
对下管理好软硬件资源---这是操作系统的手段不然打游戏三分钟一个重启一会儿没有声音一会没有画面。那么操作系统的目的就有了对上为用户提供一个良好的稳定高效安全的运行环境这是操作系统的目的。那么我们就有了需要操作系统的理由。人工管理的计算机效率非常慢人作为是使用者体验感也不是很好。 操作系统对底层硬件的管理方式是先描述再组织那么对上是怎么样的呢
10.1系统调用接口
首先为了保证一个稳点、高效、安全的环境操作系统是不会让用户直接操纵操作系统操作系统里面存放在各种各样的管理好的大量的计算机软硬件数据直接让用户访问可能发生数据的丢失盗取、打乱等对于操作系统来说是非常危险的。如果用户不是机器主人可能就会发生数据的盗取。所以操作系统设置有系统调用接口必须通过系统调用结构来访问操作系统就像人到银行取钱都是到窗口取钱而不是让用户自己去金库拿。这非常危险。 这里的系统调用接口就是操作系统提供的一批接口只允许我们的用户通过系统调用接口来访问操作系统内部不允许用户直接访问。所以操作系统被设计好了就必须有系统调用接口的概念。
我们c中学过类在类中我们是有权限的对类内的数据一般设置为prevate,对于想让外部用户调用访问的写成公有的方法不想暴露的就写成prevate,要想使用类内数据只能通过公有方法和公共接口来调用public,这实质上是对类内数据的管理所以操作系统也就相当于一个巨大的内公共接口就是系统调用接口用于给用户访问操作系统。linux是用C语言写的这些系统调用接口实质上就是C语言设计的函数只是这个函数由系统提供叫做系统调用函数对应着有输入输出当然不是全都有当调用有输入输出的接口时输入就是用户想把数据交给操作系统处理输出就是想将操作系统数据给用户这就叫做用户和操作系统的交互。就像银行用户输入要取多少钱柜台给多少钱给用户。这是操作系统对数据方面的支持用户想知道当前多少进程操作系统也提供功能方面的支持所以我们需要操作系统同时操作系统也会给我们提供系统调用接口。 结论任何人都不可以直接访问操作系统内的任何数据必须采用操作系统。 10.2 用户操作接口库封装
那么用户可以绕过操作系统访问底层硬件吗或者用户可以直接绕过系统调用直接访问操作系统吗
答案是不可以的操作系统是真正的管理者不能有越过操作系统的动作必须通过操作系统。越级访问是不允许的。操作系统对上服务也必须提供系统调用接口系统中会在系统层面上提供上百个系统调用接口用户通过系统调用接口完成特点的操作。
例子printf
打印在显示器显示器是硬件printf并不是直接将数据打印在屏幕这个函数底层必须经过操作系统向底层硬件显示器打印操作系统为了内部环境的安全稳定不会让任何人直接访问操作系统所以print作为C语言函数内部肯定封装了系统调用接口。
未来使用函数函数会影响硬件的变化底层绝对封装系统调用。
那么用户可以直接调用系统调用接口吗
是可以的因为系统调用接口本身就是提供给客户的。
这些接口不是所有用户都会使用就像银行柜台的操作不是任何人都会爷爷每次取钱都会带上我因为操作爷爷不会流程爷爷也不理解。所以操作系统会提供一层服务层这个服务层就是爷爷身边的孙子一样因为接口函数返回值参数需要用户对操作系统有一定的了解所有就有人对这些系统调用进行封装形成对应的lib也就是库方便用户普通用户开发者等使用减少用户使用成本最典型的就是c/c中操作系统将访问显示器和键盘这样的操作封装成printf函数所以有c标准库的概念系统调用层可以有用户接口和库这样用户就不用使用系统调用了使用库shell外壳和指令操作就更方便了。用户对系统的使用成本也就降低了。 系统调用和库函数的差异
系统调用由操作系统向上提供 库函数由用户层提供二者是上下层关系。不一定所有库函数都会调用系统调用只要调用就是上下层关系。 这套结构适合所有操作系统
如果库在linux将系统调用封装在windows中也分装但是对上层只提供统一的接口假设是printf,在C语言层面上使用printf但是底层在不同的操作系统下面就采用不同的接口这个库是c的设计者提供。所以说某些语言具有跨平台性可移植性因为差异化在库中就屏蔽了。同样的c代码编译在linux下可以跑在windows下也可以跑这叫做跨平台性在库层面体现这意思为什么提供库的封装的原因。 11.结语 以上就是本期所有内容的讲解创作不易大家如果觉得还可以的话欢迎大家三连有问题的地方欢迎大家指正一起交流学习一起成长我是Nicn正在c方向前行的奋斗者数据结构内容持续更新中感谢大家的关注与喜欢。