深入理解操作系统中的时间管理
在现代操作系统中,时间管理至关重要,许多程序都需要对时间进行跟踪和处理。下面将详细介绍操作系统中时间的测量方式、表示格式、数据结构以及获取当前时间的方法。
1. 时间的测量方式
操作系统内核通过三种不同的方式来测量时间:
- 挂钟时间(Wall time,或实时时间) :这是现实世界中的实际时间和日期,就像我们从墙上的时钟读取的时间一样。进程在与用户交互或为事件添加时间戳时会使用挂钟时间。
- 进程时间(Process time) :指的是进程消耗的时间,包括直接在用户空间代码中消耗的时间,以及内核代表进程工作所消耗的间接时间。进程主要关心这种时间形式,用于性能分析和统计,例如测量某个操作所花费的时间。由于 Linux 的多任务特性,进程时间可能远小于挂钟时间,而且进程可能会花费大量时间等待 I/O 操作(尤其是键盘输入)。
- 单调时间(Monotonic time) :这种时间源严格线性递增,大多数操作系统(包括 Linux)使用系统的正常运行时间(自启动以来的时间)。挂钟时间可能会发生变化,例如用户手动设置时间,或者系统为了校正时间偏差而进行调整,还可能因为闰秒等因素引入额外的不精确性。而系统正常运行时间是时间的确定性和不可变表示。单调时间源的重要之处不在于当前值,而是保证时间源严格线性递增,因此适用于计算两次采样之间的时间差。
综上所述,单调时间适合计算相对时间,而挂钟时间则是测量绝对时间的理想选择。
2. 时间的表示格式
上述三种时间测量方式可以用两种格式
超级会员免费看
订阅专栏 解锁全文

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



