第五章学习笔记
第五章:定时器及时钟服务
-
5.1 硬件定时器
通过硬件实现
-
5.2 个人计算机定时器
(1)实时时钟
TRC,由计算机中的小型备用电池为其供电。在所有Unix中时间变量是一个长整数。
(2)可编程间隔定时器
PIT是与CPU分离的硬件定时器。可以对其进行编程,达到毫秒级。
(3)多核CPU中的本地定时器
每个CPU都有自己独立的处理器,本地时钟器由CPU时钟驱动。
(4)高分辨定时器
TSC由系统时钟驱动。大多数电脑都有,这个叫时间戳定时器。 -
5.3 CPU操作
包含: PC程序计数器(指令指针IP)
标志或状态寄存器(SR)
一个栈指针(SP)
几个通用寄存器
CPU通常无限循环一下操作
遇到无效地址、非法指令、越权行为,可能会出现错误状态成为异常(陷阱)
-
5.4 中断处理
中断控制器
-
5.5 时钟服务函数
5.5.1 gettimeofday-settimeofday
结构体
参数一:tv
参数二:timezone 设置为NULL
库函数ctime(&time)转化为日历形式
实例
5.5.2 time系统调用
实例
5.5.3 times系统调用
结构体
5.5.4 time、date和hwclock命令
- 5.6 间隔定时器
系统调用
结构体
时间间隔器
(1)ITIMER_REAL:实时减少,到期生产一个SIGALRM(14)信号
(2)ITIME_VIRTUAL:仅当进程在用户模式下执行时减少,到期产生信号SIGALRM(26)
(3)ITIME_PROF:当进程在用户和内核模式下执行时减少。与(2)结合使用,来判断程序在内核和用户模式下使用的时间。到期生成信号SIGALRM(27)
实例
- 5.7 REAL模式间隔定时器
VIRTUAL和PROF模式下的间隔定时器仅在执行进程是才有效。保存在各进程的PROC结构体内。
操作系统内核需要使用额外的数据结构来处理进程中的REAL模式定时器。 - 5.8 系统基本代码
使用gcc-m32编译
ts.s
t.c
5.8.2 定时器中断
拓展代码
5.8.3 定时器队列
5.8.4 临界区
基本代码系统中,只有一个执行实体,即任务,一次执行一个。