本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。  

  长期以来,UNIX系统一直使用两种不同的时间值:

  (1)日历时间

  该值是自1970年1月1日00:00:00以来国际标准时间(UTC)所经过的秒数累计值(早期的手册称UTC为格林尼治标准时间)。这些时间值用于记录文件最近一次的修改时间等。

  系统基本数据类型time_t用于保存这种时间值。

  (2)进程时间

  这也被称为CPU时间,用以度量进程使用的中央处理机资源。进程时间以时钟滴答计算,历史上曾经去每秒钟为50、60或100个滴答。

  系统基本数据类型clock_t用于保存这种时间值。可以使用sysconf函数得到每秒时钟滴答数。

  当度量一个进程的执行时间时,UNIX系统使用三个进程时间值:

  (1)时钟时间。

  (2)用户CPU时间。

  (3)系统CPU时间。

  时钟时间又称为墙上时钟时间(wall clock time)。它是进程运行的时间总量,其值与系统中同时运行的进程数有关。

  用户CPU时间是执行用户指令所用的时间。系统CPU时间是为该进程执行内核程序所经历的时间。例如,每当一个进程执行一个系统服务时,例如read或write,则在内核中执行该服务所花费的时间就计入该进程的系统CPU时间。用户CPU时间和系统CPU时间之和常被称为CPU时间。

  此处插入参考:http://bbs.csdn.net/topics/320059058

  用户CPU是程序处在用户态的时间,系统CPU的程序处于内核态的时间。
      时钟时间>=用户+系统,是程序实际占用的CPU时间。
      一般情况下real时间是从程序运行到程序结束所用的真实时间,因为运行过程中会被暂时挂起(因为还要运行别的进程),所以real>user+sys。也有real < user+sys的情况
      时钟时间不是两者之和。

  其实 时钟时间与他们并没有什么直接的关系。下面是一些定义
      时钟时间:就是一个进程从开始运行到结束运行后,你的时钟走过了多少时间,这其中包含了进程在阻塞和等待状态的时间。
      用户CPU时间:就是用户的进程获得了CPU资源以后,在用户态执行的时间。
      系统CPU时间:用户进程获得了CPU资源以后,在内核态的执行时间。
      进程的三种状态为阻塞、就绪、运行。
      时钟时间 = 阻塞时间 + 就绪时间 + 运行时间
      用户CPU时间 = 运行状态下的用户空间时间
      系统CPU时间 = 运行状态下系统空间的时间。
      用户CPU时间+系统CPU时间=运行时间(CPU时间)。

  要取得任一进程的时钟时间、用户时间和系统时间是很容易的——只要执行命令time(1),其参数是要度量其执行时间的命令。例如:

[root@localhost unix_env_advance_prog]# time ls
apue.h prog1- prog1-.c prog1- prog1-.c prog1- prog1-.c
error.c prog1-.c prog1- prog1-.c prog1- prog1-.c
Makefile prog1- prog1-.c prog1- prog1-.c prog1- real 0m0.007s
user 0m0.000s
sys 0m0.007s

UNIX基础知识之时间值的更多相关文章

  1. UNIX环境高级编程--第一章 UNIX基础知识

    第一章 UNIX基础知识 1.2 UNIX体系结构   从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们将这种软件称为内核(kernel),因为 它相对较小,且 ...

  2. 《UNIX环境高级编程》(APUE) 笔记第一章 - UNIX基础知识

    1 - UNIX基础知识 Github 地址 1. 操作系统 可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.通常将这种软件称为 内核 (kernel) .( Linux 是 GN ...

  3. 《UNIX环境高级编程》笔记——1.UNIX基础知识

    这一章节侧重一些基本概念和书中用到的一些名词. 一.引言 所有的操作都提供服务,典型的服务包括:执行新程序.打开文件.读写文件.分配存储区以及获得当前时间等. 二.UNIX体系结构 其实linux常见 ...

  4. UNIX环境高级编程 第1章 UNIX基础知识

    所有操作系统都为运行在它之上的程序提供各种服务,典型的服务包括:执行新程序.打开文件.读写文件.分配存储空间.提供时间等. UNIX体系结构 严格来说,操作系统是一种软件,它控制计算机硬件资源,提供程 ...

  5. UNIX 基础知识

    登陆       1.登录名            系统在其 口令文件(通常是/etc/passwd文件) 中查看用户名,口令文件中包含了有关用户的信息.       2.shell          ...

  6. APUE(1)----UNIX基础知识

    一.UNIX体系结构 所有操作系统都为他们所运行的程序提供服务,典型的服务包括:执行新程序.打开文件.读文件.分配存储区等.严格意义上来说,操作系统可以定义为一种软件,它控制计算机硬件资源,提供程序运 ...

  7. 第一章 UNIX 基础知识

    1.1 Unix体系结构 OS定义为一种软件,它控制计算机硬件资源,提供程序运行环境,一般称其为内核(kernel),它体积小,位于环境中心. 内核的接口为系统调用(system call),共用函数 ...

  8. apue学习笔记(第一章UNIX基础知识)

    总所周知,UNIX环境高级编程是一本很经典的书,之前我粗略的看了一遍,感觉理解得不够深入. 听说写博客可以提高自己的水平,因此趁着这个机会我想把它重新看一遍,并把每一章的笔记写在博客里面. 我学习的时 ...

  9. APUE 学习笔记(一) Unix基础知识

    1. Unix 体系结构   内核的接口被称为系统调用 公用函数库构建在系统调用接口之上 应用软件既可以调用公用函数库,也可以直接进行系统调用   2. 文件和目录 目录操作函数:opendir--- ...

随机推荐

  1. 再谈Jquery Ajax方法传递到action(转)

    之前写过一篇文章Jquery Ajax方法传值到action,本文是对该文的补充. 假设 controller中的方法是如下: public ActionResult ReadPerson(Perso ...

  2. document.body、document.documentElement和window获取视窗大小的区别

    来源:http://www.ido321.com/906.html 在w3school关于window对象的介绍中,介绍了获取浏览器窗口大小的三种方法(浏览器的视口,不包括工具栏和滚动条). 对于In ...

  3. htmlcss笔记--标签默认值样式重置css reset(2)

    1.内联,内嵌,行内元素: 默认可以继续跟同类型标签显示: 由内容撑开宽度,内容多宽,会有多宽: span,内嵌标签部支持宽高,即使加了宽高也不支持, 也不支持上下内外边距,但是支持左右内外边距:内上 ...

  4. Modules-nodejs

    Modules Node有一个简易的模块加载系统.在node中,文件和模块是一一对应的.下面示例是foo.js加载同一目录下的circle.js. foo.js的内容: var circle = re ...

  5. [apkAnalyzer] 查看APK包名

    最近项目中要用到APK的包名,必应到apkAnalyzer这个软件可以用,下载解压后,看到这么些jar,bat文件不知道怎么用. 参考了这篇文章,看的也不甚明白,最后还是试出来了,这里记录一下. 首先 ...

  6. .net组件技术

    .NET是什么? •.NET是一个平台,而不是一种语言. •.NET是Microsoft的用以创建XML Web服务(下一代软件)平台,该平台将信息.设备和人以一种统一的.个性化的方式联系起来.   ...

  7. pyinstaller使用小结

    安装pyinstaller pip install -U pyinstaller 生成控制台程序 pyinstaller ./example.py 在当前目录的dist文件夹内可以找到编译成功的程序 ...

  8. SSH原理与运用一:远程登录(转)

    原文:http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html 作者: 阮一峰 SSH是每一台Linux电脑的标准配置. 随着Linux ...

  9. Linux下常用的shell命令记录

     硬件篇 CPU相关 lscpu #查看的是cpu的统计信息. cat /proc/cpuinfo #查看CPU信息详细信息,如每个CPU的型号,主频等 内存相关 free -m #概要查看内存情况 ...

  10. ios页面传值的几种方法

    1.属性2.方法3.代理方法4.SharedApplication5.NSUserdefault6.通过一个单例的class来传递 属性这种方法传值挺方便的,只需要拿到它的指针,如果重新声明一个指针, ...