当前位置: 代码迷 >> 汇编语言 >> 关于IO指令的延时解决方法
  详细解决方案

关于IO指令的延时解决方法

热度:3196   发布时间:2013-02-26 00:00:00.0
关于IO指令的延时
不少汇编程序在in、out指令之后加了几个nop指令,说是等待io指令完成,一般要等几个nop指令的时间?
还有一个问题:如果执行到io指令时刚好程序的时间片用完,发生进程调度,操作系统保存了本程序的上下文而调度其它程序了,那么该io指令完成时已经不是原来的程序了,这不会造成程序逻辑上的错误吗?

------解决方案--------------------------------------------------------
nop 延时只适合简单的io(比如os比较简单就是单任务,或者io速度比较快,几个指令周期就搞定的)
如果io本身比较慢的话,os可能直接把程序切出,调度下一个程序,知道io完成的中断信号过来再唤醒程序.
io指令不会出现你说的那种错误,io的所有参数在os内核有保存,
如果是多任务的话,进程上下文可能也有一个handle指向内核对象,切换的时候其它进程是不管的.
------解决方案--------------------------------------------------------
这是为了让一些慢速设备做好准备或者完成给他的任务作的等待,在以前的PIO设备的

交互代码由会看见很多,对于现在的高速DMA设备,由于存在interrupt事件,所以

可以用更好的方式来解决这个问题。
  相关解决方案