软件是如何控制硬件的

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件是如何控制硬件的关于这个问题,我已搜索了大量资料,但我的疑问是:1代表高电平,0代表低电平,那么1到底是如何代表高电平的?0又是怎么代表低电平的?都说软件通过二进制数0,1控制硬件,0,1也不过是数学符号,说到底还是虚拟的信号,这些虚拟的信号时如何控制实体硬件的?都说0,1控制电路的关和开,0,1这两个虚拟的数学符号如何控制实体的电路的开和关?计算机组成原理,计算机体系结构二进制在内部就是高低电平,通过时钟脉冲组成时序控制信号,经过控制器,微控器等一些部件控制门电路的开合,完成各种操作。而软件呢,其实也就是一块块的,什么操作调用什么代码,然后把转换为底层的代码让硬件执行软件是如何控制硬件的?软件在工作的时候也是实体,软件的实质就是电流信号,用电压的高低代表不同是信息,用这些电流信号去控制逻辑电路的通断,靠逻辑电路的通断来控制硬件的工作。说到底软件就是起到一个开关信号的作用,开关要工作,必需保证硬件是加电的,没有接通电源的硬件是无法用软件来控制的。就好比没有插上电源的台灯,你怎么按开关都是不会亮的。任何软件在运行前都要有一个将其转化为电流信号的实体化过程,你写在纸上的软件代码是永远也不能控制硬件的。早期电脑用人工接线输入程序,相当于用人体的力量将软件代码实体化为电信号;现在我们用的软盘、硬盘是通过磁头将程序代码转化为电信号,光盘需要通过光头将程序代码转化为电信号等等。简单来说,就是C语言会被编译成机器语言,由CPUI/O口输入,CPU其实只是做二进制加法运算。它本身不会去处理任何程序。通过基本的加法运算,将结果反馈会程序,程序通过这个值去控制其他硬件。你可以看到芯片其实有各种引脚,有些是8个一组的I/O,有些是控制中断器,有些是计时器,电脑给引脚正电平时,这些中断器,计时器就开始工作了。我的理解是这样的:软件和硬件配合工作的过程,就好比司机开车。司机是软件,方向盘、排挡、油门、刹车、雨刮器等等就执行具体功能的是硬件。只有在司机软件的有序组织和正确命令之下,硬件才会做出正确的动作,完成正确的任务。没有软件,再好的硬件也只是死的摆设而已。具体来说,以通用计算机系统为例:内存、CPU、显卡、显示器、声卡等等这些硬件通过主板(主板本身也是硬件)接口和数据线链接合理地组织在一起之后,加载电压,通过软件的组织和协调,各个硬件执行相应的任务。操作系统(例如Windows7/8)就是一个最大的软件系统。我们看到的软件,都有漂亮的界面和颜色,选择软件上的选项和按钮,然后执行,软件就会按照编程时设定好的逻辑产生电流控制信号,通过数据线传道到相应的硬件那里,去控制逻辑电路的“接通”和“断开”状态,从而控制硬件执行相应的动作。每个硬件都有自己的地址和名称,软件发出的电流控制信号会准确地找到相关硬件,二进制代码的控制信号就是一些列0和1的组合。例如:软件想让显卡在显示器的某个区域显示红色,就会把显示区域的位置信息和颜色编码组合起来告诉显卡,显卡接到这个命令以后,就照章执行,把执行命令也是通过数据线传到显示器上,显示器接到控制信号后,在相应的区域显示红色。再比如我们要在软件上播放一首MP3的歌曲,就会选择这首歌,然后点播放按钮,这是软件界面上执行的动作。而软件后台执行的则是先通过地址去硬盘上读取这首歌的内容,把它临时存在内存中,然后把这首MP3的内容加上播放的命令一起组合成0和1的电流控制信号传给声卡,声卡接到信号后,处理声音,根据声卡硬件的工作流程,其处理的结果就会传到音箱硬件上播放出来。硬件本身可能是很复杂的,例如电脑的中央处理器CPU,上面集成了上亿个处理和计算单元。复杂归复杂没关系,软件控制它的原理和逻辑是很简单的,就是上面描述的发出电流信号去控制它计算单元的工作状态和接收计算结果就行了。计算机软件在计算机内部无非也就是一堆01代码,作用于硬件也是因为这些01代码,这相对比较复杂的举个例子说:打印机,它有自己的端口地址,当你点击打印的时候,系统会把这个指令传到它的端口,给它加上一组高低电压。安装软件的过程除了把软件拷到电脑上之外,剩下的还有给操作系统作个标记(在注册表内注册)系统为每个硬件设备留下了端口地址,软件作用于硬件首先是把指令传送到他的端口地址。而硬件的工作也无非是几个指令而已,对它而言就是几个高低电压组成的,用软件控制就是发给它几个特殊的01组合代码。软件的工作就是给这样的硬件编程。规定,什么样的操作用什么样的代码而已。计算机智能识别0和1,也就是高低电信号。它跟软件是通过I/O(即基本输入输出)进行通信(可以理解为触发,你可以想象成家里的电灯开和关)。而软件要想让硬件识别就必须要转换成0和1的高低电平,让CPU一条一条去执行。0和1称为计算机语言。所以不管你任何软件用何种语言编写的程序,它最终都要转换成0和1的高低电平让CPU处理。(你不理解的话可以把CPU理解成人的大脑,比如我想去关灯,那大脑就会告诉我去按下电灯按钮)就比如键盘上的数字按下代表相应的脉冲施加在特定位置,之后可以控制相应的显示和动作,这个我懂。但软件是通过大量代码实现十分复杂的动作,且它的核心是软件。我的疑问1,代码通过什么途径控制硬件(比如成像系统,数控系统),且如何给代码赋予相应的脉冲。简单说游戏软件,实现了大量复杂的显示和操作,它通过什么途径控制的。有人能解释一下吗?软件自上到下,有应用软件,系统软件,还有固化在硬件内部的指令。应用软件面对用户,一般不能直接控制硬件;系统软件预留有与应用软件的接口,能控制硬件。固定在硬件内部的指令是硬件启动时的代码和一些很常用的指令,执行速度很快。软件控制硬件的原理,CPU的内部的指令暂存器和数据暂存器读取到相关的指令代码,指令暂存器再根据指令让内部硬件完成相关操作,再接收下一条指令代码。软件的作用就是产生一系列这样的代码,完成软件的任务。比如Excel是应用软件,Windows是系统软件,最终送到CPU执行的是一系列的指令。你敲入的任何东西,最终就是通过类似的东西/机制储存的;所谓“指令”,其实就是“某个命令码“(一般叫机器码),这个”命令码”会改变CPU内部一堆“开关”的状态,以激活不同的电路如果CPU不过是一堆开关的话,它为什么能“听懂”类似“加法”“do...while”这类高大上的复杂指令、甚至做出office、photoshop甚至人工智能这样神奇的东西呢?这些高大上的语义,是怎么被电路所理解的呢?比如说,CPU,它根本上其实只会三招:与、或、非别看CPU只会这三板斧;可当它们巧妙的组合起来后(构造成计数器、指令寄存器等等等等再组合成CPU),就达到了图灵完备的要求,产生了质变而CPU指令集呢,则形成了另外一个强大得多的图灵机,这就是机器码(和汇编指令几乎一一对应);然后呢,诸如c/c++、java等高级语言,就是利用CPU指令集形成的、另一个更加强大的图灵机(编译器/解释器负责两种图灵机之间的翻译工作)。——而程序员们研究的,就是如何用编程语言这样一个强大的图灵机,去实现office、photoshop、wow甚至人工智能这样复杂的事物。——这也是一个层层模拟的过程。软件控制硬件,也是类似的原理。前面说过,程序本身就是高低电平的组合处理器(CPU)的执行语言属于软件的基本底层语言,通常的软件功能是由高级软件语言编程来实现的,高级软件语言通过一系列的转变,最终会转化成基本底层语言,从而被处理器识别并执行,从而实现了软件对硬件的控制过程。信号读取或检测---转换成可识别---CPU处理---发出指令---转换成可识别---执行

1 / 2
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功