-
\"Cadence入门教程中关于UNIX时间值的讲解\
资源介绍
1.10 UNIX时间值
长期以来,U N I X系统一直使用两种不同的时间值:
(1) 日历时间。该值是自1 9 7 0年1月1日0 0 : 0 0 : 0 0以来国际标准时间(U T C)所经过的秒数累
计值(早期的手册称U T C为格林尼治标准时间)。这些时间值可用于记录文件最近一次的修改
时间等。
(2) 进程时间。这也被称为C P U时间,用以度量进程使用的*处理机资源。进程时间以
时钟滴答计算,多年来,每秒钟取为 5 0、6 0或1 0 0个滴答。系统基本数据类型 c l o c k _ t保存这种
时间值。另外,P O S I X定义常数C L K _ T C K,用其说明每秒滴答数。(常数C L K _ T C K现在已不
再使用。2 . 5 . 4节将说明如何用s y s c o n f函数得到每秒时钟滴答数。)
当度量一个进程的执行时间时(见3 . 9节),U N I X系统使用三个进程时间值:
• 时钟时间。
• 用户C P U时间。
• 系统C P U时间。
时钟时间又称为墙上时钟时间(wall clock time)。它是进程运行的时间总量,其值与系统
中同时运行的进程数有关。在我们报告时钟时间时,都是在系统中没有其他活动时进行度量的。
用户C P U时间是执行用户指令所用的时间量。系统 C P U时间是为该进程执行内核所经历
的时间。例如,只要一个进程执行一个系统服务,例如 r e a d或w r i t e,则在内核内执行该服务
所花费的时间就计入该进程的系统 C P U时间。用户 C P U时间和系统 C P U时间的和常被称为
C P U时间。
要取得任一进程的时钟时间、用户时间和系统时间很容易——只要执行命令 t i m e ( 1 ),其参
数是要度量其执行时间的命令,例如:
$ cd /usr/include
$ time grep _POSIX_SOURCE */*.h > /dev/null
real 0m19.81s
user 0m0.43s
sys 0m4.53s
t i m e命令的输出格式与所使用的s h e l l有关。
8 . 1 5节将说明一个运行进程如何取得这三个时间。关于时间和日期的一般说明见 6 . 9节。
1 . 11 系统调用和库函数
所有的操作系统都提供多种服务的入口点,由此程序向内核请求服务。各种版本的 U N I X
都提供经良好定义的有限数目的入口点,经过这些入口点进入内核,这些入口点被称为系统调
用(system call)。系统调用是不能更改的一种 U N I X特征。U N I X第7版提供了约5 0个系统调用,
4 . 3 + B S D提供了约11 0个,而S V R 4则提供了约1 2 0个。
1 4 U N I X环境高级编程