组成计算机首先我们需要有计算器——也就是我们常说的cpu:
这是百度百科对cpu的解释:
是解释计算机指令以及处理计算机软件中的数据。CPU是计算机中负责读取指令,对指令译码并执行指令的核心部件。中央处理器主要包括两个部分,即控制器、 运算器 ,其中还包括 高速缓冲存储器 及实现它们之间联系的数据、控制的总线。中央处理器的功效主要为处理指令、执行操作、控制时间、 处理数据 。
地位:
在 计算机体系结构 中,CPU 是对计算机的所有硬件资源(如存储器、输入输出单元) 进行控制调配、执行通用运算的核心硬件单元。CPU 是计算机的运算和控制核心。计算机系统中所有软件层的操作,最终都将通过指令集映射为CPU的操作。
说白了它的功能就是执行指令、对数据进行计算。
计算器有了,我们还要有数据进行计算,数据从输入设备来:
输入设备非常常见——键盘、摄像头、网卡、磁盘、甚至你的手机屏幕都是输入设备。
现在外面可以向cpu传入数据,但是计算结果我是需要看到的,这就需要有输出设备了:
输出设备就类似于——显示器、磁盘、网卡、声卡音响等等。
好啦,这样我们就组装好了一台计算机,输入——计算——输出,不过这样的计算机是不合格的,他只能做一些简单的工作——效率很低。
有同学会好奇,我的cpu计算速度这么快,怎么会效率低下呢————因为数据的传输是很慢的,光cpu计算快是没用的,这就是短板效应。
我们的超级大牛就提出了一个解决方案:给这套体系加上一个内存。
这样cpu就不再接触输入输出设备了,这部分内存可以在cpu进行运算的时候,将下一个任务或者多个任务先从输入设备储存好,等cpu计算完直接将任务传输过去。
这样就通过内存去除了cpu传输数据的负担。
这个内存的传输速度是优于传入传出设备的。
反正内存就是用来储存数据的,为什么不能直接用磁盘来当内存呢,还是那句话,磁盘太慢了,不过相应的他也有造价便宜、空间大的优点。符合内存要求的相应的造价要高一些,而且就成本来说空间不会特别大。
前面cpu提到了高速缓冲存储器,这个速度快,但苦于造价贵无法大规模使用。
到这里我们也看出来了,我们这里几乎都是跟根据成本选择了性价比更高的设计。
举一个例子,你和你朋友在qq上聊天,数据流是怎么在这个体系里流动的。
我们只考虑硬件层面,不考虑qq软件的影响。
在第一台机器:
首先,我在键盘下敲下了“在吗?”(输入设备)
这个数据呗储存到了内存空间,等待cpu来处理。
然后数据返回到内存。
网卡(输出设备)将数据发送到服务端。
在第二台机器:
网卡从服务器将数据下载。
然后传给内存。
内存再给cpu进行解析。
解析后返回给内存。
最后显示器读取出这段消息。
你的朋友就接收到这个消息了。
举个与我们相近的例子:
简易的校园的管理
实现校园管理至少需要一下三种角色
校长——制定决策
辅导员——执行决策
学生———参与执行决策的过程
校长制定决策,让辅导员去执行,学生参与决策执行的程
管理:管理者和被管理者其实是不需要直接进行沟通的
如果不进行直接接触的话管理者如何对被管理者进行管理呢?
比如说,校长要是要决定是否要给学生加学分或则开除,只需要知道在总体中,那些是学习好的,那些是学习不好的就行了。
所以:管理者只需要被管理者的数据就可以对他进行管理了。
得出结论:
管理的本质:对被管理对象的数据进行管理。
管理者是通过辅导员获得的数据。
如果只有一两百个学生倒还好,花点时间能看出那批人比较优秀。但如果学生数量上千上万呢,这就不得不将他们进行组织了。
现实生活中校长会使用excel表格将学生的数据统计管理。
在编程的角度也有一个功能强大的工具帮助我们进行管理——数据结构。
通过集合,将学生从一个个个体变成了一个个数据对象,再通过链表将这些数据连接在一起。
(用链表的原因是因为操作系统确实特别喜欢用到这个数据结构)
将上面那个例子和操作系统对应一下:
校长——操作系统
辅导员——硬件驱动
学生———硬件
管理的本质:先描述,再组织
描述就是构建struct这个过程,组织就是调用数据结构中增删查改的过程。
先讲结论
操作系统的作用就是对软硬件资源进行管理,为什么要对软硬件资源进行管理呢?
操作系统对下通过管理好软硬件资源(手段),对上给用户提供良好(安全、稳定、高效、功能丰富的)的执行环境(目的)
上面的例子是为了更好的理解管理的这个过程,下面的例子是为了更好的理解操作系统。
再举一个更直观的例子——银行
在银行里面,有很多服务器电脑、桌椅板凳、仓库、员工宿舍。
这些是我们能直观的在银行里面看到的具体事物。这些东西又有相关的部门进行管理
我们的行长就通过这些部门对下面各个设施进行管理,这也就是操作系统的地位。
现在一个银行里面该有的都有了,可以开始迎客了吗?
比如说我来存钱,我能直接走到仓库里面去吗?我要办张新卡,能直接去服务器上填写信息吗?
这显然不能,我们需要将银行封装起来,这是为了保护银行也是为了保护每个用户权益不被侵害。
银行被封装起来了还是需要提供服务的,客人需要接口向你索要服务,因此银行还是会提供一些接口:
这就相当于现实生活中的银行柜台:
用户通过这些柜台向银行索要服务。
这样的过程具象在操作系统上就是:
用户调用操作系统提供的接口向操作系统索要服务,
操作系统调用硬件驱动,
硬件驱动再驱动硬件完成相应的任务,
最后用户获得了相应的服务。
银行封装的过程意思就是:操作系统会给我们提供良好的服务,但这不意味着操作系统就相信我们。
其实我们所学习到的stdio.h这类头文件、shell工具集、图形化界面,都是通过这些接口来完成工作的。