大贤者
精华
|
战斗力 鹅
|
回帖 0
注册时间 2007-1-2
|
本帖最后由 SUPERFIGHT 于 2010-1-3 01:26 编辑
我们知道OS是使用硬件定时器产生的中断源来精确记时的(比如linux kernel中的jiffies变量),但是虚拟机不能使用硬件定时器产生的中断源来精确记时,显然虚拟机只是个应用程序,只能在应用层使用信号等纯软件的类中 ...
henvelleng 发表于 2010-1-2 22:51 
从这样看来就是所使用的时钟系统调用不能正确提供时间所导致的,呢么反过来想~
对于使用同样接口的应用程序来说也会产生同样的问题~ 呢么有时钟要求的程序都无法在虚拟机上运行~
这个touch时间出现差异有点不可理解,如你所说,OS是通过时钟中断来进行工作的,呢么每得到一次时钟中断就会将其计数器加1,虚拟机中的时钟中断可能是由软中断触发的,但这和时间出现差异应该没有任何联系,因为这个软中断并不会干扰其计数器自加的方式,按你所说的情况考虑~ 应该是内核对于计数器的管理出现了问题,例如所使用的原子操作并非真正得到了原子性的执行,但想想也不会吧~ 就算是非原子性的执行,应该也是加1这样的小数值而已,能让后面编译文件的时间早于先编译文件的时间,想必其数值溢出应该很大,囧~ 我想应该还其它的一些什么原因,嘛~ 换一个虚拟机或者更换更高版本内核的试试吧~ = 3=
GOOGLE了一下~ 现在XEN和VMWARE对于这个问题都有解决的方法了~ 根源貌似是其RTC~ 呢么使用一个不使用RTC的内核就应该可以了~ = 3= |
|