计算机运行大致原理

        在当下,我们几乎无时不刻地在和计算机打交道。我们使用计算机打开各种软件来发送消息、打游戏、写文章。但是这些软件或者程序是如何在计算机上运行起来的?操作系统是什么?它在这里面发挥着什么作用?为了回答这些问题,我们先从计算机硬件的大致结构讲起。

冯诺依曼结构

        下图中的冯诺依曼结构就是我们使用的计算机的硬件结构,由五个部分组成,是经济而高效的结构。存储器指的是内存,运算器和控制器合起来就是CPU,输入设备涵盖的范围比较广,可能是键盘、鼠标、网卡,甚至是硬盘盘,输出设备同理,二者也被称为I/O设备。

        我们所说的运行程序,本质就是运行可执行文件,里面包含了指令,一般放在硬盘里。没有打开的文件都放在硬盘,要打开需要先加载到内存。为了方便讲解,别的我们先不管,我们只看可执行文件已经加载到存储器(内存)之后,开始运行程序的过程。

        运行程序的整个过程在控制器的控制下完成,控制器从存储器中读取并执行指令,控制器不说话,其它组件不知道要干什么。也就是说,接下来的这些步骤都是控制器让它们干的。输入设备输入数据到存储器,运算器从存储器中读取数据进行运算,然后把结果输入到存储器,存储器再把数据发给输出设备,输出设备输出。

        要注意两点:第一,这只是一般的运行过程,具体要看实际情况,有的程序不需要另外输入,数据直接从可执行文件里面读取,有的程序要先运算再输入然后再运算。第二,这只是大致的运行过程,实际运行中还有寄存器的参与,但是为了避免越讲越复杂,不过多展开。

        实际上,运算器内部也有存储数据的部分,为什么不将数据直接输入到运算器,或者将指令直接输入到控制器呢?原因是成本太高。存取速度越快的存储器成本越高,容量越小。cpu的运算速度很快,需要同样快的存储器才不会拖慢运算的速度,这样的存储器存储空间很小,成本也很高,不适合用来存储大量的数据,因此需要由内存来存储不需要马上进行运算的数据。简单来说,cpu和内存的关系就好比人和办公桌的关系。

       有了这个结构只能执行01指令,想要使用计算机运行软件还需要操作系统。操作系统本身也是软件,里面的程序也是在这个结构下执行。

操作系统

操作系统的概念

        我们一般认为计算机中为我们提供交互界面的软件就是操作系统。比较常见的有安卓,Windows等等。实际上,它们内部还有内核和外壳之分。举个简单的例子,市面上的安卓手机有很多种,它们操作系统使用方法并不完全相同,大小和性能也有些区别。这是因为它们并不完全是安卓系统,而是基于安卓开发的操作系统。安卓再加上不同的外壳就成了不同的操作系统,安卓系统则是基于Linux内核开发的。将所有外壳都去掉后,剩下的那个最基本最核心的部分就是内核,如果没有另外说明,我们接下来说的操作系统就是指这个内核。

操作系统的作用

        如果我们简单地从电脑使用者的角度来理解,操作系统的存在是为了让我们更方便地使用计算机。有了操作系统,我们可以通过图形操作界面或者命令来使用计算机,而不是用01代码。也就是说,操作系统可以翻译我们的操作或命令,让计算机知道我们要干什么。但从开发者的角度,我们还应该知道,操作系统还有着管理硬件资源的作用。

       计算机通常情况下要运行很多程序,在运行这些程序的过程中,谁先使用cpu?内存的这个部分是哪个程序在使用?什么时候收回来?如果不能管理并分配好硬件的资源,程序之间很容因为共用或争夺硬件资源发生导致系统崩溃、数据损坏。这些核心硬件资源的分配与管理都是操作系统在处理。操作系统不会直接管理硬件本身,而是使用链表存储不同硬件的信息和指向驱动程序的指针,通过处理信息和调用驱动程序对硬件进行管理。

        运行程序本身并不需要多少流程,操作系统会自动给程序分配好CPU和内存的资源,之后便可以开始运行。但要通过程序使用硬件就不一定了。比如我们的程序中需要在屏幕上输出一句话,那肯定要用到显示器,通过前面的讲解,我们知道这需要操作系统来帮忙。但我们并不能直接控制操作系统,操作系统大部分情况下也不能直接控制硬件,这中间有许多过程。不同的系统细节上有所不同,不过大致上是差不多的,如果是Linux系统,则需要下面这些过程:

        从图中可以看出,操作系统需要通过驱动程序才能控制硬件(当然有些情况下是可以直接控制的,这里不再展开),这是因为同一种硬件虽然功能相同,但也有很多种结构,例如,所有显卡驱动都支持“显示图像”指令,但内部实现因芯片而异。那么在C语言程序中,输出一句话具体是怎么个过程呢?答案是用printf函数,当然我们的眼界不能止步于此。printf函数来自头文件stdio.h,它就是C标准库中的一个头文件,也就是说,printf函数源自C标准库,我们使用printf函数,就是通过C标准库去使用系统调用接口,间接控制操作系统,操作系统再调用显示器驱动程序,最终让显示器输出。

        至此,我们就大致了解了计算机的运行原理,底层执行程序的核心硬件结构是冯诺伊曼结构,软件部分是以操作系统为中心,分层管理,层层调用,最终控制并管理所有硬件。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值