深入理解操作系统中的时间管理
1. 时间的测量方式
在现代操作系统中,时间有着多种用途,许多程序都需要对其进行跟踪。内核通过三种不同的方式来测量时间的流逝:
- 挂钟时间(或实时时间) :这是现实世界中的实际时间和日期,就像我们从墙上的时钟读取的时间一样。进程在与用户交互或为事件添加时间戳时会使用挂钟时间。
- 进程时间 :指的是一个进程所消耗的时间,既可以是直接在用户空间代码中消耗的时间,也可以是通过内核代表进程工作而间接消耗的时间。进程主要关心这种时间形式,用于性能分析和统计,例如测量某个操作所花费的时间。由于 Linux 的多任务性质,对于给定的操作,进程时间可能远小于挂钟时间,而且进程可能会花费大量时间等待 I/O(特别是键盘输入)。
- 单调时间 :这种时间源严格线性递增。大多数操作系统(包括 Linux)使用系统的正常运行时间(自启动以来的时间)。挂钟时间可能会发生变化,例如用户可能会设置它,并且系统会不断调整时间以纠正偏差,此外,闰秒等因素也会引入额外的不精确性。而系统正常运行时间是时间的确定性和不可更改的表示。单调时间源的重要方面不在于当前值,而在于保证时间源严格线性递增,因此可用于计算两次采样之间的时间差。
单调时间适合计算相对时间,而挂钟时间则适合测量绝对时间。这三种时间测量方式可以用两种格式表示:
- 相对时间 :是相对于某个基准的值,例如当前时刻,如从现在起 5 秒后,或 10 分钟前。
- 绝对时间 :表示时间时不依赖于任何基准,例如 1
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



