Outline 定时的硬件设备 ② Linux的计时体系结构 。滴答产生机制 ●Jiffies变量 ●Linux的时钟源 ●xtime变量 ● 时钟中断处理 ●软定时器 延迟函数 相关PI和命 小结、作业和project 1口t4四1是42刀00 东香兰(x1 anchenoustc,edu,cn)(计算丸应Linux操作看统分所Chapter7 Linux中的时料 0 ctober28.201412/49
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Outline . 1. 定时的硬件设备 .2 Linux的计时体系结构 滴答产生机制 Jiffies变量 Linux的时钟源 xtime变量 时钟中断处理 软定时器 .3 延迟函数 4. 相关API和命令 5. 小结、作业和project 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 7 Linux中的 时钟和定时测量 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 28, 2014 12 / 49
Linux的计时体系结构 ●Linux的计时体系结构 。更新自系统启动以来所经过的时间 。更新时间和日期 ·确定当前进程的执行时间,考虑是否要抢占 ·更新资源使用统计计数 。检查到期的软定时器 ●在单处理器系统中,所有定时活动都由IRQ0上的时钟中断触发, 包括 。在中断中立即执行的部分,和 。作为下半部分延迟执行的部分 1口1401是42在00 陈香兰(x1 anchenoustc,edu,cn)(计算丸应Linux操作看统分所Chapter7 Linux中的时华 0 ctober28.201413/49
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Linux的计时体系结构 Linux的计时体系结构 更新自系统启动以来所经过的时间 更新时间和日期 确定当前进程的执行时间,考虑是否要抢占 更新资源使用统计计数 检查到期的软定时器 在单处理器系统中,所有定时活动都由IRQ0上的时钟中断触发, 包括 在中断中立即执行的部分,和 作为下半部分延迟执行的部分 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 7 Linux中的 时钟和定时测量 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 28, 2014 13 / 49
计时体系结构中的关键数据结构和变量 O滴答产生机制:时钟中断→tick 。tick_device机制和clockevents机制 O Jiffies变量 。计时时钟源 Xtime变量 1口+4四1是4P在刀0C 陈香兰(x1 anchenoustc,edu.cn)(计算丸应L1nux操作看统分折Chapter7 Linux中的时料 0 ctober28.201414/49
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 计时体系结构中的关键数据结构和变量 1. 滴答产生机制:时钟中断→tick tick_device机制和clockevents机制 2. Jiffies变量 3. 计时时钟源 4. Xtime变量 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 7 Linux中的 时钟和定时测量 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 28, 2014 14 / 49
Outline 定时的硬件设备 。实时时钟RTC 。时问戳计数器TSC 。可编程问隔定时器PIT ②Linux的计时体系结构 ●滴答产生机制 o Jiffies变量 。Linux的时钟源 。xtime变量 。时钟中断处理 。软定时器 廷迟函数 相关PI和命今 小结、作业和projject 1口t4四1是42刀00 陈香兰(x1 anchenoustc,edu,cn)(计算丸应Linux操作看统分析Chapter7 Linux中的时料 0 ctober28.201415/49
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Outline . 1. 定时的硬件设备 实时时钟RTC 时间戳计数器TSC 可编程间隔定时器PIT .2 Linux的计时体系结构 滴答产生机制 Jiffies变量 Linux的时钟源 xtime变量 时钟中断处理 软定时器 .3 延迟函数 4. 相关API和命令 5. 小结、作业和project 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 7 Linux中的 时钟和定时测量 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 28, 2014 15 / 49
tick device机制 o每一个逻辑CPU有一个tick cpu device, 参见kernel/time/tick-common.c ·Tick devices */ DEFINE_PER_CPU(struct tick_device,tick_cpu_device); / Tick next event:keeps track of the tick time ktime_t tick_next_period: ktime_t tick_period: int tick_do_timer_cpuread_mostly =-1; DEFINE_SPINLOCK(tick_device_1ock); struct tick device struct clock_event_device "evtdev; enum tick_device_modemode: 。tick_setup_device()中初始化evtdev:为指定的clock_event_.device 。tick_shutdown()中evtdevi被设置为NULL口,g,·,·=,在pac 陈香兰(xlanchenoustc,edu.cn)(计界机应Linux操作系统分析Chapter7 Linux中的时料 0 ctober28.201416/40
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tick_device机制 每一个逻辑CPU有一个tick_cpu_device, 参见 kernel/time/tick-common.c . . /* * Tick devices */ DEFINE_PER_CPU(struct tick_device, tick_cpu_device); /* * Tick next event: keeps track of the tick time */ ktime_t tick_next_period; ktime_t tick_period; int tick_do_timer_cpu __read_mostly = -1; DEFINE_SPINLOCK(tick_device_lock); . . struct tick_device { struct clock_event_device *evtdev; enum tick_device_mode mode; }; tick_setup_device()中初始化evtdev为指定的clock_event_device tick_shutdown()中evtdev被设置为NULL 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 7 Linux中的 时钟和定时测量 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 28, 2014 16 / 49