中断服务程序大家都是怎么用的

中断服务程序大家都是怎么用的,第1张

我裂肆孙用得最多的中断里面的程序就是把高速计数器的当前值读出来。就一条MOVDHCOVD0=m0.0(需要时用于通知主扫描,数据已经更新)有肆链用过其他的中断程序是PLS0。用于启动或停止或修改当前脉冲参数还有就是DTCH(ATCH)用于开放和关闭中断。通常是通讯时切换。都很短。第一个例子,把数据读出来了再说。至于如何运算是其他程序的事情了。不要在中断里面进行任何计算。因为这个计算是供主扫描其他用途。一般这个用途不必这么紧急地输出。第二个例子,当我决定连接这个中断的时候我就先预料到,发生中断的时候要干什么。然后把脉冲的形态先完全定义好,是启动的就雹租写使能位,写当前周期,写脉冲数等等。是停止的就写(关闭)使能位。一切都把路铺好后,等着中断随时的到来。所以中断一来,就只执行一条指令就行了。通讯的事情比较烦琐,不好一下子解释。

OS存放于磁盘(Disk);

BIOS(基本IO处理系统): 开机后从特定内存地址开始执行,检查外设,然后加载Bootloader;

Bootloader:放在硬盘第一个主引导扇区、将OS从硬盘加载到内存、跳转到OS起始地址;

系统调用:应用主动向OS发出服务请求;

异常:应用的非法指令/坏的处理状态;

中断:来自外设,通知OS需要中断处理。

1、判首缓来源不同:中断来自外设;异常来自应用程序的异常行为;系统调用来自应用程序请求系统提供服务;

2、处理时间不同:中断是异步事件、掘模异常同步、系统调用返回可以是异步,请求是同步的。

3、响应:中断:持续,对应用透明;异常:杀死/重新执行指令;系统调用:等待系统调用完成后继续执行芹瞎。

硬件上:1、将事件设置中断标记;2、key记录中断事件ID,(value有中断事件地址,给OS查询中断表);

软件上:1、保存当前处理状态;2、执行中断程序;3、清除中断标记;4、恢复之前的保存状态;

1、保存现场;2、异常处理(杀死进程/重新执行);3、恢复异常。

应用通过高层API(System Call Interface)使用,完成从用户态到内核态的切换。

1、建立中断/异常/系统调用号与对应服务号的开销;

2、内核堆栈的建立;

3、验证系统调用参数;

4、内核态数据拷贝到用户态;

5、内存状态改变(Cache/TLB 刷新的开销)。

这个问题有很多种解决方法,各种方法如下:

1.扩展外部中断,但成本会很拆祥大高;

2.简化程序,将字符移动作为系统主资源程序,中断程序只进旅竖行按键读入,字符每移动一个点格就判断一次是否有新的按键按下,没有则继续执行此程序,有则跳转到相应程序,当然响应程序每隔一定语块也要加上按键宴棚判断语句,可以用循环完成,判断语句在循环末尾。

还有很多种用软件模拟扩展中断的方法,但都十分复杂。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12374156.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存