一:BIOS和驱动程序是如何工作的1:当你选择一个命令.比如说,让你的文字处理软件保存一个文档时,应用程序不需要知道如何控制硬盘驱动器.取而代之的是,文档处理软件将命令和需要保存的数据传送给WINDOWS.2:操作系统要通过检查确认保存数据的命令没有问题.例如,它要确定文件名是否合法,同时你不能在一个标记着只读的文件上保存.3:如果一切就绪了,操作系统就会检查保存文件的操作系统是否需要设备驱动程序,所谓设备驱动程序就是为了控制特定的外围设备而编写的一个专用代码块.驱动程序是BIOS的扩展.如果没有驱动程序,做为永久性的存储器,BIOS就必须要包含所有的控制命令以控制每一种你可能安装到计算机的硬件设备.这样,不仅BIOS将会难以控制的增大,而且,当新的打印机或是硬盘驱动器推出的时候,它就会立即被淘汰.计算机启动或是WINDOWS装入时一些驱动程序也被装入进来.如果文件保存操作所需的设备驱动程序不在RAM中,WINDOWS就会将它从磁盘上复制到内存中,然后WINDOWS将文件保存的实际任务交给BIOS和驱动程序.4:如果BIOS中含有该磁盘驱动器的一套专用指令,BIOS就自己发送指令和数据到磁盘驱动控制器.在IDE(集成驱动设备电路)驱动器中,控制器内置在驱动器中.如果命令不固化在BIOS的只读存储器中,BIOS将到磁盘驱动器的设备驱动程序中重新寻找控制指令.在那里编有专门用于控制这种品牌,容量及型号的控制命令集.映象BIOS计算机的BIOS信息比较典型的是存储在EPROM(可檫写,可编程,只读存储器)芯片上,甚至在计算机关闭的时候都会一直保留着这些数据.检查EPROM上的代码将会比检索RAM中的代码花费更多的时间.基于这个原因,大多数的新型计算机采用了映象BIOS代码的办法-也就是说,将代码从EPROM上复制到RAM中,然后建立起等效的微电路转向标记,这样当计算机要访问BIOS的代码时,它将会访问取代EPROM的RAM. 二:即插即用设备如何工作1:当你打开一个即插即用型系统时,WINDOWS和硬件设备之间的主要仲裁者BIOS成为第一个掌握控制权的组件。BIOS搜寻所有需要的设备—比如显卡、键盘以及软盘驱动器——这样PC机才可能正常运行。BIOS基于它们唯一的标志号来识别这些设备,标志号是被永久性地记录到设备的ROM即只读存储器中的。然后BIOS将控制权交给操作系统。2:WINDOWS的配置管理器将称为枚举器的特殊设备驱动程序添加进来—该程序充当操作系统和各种不同设备之间的接口。枚举器有总线枚举器、用于SCSI(小型计算机系统接口)的特殊总线类型的枚举器和端口枚举器,等等。WINDOWS要求每个枚举器都要明确地指出它要控制哪个设备以及它需要那些资源。3:WINDOWS从枚举器得到信息并且将这些信息存储到硬件设备树中,硬件设备树是存储在RAM中的一个数据库。于是操作系统检查硬件设备树进行资源仲裁。换言之,在将信息存储到一个数据库以后,操作系统决定将那些资源——例如,中断(IRQ)——分配哪个设备。然后系统会通知枚举器它们各自的设备都被分配了那些资源。枚举器将资源分配的信息存储到外围设备的微型可编程寄存器中类似于某些芯片中的暂存区。4:最终,操作系统为每个设备都搜寻到合适的设备驱动程序。设备驱动程序实际上就是WINDOWS的一小部分附加代码,它告诉操作系统如何与硬件进行通信。如果操作系统没有发现它所需要的设备驱动程序,系统就会提示用户进行安装。于是系统加载所有必须的设备驱动程序并且告知驱动程序其他设备使用着那些资源。设备驱动程序初始化它们各自的设备,这时完成了系统启动。三:数据怎样在总线上旅行1:处理器或其它组件发出的信号沿着若干条平行排列的电路行走。这种线路的条数是由所有的总线体系结构类型决定的。它们当中最简单的)——原IBM PC机上用的是8位总线——用62条连线与各种适配器卡连接。发送到某一适配器卡上的任何信号同时都会送向所有的适配器卡。2:8条线路通向适配器卡电源线。不同线路的电压是不同的。3:8到32条线路用于传输所有的数据,不管数据是送往内存芯片、还是送往显示适配器或是磁盘控制器。4:20条线路载有想要的数据的特定地址信息。每个扩展卡都使用一个特定且唯一的地址——来自于内存中开头1MB空间中的可用部分,那是一个能被操作系统寻址的范围。5:余下的那些线路用来传递常用的特定指令的控制信号,比如对内存和每个输入/输出设备的读写命令。6:总线上的每个适配器卡时刻不断地在控制线上寻找适当的信号。例如,当写命令线上出现一个信号时,所有的I/O设备都会识别出这个命令,而内存的电路却不会。7:写命令警告I/O适配器转移注意力到地址线上。如果那些线上指定的地址并不是某个适配器所使用的地址时,哪个适配器就将数据线的信号忽略。
操作系统大部分是用C语言编写的,只有其中一小部分(核心部分)是用汇编语言编写的,用汇编可能是有更高的执行效率。在操作系统加载进内存中运行的时候其实那些用C语言啊汇编语言编写的代码都是要转换成二进制代码的,也就是机器语言,其实任何软件都要转换成机器语言才能让计算机运行。二进制代码在机器里面其实使用电压的高低来表示的电压高代表1电压低代表0。 有了这些知识后你再来看你提问的问题,你说在操作系统执行关机命令的时候,软件是怎么控制硬件断电的,其实在你点击关机按钮的时候,就是给操作系统发了一个命令,在计算机内部的表示形式也就是在你的点击下,里面产生了一组高低电压(也可能是全高的电压,或者是全是低的电压,总之是一组电压),这一组电压会控制主机的运行状态,让主机知道了你给它发出的命令,然后它就会执行这个命令,而你就看到计算机关机了! 总之一句话,计算机里面运行的是高低电压,你所有的操作,还有计算机操作系统及应用软件的操作都是通过电压的高低来对硬件进行控制的。有关这方面的具体细节你可以参考一下计算机原理方面的书籍!]
通过调用驱动文件下达对硬件的不同指令来使用硬件 如果缺失驱动程序中转,系统就无法调用硬件 纯属YY错了勿喷]