在区分体系结构,编程问题和操作系统方面,使用定时器中断而不是虚拟环路来实现时间延迟有什么优势?任何帮助将不胜感激。提前致谢。定时器中断与虚拟环路
-2
A
回答
1
虚拟循环要求CPU始终工作(增加一个计数器,或将阈值与系统计时器进行比较)。
CPU时间花费无所事事,因此名为Dummy Loop。
在多任务操作系统上,这很糟糕,因为时间可能会花在做其他事情上。
如果你在一个单一的任务/没有任何事情要做。现在是时候可以花在低能耗模式上了(除了对电力友好,对于电池供电的设备来说非常重要)。
0
虚拟循环取决于处理器速度。当您使用定时器中断时,您将处理对事件的更快响应,并且您将提供功耗。
2
一旦硬件定时器已经设置好,它将独立于CPU正在执行的任何代码进行计数。 CPU可以运行其他任务,服务中断,或者甚至可以在定时器运行时进入睡眠状态以节省电力。然后,当定时器中断发生时,CPU将唤醒和/或切换回等待的任务以服务定时器到期。定时器的持续时间不受CPU在定时器计数时所做的任何影响。
在虚拟循环中,CPU正忙于计数,因此无法切换到其他任务或进入睡眠状态。如果虚拟循环被中断,则周期将增加服务中断所花费的时间。换句话说,在中断服务期间,虚拟环路暂停。
虚拟循环的持续时间可能受编译器和/或链接器选项的影响。例如,如果您更改编译器优化级别,则虚拟循环的速度可能会改变。或者,如果虚拟循环函数位于具有不同数量的等待状态的不同存储器中,那么虚拟循环的速度可能会改变。硬件计时器将不受这些变化的影响。
相关问题
- 1. 虚拟与仿形定时器
- 2. Express.js与虚拟路径重定向
- 3. Django与虚拟环境
- 4. 耙失败, “虚拟定时器超时”
- 5. Linux虚拟定时器行为
- 6. ASP.NET中的虚拟路径
- 7. 虚拟路径null?
- 8. 虚拟化环境
- 9. Javascript虚拟环境?
- 10. Chisel3:固定优先级仲裁器中的虚拟组合环
- 11. 导入错误与虚拟环境
- 12. 与删除虚拟环境virtualenvwrapper,赢得
- 13. Mac上的虚拟环境与python 3.4
- 14. MAC OS X:MAMP环境与虚拟主机
- 15. 我的虚拟环境(Python)导致我的PYTHONPATH中断?
- 16. Spyder在OSX的虚拟python环境中不断崩溃
- 17. URL重写虚拟路径始终保持虚拟路径
- 18. 瘦服务器 - 虚拟路径
- 19. 使用自定义虚拟路径
- 20. Python解释器,虚拟环境和pycharm
- 21. 服务器利用虚拟环境
- 22. 转移到新电脑后虚拟环境中找不到虚拟环境中的虚拟机扩展
- 23. 错误与虚拟Android虚拟设备
- 24. MVC3自定义路由与虚拟目录的问题
- 25. 调度django自定义命令与cron在虚拟环境内
- 26. ASP.NET MVC自定义URL - 虚拟服务器路径
- 27. WPF线路虚拟化
- 28. 虚拟路径捆绑
- 29. 点IP到虚拟路径
- 30. 路由到虚拟物品
定时器不需要中断,你可以使用循环计数到n,它依赖于编译器和处理器,有时很难调整。那么就有准确的轮询时间,然后中断准确的时间。中断更难实施和维护,但允许你做其他事情。 –
我很确定我们之前曾经有过这么多次这个问题。不能被打扰搜索它。粗略总结:鉴于任何时间问题,硬件定时器是专业解决方案,虚拟循环是车库破解,业余解决方案。实现可从代码中多个地方重用的通用计时器HAL相当容易。 – Lundin