深入理解操作系统中的时间管理
在现代操作系统中,时间管理至关重要,许多程序都需要对时间进行跟踪和处理。下面将详细介绍操作系统中时间的表示、测量、相关数据结构以及获取时间的方法。
1. 时间的测量方式
操作系统通过三种不同的方式来测量时间:
-挂钟时间(实时时间):这是现实世界中的实际时间和日期,就像我们在墙上的时钟上看到的时间一样。进程在与用户交互或为事件添加时间戳时会使用挂钟时间。
-进程时间:指进程消耗的时间,包括直接在用户空间代码中消耗的时间,以及内核代表进程工作所消耗的间接时间。进程主要关注这种时间形式,用于性能分析和统计,例如测量某个操作所花费的时间。由于 Linux 的多任务特性,进程时间可能远小于挂钟时间,而且进程还可能花费大量时间等待 I/O 操作(特别是键盘输入)。
-单调时间:这种时间源严格线性递增。大多数操作系统(包括 Linux)使用系统启动时间(自启动以来的时间)作为单调时间。挂钟时间可能会因为用户设置或系统对时间偏差的调整而改变,还可能会受到闰秒等因素的影响。而系统启动时间是一个确定且不可改变的时间表示。单调时间的重要之处不在于当前值,而在于它严格线性递增的特性,因此适用于计算两次采样之间的时间差。
单调时间适合计算相对时间,而挂钟时间则适合测量绝对时间。
这三种时间测量方式可以用两种格式表示:
-相对时间:相对于某个基准的时间值,例如从现在起 5 秒后,或 10 分钟前。
-绝对时间