通过关中断的方式来实现原语的分析
来源:互联网 发布:淘宝质保金被骗了 编辑:程序博客网 时间:2024/06/06 18:22
原语是指几个(2个及以上)连续执行,同时不能被打断的操作。
打断这些连续的操作,有两种可能。一种是主动的,一种是被动的。
主动的打断是指程序主动进入睡眠,而出现的操作中断。
被动是指在操作期间发生外部中断,CPU转去响应中断,而在中断处理过程中,有可能使高优先级的进程进入运行态,如果是抢占式内核,就会导致任务切换,也就形成了操作中断。例如在执行过程中,硬盘操作完成,发出中断,硬盘的中断处理程序就会唤醒等待硬盘数据的进程,如果等待硬盘数据的进程优先级高,那就会引起调度而导致操作中断。
因此要实现原语,首先在程序设计上就要注意,避免在操作过程调用含有进程切换的程序。其次就是要处理被动打断的可能,最简单的办法就是关中断。关闭中断有两种方式,一种是关闭CPU自身响应中断的机制,二是关闭中断来源,通常是关闭中断控制器。
关闭CPU自身的中断机制比较简单,通常只需要一条指令,但是这种方式在多CPU的情况下,并不能正确的工作。关闭中断源的方式则可以保证多CPU下的情况,能够正常工作,但是编程可能会较为繁琐。如果明确目标机器是单CPU的,可以采用关闭CPU自身的中断响应机制。
关中断的利弊。
利:实现简单。特别是对于单CPU,一条指令即可完成所需的功能。
弊:存在丢失中断的可能性。可能是由于关中断时间过长,而其间出现了出现了中断,而后又中断又消失了,或者在关中断期间,同类型的中断发生了多次而未能处理。因此关中断的时间要非常短。特别是在某些应用场合,是不能允许出现中断丢失的,可以想象武器火控系统出现了这样的情况,会是个什么结果。
- 通过关中断的方式来实现原语的分析
- 通过继承来实现注解方式的属性注入
- 俩个PC机通过串行口互联,实现件的无差错传输。程序必须用中断方式来完成任务
- 禁止所有的中断(关中断/开中断)
- 禁止所有的中断(关中断/开中断)
- python编程实现通过多线程的方式来求2000~3000之间的所有的素数
- STM32通过中断方式实现USART1通信
- 如何更好的通过Inflate layout的方式来实现自定义view
- 通过反编译的方式分析阿里手淘小蜜的实现方式
- 进程间同步(Process Synchronization)-2 通过semaphore方式来实现进程间同步的例子
- Jquery通过Ajax方式来提交Form表单的具体实现
- 通过黑盒方式来分析其他部分
- 通过cocos2d-x的CCGLProgram和CCShaderCache的实现来分析OpenGL ES中的Shader编程
- 通过cocos2d-x的CCGLProgram和CCShaderCache的实现来分析OpenGL
- 通过中断T0和T1实现蜂鸣和LED灯开和关
- os通过调用bios的中断能实现的服务
- 通过实例来实现split的理解
- 通过JSP程序来实现的分页
- Me.Requery和Me.Refresh异同
- Web开发兼容性系列文章(一):不同设备浏览器的userAgent值大全
- win32 rundll32 应用列表
- Bugzilla/使用
- MySQL取得当前日期固定时间的方法。
- 通过关中断的方式来实现原语的分析
- Linux多线程详解
- scanf-printf
- WinForm之创建word并操作文档
- JS控制浏览器大小
- live555学习笔记16-几个重要对象的生命期
- java读Excel2007
- ubuntu 使用手记
- LGame的自学日志(1)—入门