安装在计算机或者手机的硬件需要依靠驱动程序才能正常工作,驱动程序一般由硬件生产厂商开发。驱动程序直接操作硬件设备,同时给上层的软件提供接口,软件可以通过驱动程序暴露出来的这些接口实现对硬件的控制。

软件控制硬件的原理

软件基本上就是一些人为定义好的逻辑,它是一种思想,就像人的思想一样,所以CPU是人的大脑,而CPU里写的软件就是人脑中的思想。

我们这里说的硬件是一些CPU以外的各种电路,这些电路连接到CPU。有些电路是用来采集外界的信息,比如温度、湿度、电压、电流、光线、图像、声音、气味等等,将这些信息传递给CPU。而有些电路是接收CPU发出的指令,按不同的电路实现不同的功能。比如,发出一个关灯的指令,相应电路接收到该指令后实施关灯的动作。

下面用开灯的过程分别用人和软件硬件来作一个对比:

人: 我在家里看书,太阳落山了,天渐渐变黑,我发现看不清字了,这时我想到要去把灯打开,所以我走到开关边上,伸出手按下开关,这时灯亮了,我又可以继续快乐的看书。

软件硬件: 我家里有一套电灯控制系统,工作原理是,光线检测电路检测到光线变暗了,它发出一个信号告诉CPU光线已经较暗了,CUP收到该信息后,其软件逻辑为需要把灯打开,所以CPU输出开灯的指令,电灯控制电路接到指令后接通电灯的开关,这时灯亮了。

软件以什么形式存在,软件为什么能支配硬件?

软件中的命令(这些命令是最初编程设计的)最终都要转化为计算机可以识别的机器语言,就是我们通常听说的0101010101,这种长串的机器代码在硬件中反映成电脉冲或电信号,在超

大规模的集成电路中执行逻辑操作或运算(具体的,那就是电路知识了,最基本的原理都非常非常简单,简单的让你吃惊,即通路,断路),最终形成的现在运算速度惊人的计算机.

要理解的很清楚的话那就要求掌握多门学科的基础知识了.

你不理解软件为何能控制硬件,大概是因为你觉得软件是看不见摸不着的东西,如何能够控制硬件这样有形的实体吧。

其实问题很简单,软件在工作的时候也是实体,软件的实质就是电流信号,用电压的高低代表不同是信息,用这些电流信号去控制逻辑电路的通断,靠逻辑电路的通断来控制硬件的工作。

说到底软件就是起到一个开关信号的作用,开关要工作,必需保证硬件是加电的,没有接通电源的硬件是无法用软件来控制的。就好比没有插上电源的台灯,你怎么按开关都是不会亮的。

任何软件在运行前都要有一个将其转化为电流信号的实体化过程,你写在纸上的软件代码是永远也不能控制硬件的。早期电脑用人工接线输入程序,相当于用人体的力量将软件代

码实体化为电信号;现在我们用的软盘、硬盘是通过磁头将程序代码转化为电信号,光盘需要通过光头将程序代码转化为电信号等等。

这个问题看似简单,其实涉及到一些很底层的内容和原理。对于一般计算机爱好者来讲,又没有办法说明白,原因就是我们从来没有考虑过电路在物理上的实现。

计算机软件说到底,不过就是一些指导电子元件工作的指令序列,那么你一定又会问电子元件为什么会按这些序列工作呢?指令序列的在电路中的实质就是一些有规律且有一定意义的电脉冲,电脉冲控制电子元件的各种状态。工作过程非常复杂。最简单最基本的就是几个逻辑门电路的实现:比如“或”电路,“与”电路等等。通过将这些逻辑门电路的组

合和协同,就能实现电脑整体上的运算和处理能力。因为这是十几个数量级的基础电路的有机集合的对外的体现,如奔腾系列CPU集成了上亿个半导体元件,要想把各个元件的功能

彻底认知,是非常困难的。可以把它们比作每个人的活动合在一起就构成了社会

有单位,有抽象 正如抽象的生活用电网络,可以将一个用电器作为抽象单位,也可以将一个家庭作为抽象单位,一个抽象单位连接入网络,具体的接入方式,抽象单位完全本身实现,理想情况下每一功能模块即抽闲单位,都有接口,成为网络的一部分,向新的部分提供接口,理想情况下家庭电路有接口模块,可以任意扩展;每一但单元都有进出,任意个连接组合,总的单位也有进 和 出

软件可以发送命令

让cpu的某一引脚

发出高低信号

从而控制硬件

我对程序的思考

我也曾遇到过这样的问题,困惑了好长时间。每每到网上看, 都说的不是我想要的问题,或者说是组成原理书上有讲呀什么的。现在我明白了, 是按自己的想法明白 ,希望像我困惑过的正在困惑的能在这里得到答案,对你有所帮助

软件如何控制硬件呢??(以下仅是我个人理解, 不保证正确, 如果错的希望能得到您的指点。。先谢谢)

大家都知道。没有软件的硬件就是一堆废铁或“砂子”。您也知道cpu中有个叫做译码器的东东吧,您也知道我们写的程序要经过编译呀, 汇编呀,连接呀。最后生成可以被硬件

执行的二进制。可是问题来了,硬件能认识个啥二进制。这里也许是你不懂的地方。其实解释的关键也就在这里了。高低电压。脉冲的有无控制硬件您能够接受吧,而我们写的程

序(软件)其实都是以高低电压,脉冲的有无存储在磁盘上。或者以有无反射的形式存在光盘上。所谓的机器可直接执行的代码, 也就是二进制,译码器能理解。他能理解。cpu就能理解。cpu按照硬件设置和硬件特性,选择switch(也就是让哪一条导线是通路),以达到控制硬件。(能理解吗, 如果你还有什么疑问留言吧, 针对性解决可能会好点,)

实际上计算机把相当复杂的问题最终都会转化成加法(ALU)来实现,(太神奇了,我还理解不了。但我知 道,呵呵,这样有助于理解。

软件是如何控制硬件的

软件在工作的时候也是实体,软件的实质就是电流信号,用电压的高低代表不同是信息,用这些电流信号去控制逻辑电路的通断,靠逻辑电路的通断来控制硬件的工作。

说到底软件就是起到一个开关信号的作用,开关要工作,必需保证硬件是加电的,没有接通电源的硬件是无法用软件来控制的。就好比没有插上电源的台灯,你怎么按开关都是不会亮的。

任何软件在运行前都要有一个将其转化为电流信号的实体化过程,你写在纸上的软件代码是永远也不能控制硬件的。早期电脑用人工接线输入程序,相当于用人体的力量将软件代

码实体化为电信号;现在我们用的软盘、硬盘是通过磁头将程序代码转化为电信号,光盘需要通过光头将程序代码转化为电信号等等。

这个问题看似简单,其实涉及到一些很底层的内容和原理。对于一般计算机爱好者来讲,又没有办法说明白,原因就是我们从来没有考虑过电路在物理上的实现。

计算机软件说到底,不过就是一些指导电子元件工作的指令序列,那么你一定又会问电子元件为什么会按这些序列工作呢?指令序列的在电路中的实质就是一些有规律且有一定意义的电脉冲,电脉冲控制电子元件的各种状态。工作过程非常复杂。最简单最基本的就是几个逻辑门电路的实现:比如“或”电路,“与”电路等等。通过将这些逻辑门电路的组

合和协同,就能实现电脑整体上的运算和处理能力。因为这是十几个数量级的基础电路的有机集合的对外的体现,如奔腾系列CPU集成了上亿个半导体元件,要想把各个元件的功能

彻底认知,是非常困难的。可以把它们比作每个人的活动合在一起就构成了社会.

计算机是数字电路,数字电路是靠1,0来控制电路的.起到电流还有脉冲作用.像你键盘上敲个周字一样.同是由一大一串的0001111111111100.来产生脉冲电流对硬件发出指令的.CPU

就是运算这些数据.然后发出机器语言指挥其它硬件工作的.

软件为什么可以控制硬件?是由于什么物理或化学变化引起的?

虽然我不清楚你问这些出于什么,但我还是决定写一些东西:

从全局的概念上准确的回答你的问题,真的很困难。因为涉及的概念和过程描述实在太抽象了。说实在的,“软件控制硬件”这句话挺有歧义的,就目前自己使用计算机的程度,从一般计算机构造来看,想要从根源上区分存储和计算实在是件困难的事。你可以把计算机看成计算和存储可以分离,因为硬盘就像计算机的存储单元,CPU是计算单元,所以计算机的记忆可以外部化。然而,类比到人类的时候,大脑却是记忆和存储合二为一的。细化CPU完成功能的过程,它也是有寄存的。你说如何严格区分计算机的计算和存储呢?况且还有根内存在。

以上表达的意思希望你能明白,从分子运动就可以看出来,物质同化和性质紊乱便是自然界的规律,如同人类社会不同民族的融合一样。从软件的概念上说,和提纯金属是相同的。人为的逆转自然界的规律为己所用。

物理和化学变化,是提纯了的自然规律,比如电容,它的放电和充电,这个过程受限于电量和电容表面积,那么注定了它有固定的时间间隔,利用这些特性,可以用来计数,在多长时间后放电。二极管,说白了就是不同介质电阻的零界变化,形成二极管的定向电流和传递电势的性质。电容,电阻,二极管加起来:在何时朝什么方向传递多少电流电压(这只是很简单很笼统的说),于是,神奇的作用效果便呈现出来了。化学方面大多涉及制造工艺,在这就不说了。

那么计算机的电路板和上面的元件通电后的作用和软件控制硬件后的作用难道不是相同的么,只是效果更加单纯。计算机的输入设备,比如键盘和鼠标,手指的操作,在幕上输出以上的文字。不就是一连串的简单电路通电后的表现么,比起某几个电器元件的化学和物理变化,只是更加复杂,或者说表现效果更加符合人的意愿。

你所说的软件硬件间的相互作用,说白了还是硬件和硬件间的相互作用,为什么不采用过多的化学变化,因为这有个控制量的问题,化学变化过程的能量变化难以控制,且无论如何无法质量守恒(如果你相信中学教材就惨了)。硬件方面的存储可以举两个简单的例子,你的U盘,如何存储?是在半导体存储介质上“固化”电路,通电后,输出电路的“通路”和“不通路”两种状态,逻辑上就是数据的二进制化。而硬盘,和磁带的存储原理是相同的,通过控制磁头的电流大小,控制磁头的磁场强度,然后干预磁盘碟片上的“磁性物质”的密度或排布规律。

至此,软件作为一般人的抽象概念,把我们引入误区了,有一点希望你能从心底来认同,这不是技术上的问题,而是关于事物的认知。我们知道软件和硬件的相互作用是如何发生的意义不是很大,关键是我们知道怎么利用好这种相互作用就够了。