学习笔记8
- 定时器及时钟
- 时钟服务函数
- 实践过程
定时器及时钟
计算机定时器和时钟是计算机系统中的关键组成部分,它们用于测量和控制时间,以执行各种任务,包括操作系统管理、任务调度、中断处理和性能监控。硬件定时器提供了时间基准,个人计算机定时器用于操作系统和RTC用于长期时间记录,CPU与定时器协作以执行时间相关的操作,而中断处理则用于处理定时器触发的中断事件。
硬件定时器
- 硬件计时器是计算机系统中的专用硬件组件,用于生成精确的时间间隔。硬件计时器通常是由计算机的主板或外部设备集成的,它们的主要任务是提供一个稳定的时间基准,以便系统可以测量时间和执行特定的时间相关操作。
- 硬件计时器通常以晶体振荡器为基础,通过计数振荡器的周期来测量时间。计时器可以以不同的频率运行,例如1毫秒、10毫秒或1秒等。
个人计算机定时器
- 个人计算机通常具有多个定时器,其中最重要的是系统时钟和实时时钟(RTC,Real-Time Clock)。系统时钟用于操作系统的时间跟踪,而RTC用于长期时间的记录,如日期和时间。
- 系统时钟通常以固定的频率运行,例如100赫兹或1000赫兹,以测量时间间隔并执行任务调度。它通常与操作系统的计时功能相关,例如定时器中断。
- RTC是一个独立的硬件设备,用于在计算机关闭时仍然维持准确的日期和时间信息。它通常由电池供电,因此即使计算机关闭,也可以继续工作。
CPU操作
- CPU可以与硬件定时器和个人计算机定时器一起工作,以执行时间相关的操作。例如,CPU可以设置一个计时器以在特定时间后触发中断。
- CPU可以使用特定指令来读取和设置计时器的计数值,以测量时间间隔。这些操作通常需要操作系统支持。
中断处理
- 中断是计算机系统中的一种机制,允许硬件或软件请求CPU的注意。计时器通常与中断处理相关,因为它们可以在达到特定时间间隔时生成中断请求。
- 操作系统会为特定计时器设置中断处理程序,以在计时器触发中断时执行特定任务。这可以用于任务调度、定时事件触发和其他时间相关的操作。
- 中断处理通常包括保存当前CPU状态、执行中断处理程序、然后恢复之前的状态以继续正常执行。
时钟服务函数
时钟服务函数和系统调用用于在Unix/Linux系统中获取和设置系统时间,以及获取进程的运行时间统计信息。gettimeofday 和 settimeofday 系统调用用于高精度的时间操作,time 系统调用用于获取Unix时间戳,times 系统调用用于获取进程的时间统计信息。另外,time 和 date 命令是用于在命令行中获取和设置系统时间的工具。
gettimeofday 和 settimeofday 系统调用
gettimeofday
是一个系统调用,用于获取当前系统时间,包括秒数和微秒数。它通常返回一个 timeval 结构,其中包含了秒数和微秒数的信息。这个函数在C语言中使用#include
<sys/time.h>
头文件。settimeofday
也是一个系统调用,用于设置系统的时间。这通常需要超级用户权限,因为改变系统时间可能会影响系统的正常运行。在大多数情况下,只有系统管理员才能调用此函数。
time 系统调用
time
是另一个系统调用,用于获取当前系统时间,但它返回的是一个表示自1970年1月1日以来经过的秒数的整数值(通常称为Unix时间戳)。这个时间戳可以用于时间日期的计算和比较。- time 函数通常在C语言中使用,它在头文件
#include <time.h>
中定义。
times 系统调用
times
是一个系统调用,用于获取进程的运行时间统计信息。它返回一个 tms 结构,其中包含了用户态和内核态时间的统计信息,以及进程创建后的累积时间等。- 这个函数通常在C语言中使用,它在头文件
#include <sys/times.h>
中定义。
time 和 date 命令:
time
命令用于在Unix/Linux系统中获取命令执行的时间统计信息。它显示了命令的用户态、系统态和实际时间。date
命令用于显示或设置系统时间和日期。通过 date 命令,您可以查看当前时间和日期,也可以设置系统时间和日期。