首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2012-02-13 
关于IO指令的延时不少汇编程序在in、out指令之后加了几个nop指令,说是等待io指令完成,一般要等几个nop指令

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

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

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

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

热点排行