目录
冯诺依曼体系结构
运算器
存储器
控制器
输入设备
输出设备
CPU
体系特点
实例分析
总结
操作系统
什么是操作系统
理解操作系统的管理特性
什么是管理
驱动层
管理方式
操作系统接口即系统调用接口
用户操作接口
总结
冯诺依曼体系结构
冯诺依曼体系结构一共分为五个部分:运算器,控制器,存储器,输入设备和输出设备
运算器
运算器负责运算从内存读取到寄存器中的数据,可将其看做一个数据加工场,即对寄存器中的数据做运算,这些运算分为算数运算和逻辑运算
存储器
这里的存储器指的是内存,内存具有掉电易失的特点。与内存相对应的是外存,具体就是指磁盘,磁盘具有永久的存储能力,一般我们创建的文件都是在磁盘中,常见有C盘和D盘。磁盘又属于外设,外设分为输入设备和输出设备,常见的外设包括磁盘和网卡。
控制器
产生指令所需要的控制信号,控制相关功能部件执行相应操作。
控制器和运算器再加上其他一些部件共同组成CPU。
输入设备
用来将人们熟悉的信息形式转化为机器能够识别的信息格式,常见的有磁盘和鼠标
输出设备
可以将机器结果转化为人们熟悉的信息形式,如打印机输出,显示屏输出
CPU
一般我们认为CPU是就相当于人的大脑,进行着精确的计算和分析,其实这种观点是不对的,真实的cpu是一个很傻的设备,它只能被动的接受传来的指令,然后进行运算,达到计算别人数据的目的。
所以cpu需要认识其他设备传来的指令,所以,cpu中有自己的指令集。所以代码编译的本质是什么?代码编译的本质就是将代码编程计算机能看懂并可以执行的指令。
体系特点
一般认为CPU的运算速率非常快,一秒钟可以计算上万次。然后内存的速度比较快,一秒钟可以达到上百次。然而,外设却非常慢,一秒钟仅可以运行十余次。
如果cpu直接从磁盘中获取数据的话,可想而知,计算机运行效率一定会失配。就像木桶原理所说的一样:决定CPU运效率的是读取数据的效率。
所以为了提高整机运行的效率,CPU仅从内存中读取数据,然后内存从外设中读取数据,这样既可以很好的解决CPU和外设速度不匹配的问题。
关系图如下:
、
其中:内存和磁盘之间数据的传输的过程,我们称之为IO的过程。
实例分析
假如我在山东,用QQ给远在北京的同学发信息,数据是怎样传输的(忽略网络)?
如图所是:
数据从键盘(输入设备)中写入,被写进内存,与此同时QQ程序被加载到内存中,CPU通过QQ将消息进行处理(加密等等),加密后的消息经过内存到达网卡(外设),然后进过网卡传输到网络中。消息被网络传输到同学的电脑的网卡(外设)上,然后数据来到对端电脑的内存中,对端电脑的QQ程序同时被加载到内存中,CPU通过QQ程序对接收到的消息进行处理(解密等等),经过解密后的消息经过内存显示在显示器(输出设备)上。
总结
1.CPU不和外设直接打交道,只和内存打交道。
2.在外设中,有数据需要载入,只能载入到内存中。
操作系统
什么是操作系统
操作系统是一个管理软件和硬件的软件。
理解操作系统的管理特性
什么是管理
在学校里,我们是被管理者,校长是管理者,但是我们见过校长吗?
相信很多人都谁说:no!那么,校长是如何对学生进行管理的呢?答案应该是通过数据对学生进行管理的吧!!!
但是,有同学会问:在家,我妈也管理我,但是她没有通过数据的方式来管理我。这里,我想说:那是父母在监管我们,而不是管理我们,管理的本质是对重大的事务具有决定权。
因而,我们得出结论:管理的本质是对数据进行管理。
而且,我们知道:真正的管理者是不需要和被管理者直接交互的。但是,管理者如何拿到做管理所需的数据的呢?
驱动层
在学校中,校长是管理者,我们是被管理者,校长和我们学生之间还有辅导员,辅导员负责获取学生的数据,然后传递给校长,校长通过辅导员传递过来的数据指示管理工作,然后辅导员落实校长的指示。
同样,类比计算机系统。我们知道:计算机底层是由一些硬件根据冯诺依曼体系结构组成的。操作系统就是用来管理这些软件和硬件的,但是,操作系统(管理者)并不和底层硬件(被管理者)直接交互的,所以在底层和操作系统之间,还存在着驱动层。驱动层的作用就类似于学校中的辅导员,负责将硬件所产生的数据传输给操作系统,然后根据操作系统的指令进行工作。
我们都知道:在学校中,每个学校都由不同的学院组成,每个学院都有辅导员。同样,我们的计算机也是由不同的硬件组成的,所以,不同的硬件就会存在不同的驱动程序,常见的有:磁盘驱动,鼠标驱动等等。
其中,如果你使用的是那种老式的鼠标,当刚插入到电脑时,电脑的右下角就会弹出一个窗口,这个窗口就是告诉我们用户:正在安装驱动程序。
接下来,我们用一张图来总结驱动层,底层,操作系统之间的关系:
管理方式
我们还是用校长的这个例子来说明问题:假如学校的学生很少,只有10多个人,那么,校长管理起来就很方便。但是,如果学校学生很多,有数千人,校长每天要做的就是学生各种各样的数据,长此下去,非常辛苦。但是,校长在当校长之前,是一个优秀的程序员!!校长通过分析数据发现:几乎每个学生的信息都是一样的,包括:姓名,性别,籍贯,学号,高考成绩,期末成绩等等!!于是,校长就发挥他程序员的优势:将这些数据组织起来。
校长先是把这些属性封装成一个类,如下所示:
struct student_ag
{char name[64];int age;char address[64];int telephone[13];int score;
}stu_eg;
然后,校长想:我可不可以把这个弄成一个链表
所以,校长就加了下一个节点的指针
struct student_ag
{char name[64];int age;char address[64];int telephone[13];int score;struct student_ag* _nect;
}stu_eg;
就这样,一个链表出现了,校长的管理成本也随之降低,只需要在链表中进行增删查改查改即可!!
这种管理数据的方式叫做:先描述,再组织;即先把对象用语言描述出来,然后再用数据结构将这些对象进行有效的组织。在我们学习Linux的过程中,先描述,再组织这六个字以后会经常出现
操作系统管理硬件的方式也是一样的。操作系统先把要原理的硬件属性描述起来,然后进组织。达到安全,高效的管理的目的。
操作系统对硬件的管理方式采取先描述,再组织的方式。对硬件的管理方式如此,对软件的管理方式亦是如此。
操作系统接口即系统调用接口
不知道大家有没有取银行办理业务的经历
我们来到银行,先去拿号,然后排队。排到我们时,我们做到窗口前,递过去我们的资料,然后开始办理业务。如果资料没问题,工作人员就为我们办理;如果资料存在问题,工作人员就认为不能为我们提供办理业务,就驳回我们的办理请求。
其实,银行是一个非常私密的机构,它本质上不相信任何人(因为它分不清谁是好人和坏人,所以它不相信任何人)但是,它也要对人民提供服务。这本是矛盾的两面,但是,我们可以通过窗口来实现银行对外的工作。
操作系统和银行是非常相似的。操作系统本质上是不相信任何用户的,不允许任何用户进入操作系统,但是操作系统并不能完全封闭自己而不对外提供服务。所以,操作系统设立了专门的接口用来和用户进行交流。用户通过接口来向操作系统发送请求,如果这个请求是合法的,那么操作系统就执行这个请求;但是如果是违法的,就把这个请求拦截在操作系统之外!!
一句话:操作系统仅暴露固定的接口来对外提供服务,这些接口就是操作系统给我们提供函数调用,任何服务都不能越过这些接口直接和操作系统交互。Linux操作系统是由C语言写的,所以这些接口本质上是C式接口
用户操作接口
我们接着用银行的例子来说明:
有一天,不识字的王大妈来银行存钱。存钱就要填表,还要签字,非常麻烦。但是在银行大厅里有这样的人,类似与大厅经理,她们帮助王大妈填好了表,然后大厅经理就到窗口前把钱帮王大妈存了起来!!
操作系统的系统调用接口使用起来同样也是非常难搞懂的。所以在操作系统接口之上,存在一些类似银行大厅经理角色的东西,叫做用户操作接口,其目的就是为了降低与操作系统交互的成本
这部分包括:用于满足用户指令需求的shell;用于满足编程需求的各种库,比如C/C++的lib;和图形化界面等等
总结
这些东西就组成了我们庞大的计算机组成体系。