定时器的用户级中断处理程序

时间:2014-12-30 16:20:12

标签: c linux timer interrupt

我必须为项目实现一个简单的操作系统和虚拟机,它支持一些基本功能。该操作系统将在虚拟机和虚拟机上运行,​​就像Linux中的普通程序一样。

假设现在是虚拟机执行的量子。

  1. 如何能够接收一些额外的定时器信号,以便以较小的量子划分虚拟机执行时间?
  2. 我的cpu中有多少计时器? (这更像是一般性问题)
  3. 我可以使用用户控制杆中断处理程序处理虚拟机内的定时器信号吗?
  4. 非常感谢任何帮助或指导。 谢谢

2 个答案:

答案 0 :(得分:1)

我建议你使用1个中断,并将你的计时器组织在队列中(几次,例如< 50)或堆中,这是一个非常快速的树,随时可以让你访问最小元素,即具有下一个要处理的Timer的元素。

因此,您有一个中断,一个处理程序和许多具有相关函数的计时器,这些计时器将由该单个处理程序调用。

答案 1 :(得分:0)

实际上,正常程序也使用中断(系统级),例如当他们想要使用系统调用时。 在用户级别,您可以使用swapcontext / makecontext来模拟系统级交换上下文,但是当您想要获得时间(计算时差)时,您必须使用系统调用。所以您最好直接使用系统计时器,它是不错。