CPU 与外设通信

2018.04.17

IO 设备分为块设备、字符设备。

块设备:U 盘、硬盘、CD。数据存储在固定大小的块中,有地址。

字符设备:鼠标、键盘、打印机。字符流。无地址。

IO 总线:为了 CPU 与外设通信。但同一时间只能有一条通道。

IO 端口:为了 CPU 能识别出外设。

内存映射 IO 端口:把 IO 地址写入内存中,方便 CPU 访问。

轮询(程序式 IO):CPU 不断询问硬盘有没有把数据送到磁盘控制器缓冲区了。且 CPU 会一直霸占总线。

中断:CPU 有一条中断请求线,硬盘把数据送到磁盘控制器缓冲区后往这个地方发一个信号,CPU 每执行一条指令后会检查。
异步、事件驱动的思想。node.js、AJAX。

中断控制器:决定中断的优先级。

CPU 只认内存。鼠标、键盘、硬盘的数据通通得搬到内存。

磁盘控制器:把数据从硬盘搬运到内存。

总线

把硬盘数据送到 CPU 过程是这样的:
硬盘先把数据送到磁盘控制器缓冲区,发出中断,CPU 发出指令把数据送到内存,最后才送到 CPU。

对于小数据,如键盘,鼠标产生的数据,磁盘控制器缓冲区能一次性就能缓存这些数据,只需发一次中断给 CPU,CPU 再发出指令就能把数据送到内存。

对于大数据,如硬盘上的数据,磁盘控制器缓冲区每次装满后都要向 CPU 申请中断把数据运到内存,由于数据量大,磁盘控制器缓冲区都有装多次才能装完,相应地,也要申请多次中断,这样 CPU 也要发出多次指令。

DMA 是用来解决大数据传输的。直到所有数据发送到内存后才向 CPU 发出中断。
注意没有 DMA 的小数据传输是把数据发送到磁盘控制器缓冲区,就向 CPU 发出中断,然后在 CPU 指令下把数据送到内存。

但 DMA 把数据从磁盘控制器缓冲区运到内存动用到总线,这时 CPU 就没法用了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容