分享

软件是如何访问硬件的

 2017helloworld 2018-01-15

软件是如何访问硬件的

以下内容摘自《操作系统真象还原》

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

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

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

  1. 1)将某个外设的内存映射到一定范围的地址空间中,cpu通过地址总线访问该内存区域时会落到外设的内存中,这种映射让cpu访问外设的内存就如同访问主板上的物理内存一样。有的设备是这样做的,比如显卡,显卡是显示器的适配器,cpu不直接和显示器交互,它只和显卡通信。显卡上有片内存叫显存,它被映射到主机物理内存上的低端1兆字节的0xB8000~0xBFFFF。cpu访问这片内存就是访问显存,往这片内存上写字节便是往屏幕上打印内容。看上去这么高大上的做法是怎么实现的,这个我们就不关心了,前面说过,计算机中处处是分层,我们要充分相信上一层的工作。

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

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

明天继续。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多