软件访问硬件的原理过程是怎么样的

硬件是各种各样的,发展速度还是非常快的。各个硬件都有自己的个性,操作系统不可能及时更新各种硬件的驱动方法吧。比如,刚出来某个新硬件,os开发者们便开始为其写驱动,这不太现实,会把人累死的。于是乎,便出现了各种硬件适配设备,这就是io接口。接口其实就是标准,大家生产出来的硬件按照这个标准工作就实现了通用。

硬件在输入输出上大体分为串行和并行,相应的接口也就是串行接口和并行接口。串行硬件通过串行接口与cpu通信,反过来也是,cpu通过串行接口与串行设备数据传输。并行设备的访问也是类似,只不过是通过并行接口。

访问外部硬件有两个方式:

将某个外设的内存映射到一定范围的地址空间中,cpu通过地址总线访问该内存区域时会落到外设的内存中,这种映射让cpu访问外设的内存就如同访问主板上的物理内存一样。有的设备是这样做的,比如显卡,显卡是显示器的适配器,cpu不直接和显示器交互,它只和显卡通信。显卡上有片内存叫显存,它被映射到主机物理内存上的低端1兆字节的0xB8000~0xBFFFF。

(迷你兔数据恢复minitool具有“删除恢复”、“格式化恢复”、“硬盘恢复”、“深度恢复”、“移动存储设备恢复”五大功能模块,恢复效率高,安全性有保障。)

cpu访问这片内存就是访问显存,往这片内存上写字节便是往屏幕上打印内容。看上去这么高大上的做法是怎么实现的,这个我们就不关心了,前面说过,计算机中处处是分层,我们要充分相信上一层的工作。

外设是通过IO接口与cpu通信的,cpu访问外设,就是访问IO接口,由IO接口将信息传递给另一端的外设,也就是说,cpu从来不知道有这些设备的存在,它只知道自己操作的IO接口,你看,处处体现着分层。

于是问题来了,如何访问到IO接口呢,答案就是,IO接口上面有一些寄存器,访问IO接口本质上就是访问这些寄存器,这些寄存器就是人们常说的端口。这些端口是人家IO接口给咱们提供的接口。人家接口电路也有自己的思维(系统),看到寄存器中写了什么就做出相应的反应。接口提供接口,哈哈,有意思。不过是这是人家的约定,没个约定就乱了,各干各的,大家都累,咱们只要遵循人家的规定就能访问成功。

(迷你兔数据恢复软件minitool具有“删除恢复”、“格式化恢复”、“硬盘恢复”、“深度恢复”、“移动存储设备恢复”五大功能模块,恢复效率高,安全性有保障。)