学习笔记8

第五章 定时器及时钟服务
    5.1 硬件定时器
        定时器是由时钟源和可编程计数器组成的硬件设备。
        时钟源通常是一个晶体振荡器,会产生周期性电信号,以精确的频率驱动计数器。
    5.2 个人计算机定时器
        基于Intel x86的个人计算机有数个定时器(Bovet和Cesati2005)
            (1)实时时钟(RTC)
            (2)可编程间隔定时器(PIT)
            (3)多核CPU中的本地定时器()
            (4)高分辨率定时器
    5.3 CPU操作
        对于每个CPU而言都拥有:
            一个程序计数器(PC),也称为指令指针(IP)
            一个标志或状态寄存器(SR)
            一个堆栈指针(SP)
            几个通用寄存器
  在这里做一下CPU与GPU的对比
    5.4 中断处理
        中断处理总而言之分为以下五步
            中断请求:请求触发器和允许触发器
            中断判优:软件判优和硬件判优
            中断响应:保护硬件现场、关中断、保护断点、获得中断服务程序的入口地址
            中断服务:保护现场、开中断、中断服务、恢复现场、中断返回
            中断返回:返回到原程序的断点处,恢复硬件现场,继续执行原程序
    5.5 时钟服务函数
        5.5.1 gettimeofday-seettimeofday
      5.5.2 time系统调用
            time系统调用
                time_t time(time_t *t)
            以秒为单位返回当前时间
            如果参数t不是NULL,还会将时间存储在t指向的内存中
       5.5.3 times系统调用
            times系统调用
                clock_t times(struct tms *buf);
            用于获取某进程的具体执行时间
            将进程时间存储在struct tms buf中,以时钟计时单元报告所有时间
       5.5.4 time和date命令
            date:打印或设置系统日期和时间
            time:报告进程在用户模式和系统模式下的执行时间和总时间
            hwclock:查询并设置硬件时钟(RTC),也可以通过BIOS来完成
    5.6 间隔定时器
        Linux为每个进程提供了三种不同类型的间隔计时器
        间隔计时器由setitimer()系统调用创建。getitimer()系统调用返回间隔定时器的状态
        分类:
            (1)ITIMER_REAL:实时减少,在到期时生成一个SIGALRM(14)信号
            (2)ITIMER_VIRTUAL:仅当进程在用户模式下执行时减少,在到期时生成一个SIGVTALRM(26)信号
            (3)ITIMER_PROF:当进程正在用户模式和系统(内核)模式下执行时减少
    5.7 REAL模式间隔定时器
        VIRTUAL和PROF模式下的间隔计时器仅在执行进程时才有效
        这类定时器的信息可保存在各进程的PROC结构体中
    5.8 编程项目
        5.8.1 系统基本代码
      5.8.2 定时器中断
      5.8.3 定时器队列
      5.8.4 临界区
      5.8.5 高级主题
posted @ 2021-11-07 14:23  冯睿20191328  阅读(42)  评论(0编辑  收藏  举报