Linux 计算机系统中的定时机制

Linux 计算机系统中的定时机制,linux,time,operating-system,hardware,Linux,Time,Operating System,Hardware,我已经阅读了这个链接,它提供了C语言中可用的计时函数的详细分类 然而,对于操作系统/硬件如何维护不同的“时间”概念,我感到非常困惑 这是引自, RTC不应与系统时钟混淆,系统时钟是 由内核维护并用于实现的软件时钟 gettimeofday(2)和time(2),以及在文件上设置时间戳, 等等系统时钟报告自发生故障后的秒数和微秒数 起点,定义为POSIX历元:1970-01-01 00:00:00+0000 (UTC)。(一种常见的实现方法计算计时器中断,每分钟一次 “jiffy”,频率为100、

我已经阅读了这个链接,它提供了C语言中可用的计时函数的详细分类

然而,对于操作系统/硬件如何维护不同的“时间”概念,我感到非常困惑

这是引自,

RTC不应与系统时钟混淆,系统时钟是 由内核维护并用于实现的软件时钟 gettimeofday(2)和time(2),以及在文件上设置时间戳, 等等系统时钟报告自发生故障后的秒数和微秒数 起点,定义为POSIX历元:1970-01-01 00:00:00+0000 (UTC)。(一种常见的实现方法计算计时器中断,每分钟一次 “jiffy”,频率为100、250或1000 Hz。)也就是说,它是 应该报告挂钟时间,RTC也这样做

RTC和系统时钟之间的关键区别在于RTC运行 即使系统处于低功率状态(包括“关闭”),以及 系统时钟不能工作。在初始化之前,系统时钟 只能报告自系统启动以来的时间。。。从POSIX时代起就没有了。 所以在启动时,从系统低功耗状态恢复后, 系统时钟通常设置为当前的挂钟时间 使用RTC。没有RTC的系统需要设置系统时钟 使用另一个时钟,可能通过网络或输入该时钟 手动获取数据

指示RTC和系统时钟在启动后是独立的。我的问题是:

  • 是什么导致增加系统时钟的中断???
  • 如果墙时间=使用系统时钟的时间间隔,处理时间取决于什么
  • 这些都与CPU频率有关吗?或者这是一个完全正交的计时业务

  • 在Linux上,从应用程序的角度来看,手册页给出了很好的解释

    Linux还提供(特定于Linux的)和相关的系统调用

    您不应该关心中断(它们是内核的业务,并且是动态配置的,例如通过应用程序计时器和许多其他系统调用以及由调度程序进行配置),而应该只关心应用程序可见的时间相关系统调用

    很可能,如果某个进程正在制作一个小周期(例如10毫秒)的计时器,内核会将计时器中断的频率增加到100Hz

    在最近的内核中,您可能希望

    CONFIG_HIGH_RES_TIMERS=y
    CONFIG_TIMERFD=y
    CONFIG_HPET_TIMER=y
    CONFIG_PREEMPT=y
    
    内核的
    .config
    文件中的选项

    顺便说一句,你可以每隔10秒执行两次
    cat/proc/interrupts
    。在我的笔记本电脑上,我有一个自制的3.16内核,大部分进程都是空闲的,但是有一个
    firefox
    浏览器和一个
    emacs
    ,每秒有25次中断。还可以尝试
    cat/proc/timer\u列表
    cat/proc/timer\u统计

    还可以查看最近(如3.16)的Linux内核树目录


    内核可能会使用硬件设备,如笔记本电脑和台式机的片上(或),这比旧式的要好得多。当然,细节是特定于硬件的。因此,在基于ARM的Linux系统上(例如,您的Android智能手机),它是不同的。

    它因CPU平台而异。内核树中特定于体系结构的部分都有特定的处理程序。也许你可以缩小问题的范围?@wallyk我已经改写了整个故事,lolIm在试图了解更多操作系统的同时提出了这个问题。。所以我真的很关心中断。不,内核会根据需要配置中断。我不太明白最后一点。我真的只是想了解系统时钟是如何维持的。它是中断驱动的,所以一定是什么原因导致了中断。。但是什么呢?我看不出内核是如何配置的?进程调度器为内核配置的@shekharsuman进程调度依赖于一个可编程的间隔计时器,而该计时器又依赖于系统时钟号?