软件与硬件之间的交互流程

昨天晚上在思考“计算机软件和硬件是如何交互的”这一问题,也就是“电脑的软件如何将指令传达给硬件”。这个问题是我在2010年2月份开始思考的。前期无果,中间搁置了几个月的时间,这一次因为一个偶然的机会又激发了我对这一问题的思考。

电脑硬件:有CPU(中央处理器)、RAM(内存)、Hard Disk(硬盘)、BIOS(基本输入输出系统)等;

电脑软件:有操作系统,编译器,应用软件等;

其中最关键的是CPU和操作系统的交互。CPU拥有ISA(指令集),操作系统通过将高级语言编写的程序转化为汇编语言(能被CPU翻译成机器语言的特定汇编语言)后,再进一步转化为CPU能够识别的机器语言,CPU利用自身的指令集将二进制代码翻译为相应的指令。

这里面涉及到信息的传输,数字信号作为一种信息以电磁波或者电信号的形式传输的。以电信号为例,数字信号依靠电流的有无或电压的高低分别代表1或0,只要电流或电压不高于某上限值,都会被认为代表0;只要电流或电压不低于某下限值,都会被认为代表1,当然同一电路中下限值一定大幅度高于上限值,电流或电压略高或略低写并不影响其含义。

说到这里,回到计算机的硬件与软件的交互问题。软件是以硬件为载体的,在计算机中就是存储器,其中包括有硬盘、CMOS芯片、BIOS芯片、内存条、软盘、光盘等。构成存储器的存储介质,目前主要采用半导体器件和磁性材料。存储器中最小的存储单位就是一个双稳态半导体电路或一个CMOS晶体管磁性材料的存储元,它可存储一个二进制代码。由若干个存储元组成一个存储单元,然后再由许多存储单元组成一个存储器。 所以,与其说软件与硬件的交互,不如说,从一开始软件就是硬件的一部分,它是以二进制代码的形式通过硬件的半导体器件和磁性材料存储于硬件存储器中。如此,下面就好理解了。

在电脑上电后,根据电路、模电、数电原理,该通电的都通上电了,存储在硬件存储器中的信息由于有了“动力”,便开始工作了,信息以电压或电流的形式传输起来,实际上由简单的二进制的高低信号构成了复杂的物理动作,这些物理动作可以被叫做指令集(ISA)的东西所解释。可以理解为,物理动作就是0,1组成的机器语言,而指令集能够“翻译”机器语言,也许用“理解”更恰当,因为一般认为机器语言是机器能够直接听懂的语言,就像汉语是中国人能够直接理解的语言一样。我们也不是天生就懂汉语的,大脑在环境中不断适应过程中,形成了记忆,也可以说形成了“指令集”,对于传输过来的信息——汉语,我们可以很快的明白什么意思,并作出反应。指令集可以根据二进制信号明白对方的意思,作出加减乘除运算,然后进行存储或者传输等动作。完整的描述为:CPU从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译码。它把指令分解成一系列的微操作,然后发出各种控制命令,执行微操作系列,从而完成一条指令的执行。 例如,要求一个加法运算,算数逻辑单元(ALU,Arithmetic Logic Unit)将会连接到一组输入和一组输出。输入提供了要相加的数值,而且在输出将含有总和结果。ALU内含电路系统,以于输出端完成简单的普通运算和逻辑运算(比如加法和位元运算)。如果加法运算产生一个对该CPU处理而言过大的结果,在标志暂存器里,运算溢出(Arithmetic Overflow)标志可能会被设置(参见以下的数值精度探讨)。信息的传输和指令的执行都是以晶振周期为最小单位时间动作的。

每一个有思想的硬件都是有类似于CPU这样的芯片的。它们其中集成了一些指令集,可以听懂“别人的话”。如硬盘有硬盘控制器,处理器本身有控制器;CMOS芯片只有存储功能,对于硬件参数比对的工作还需要交给CPU来做。

操作系统之所以重要,是因为它是硬件与应用软件的中间人,它将通过自己的平台开发出来的应用程序解析为汇编语言和机器语言与硬件交互。

总结:计算机的发明是二十世纪最重要的事件之一。人类能够设计出这样的一个如此精密的机器足以体现出人类的智慧。再复杂的事物也是由最基本的东西所组成,计算机的复杂之处在于它的高速性与准确性,而这一切的实现是由最基本的电子管、晶体管、集成电路完成的,这些都是硬件。人类历史的又一大发明是第三代信息载体,它是在信息传播中携带信息的媒介,是信息赖以附载的物质基础,也是用于记录、传输、积累和保存信息的实体。包括以能源和介质为特征,运用声波、光波、电波传递信息的无形载体和以实物形态记录为特征,运用纸张、胶卷、胶片、磁带、磁盘传递和贮存信息的有形载体。 信息和计算机相依为命,没有信息,计算机便是一堆废铁;没有计算机,我们现在的时代因为信息处理的缓慢,定不会如此高速的发展。

简而言之:二进制信号(软件)在载体(硬件)中传输,经由固体电子元件(硬件)得以执行,然后又可以以二进制信号(软件)的形式存储在载体(硬件)中。

参考资料:

http://baike.baidu.com/view/955838.htm

http://baike.baidu.com/view/50088.html?wtp=tt

http://baike.baidu.com/view/22318.html?wtp=tt#3

http://baike.baidu.com/view/2089.htm?fr=ala0_1_1

(0)

相关推荐