2017/6/21


时间这一概念在生活中至关重要,而在操作系统中也同样重要,其在系统中的功能绝不仅仅是给用户提供时间这么简单,内核的许多机制都依赖于时间子系统。但凡是要在某个精确的时间执行某个事件,必然会用到时间子系统。而内核中定时器的发展可以以2.6版本的内核作为一个分界点。之前主要是低分辨率定时器,2.6开发期间便引入了高分辨率定时器。分辨率的高低意味着时间粒度的大小。

本节重点介绍下涉及到的几个重点概念

  1. 时钟设备
  2. 周期时钟/动态时钟
  3. 高分辨率/低分辨率
  4. 定时器

时钟设备时钟设备算是最低层的硬件设备,具体的信号由时钟设备触发,其最主要的功能就是提供周期时钟。传统定时器就是基于这种周期时钟的。周期时钟的一个特性就是按照固定的时间间隔触发事件,这里就是引起中断。回想早起的基于时间片的进程调度算法可知周期时钟在其中扮演着不可或缺的作用。时钟设备有两个关键特性:1、支持周期性事件。2、支持单点触发事件。前者是实现周期时钟的基础。单点触发模式下,事件只能执行一次,下次的执行需要重新编程,显示设置执行的时间。所以后者是动态时钟的基础。 当时钟设备初始化时,默认是采用周期模式工作的。 且在初始化时,如果还没有明确的全局时钟设备,则采用该设备担当此职责。

周期时钟/动态时钟周期时钟和动态时钟仅仅是上述时钟设备工作的两种不同的模式。周期时钟负责周期性的触发事件;而动态时钟状态下,可以根据实际需要启用/禁止周期时钟。例如在电脑无事可做时,就不需要周期性的触发事件,这种情况下可以禁止周期时钟达到省电的效果。使用动态时钟的前提条件是时钟设备支持单点触发模式,否则无法启用动态时钟。在支持单点触发模式的时钟设备支持下,可以由周期时钟切换到动态时钟。

高分辨率/低分辨率分辨率的高低即需要硬件的支撑也需要软件的实现。二者和周期时钟以及动态时钟的关系是正交的,即低分辨率下可以实现周期时钟和动态时钟;高分辨率下也可以实现周期时钟和动态时钟。需要注意的是低分辨率下的动态时钟需要单点触发设备的支持,并且编译内核时需要选择固定的项。而在高分辨率下的周期时钟是通过模拟实现的,由于高分辨率下设备总是单点触发模式,所以其通过一个高分辨率定时器显示的设置周期性事件。

定时器定时器是在上述机制的基础上实现的延迟机制。分为低分辨率定时器和高分辨率定时器。低分辨率定时器在低分辨率系统上实现;而高分辨率定时器在二者均可实现,但是碍于低分辨率设备的限制,不能提供高分辨率信号,感觉仅仅是在高分辨率框架下实现的低分辨率定时器

时间子系统最主要的功能还是维护系统时间的有序性,以及基于时间所需要的一系列工作。而现在硬件架构多为多处理器架构,单个时钟设备下虽然也可以达到目的,但是会额外增加许多处理器间的通信开销,因此,现代处理器多为每个CPU都分配一个时钟设备。由其中一个负责全局的时间管理,如jiffies的更新,墙上时间的更新,以及计算全局负载。而局部的CPU上的设备一般负责进程统计、性能剖析和实现高分辨率定时器。高分辨率定时器只能工作在提供局部时钟设备的系统上,否则由于分辨率的增加,引起的时钟中断数量会急促增长造成CPU间的大量通信,从而降低系统性能。

参考资料:深入linux内核架构、linux3.10.1内核源码

linux下的时间管理概述的更多相关文章

  1. 安装VMtools vim编辑器的使用 压缩包命令 Linux下的用户管理 (第三天)

    VM tools:方便我们虚拟机和宿主机之间复制数据或移动文件等 安装VMtools 1.菜单栏-虚拟机-安装VM tools 将其选中 2.进入系统,在桌面位置里面有VM tools的光盘,双击进入 ...

  2. Linux下长时间ping网络加时间戳并记录到文本

    Linux下长时间ping网络加时间戳并记录到文本   由于一些原因,比如需要检查网络之间是否存在掉包等问题,会长时间去ping一个地址,由于会输出大量的信息而且最好要有时间戳,因此我们可以使用简单的 ...

  3. Linux下精确控制时间的函数

    Linux下精确控制时间的函数 在测试程序接口运行时间的时候,常用time,gettimeofday等函数,但是这些函数在程序执行的时候是耗费时间的,如果仅仅测试时间还行,但是如果程序中用到时间控制类 ...

  4. 【one day one linux】linux下的软件包管理工具

    Linux 下的软件包管理工具 linux下的软件安装可以通过两种方式,一种是直接使用自带的软件包管理工具安装,另外一种通过编译源码安装. 1.软件包的种类 Red Hat和Fedora:redhat ...

  5. Linux下设置时间

    Linux下设置时间 提供两种最根本有效的方式,就是更改时区.这里以更改为国内上海时间例子,其他地方时区同理. 方法一 备份文件 mv /etc/localtime /etc/localtime.ba ...

  6. Linux下系统时间函数、DST等相关问题总结(转)

    Linux下系统时间函数.DST等相关问题总结 下面这个结构体存储了跟时区相关的位移量(offset)以及是否存在DST等信息,根据所在的时区信息,很容易找到系统时间与UTC时间之间的时区偏移,另外根 ...

  7. Linux下c语言环境概述

    Linux下C语言环境概述 主要涉及编辑器.编译链接器.调试器.项目管理工具 编辑器 Linux中常用的编辑器有vi和emacs 查看vim配置文件并编辑 编译链接器 在Linux中,最常用的编译器是 ...

  8. Linux 下权限的管理

    Linux 下权限的管理 我们都知道,Linux系统对于用户的权限管理是十分严格的. 那么,我们就来具体了解一下. 一. 用户 在Linux中按照类型用户分为两种:1.超级用户 2.普通用户 那么它们 ...

  9. 学习Linux下的文件目录管理

                    文件目录管理 一.认识Linux文件系统的架构 在Linux中是没有盘符这个概念的,即Linux中没有C盘和D盘的分盘.那么我们直接通过对目录的操作实现对磁盘的读写,因 ...

随机推荐

  1. 基于jQuery动画二级下拉导航菜单

    春节回来给大家分享一款基于jQuery动画二级下拉导航菜单.鼠标经过的时候以动画的形式出现二级导航.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id=" ...

  2. XML-RPC使用手册

    内容列表 Preface: About This Manual Introduction to XML-RPC for C/C++ What is XML-RPC? How Does XML-RPC ...

  3. 关于ajax跨域的一些说说

    跨域:跨当然是跨过去,域当然是别的服务器 (说白点就是去别服务器上取东西) 只要协议.域名.端口有任何一个不同,都被当作是不同的域 ajax 是一种请求响应无刷新技术(xmlhttqrequest对象 ...

  4. 举例说明:Hadoop vs. NoSql vs. Sql vs. NewSql

    转自:http://blog.jobbole.com/86269/   尽管层次数据库如今在大型机上依然被广泛使用,但关系数据库(RDBMS)(SQL)已经占领了数据库市场,并且表现的相当优异.我们存 ...

  5. php如何判断两个时间的时间差

    $time1=2011-11-11 11:11:11$time2=2016-12-10 16:58:13 代码: if(abs(strtotime($time2)-strtotime($time1)) ...

  6. hdu 1181:变形课(搜索水题)

    变形课 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submis ...

  7. RabbitMQ用户角色及权限控制 -2

    1.RabbitMQ的用户角色分类: none.management.policymaker.monitoring.administrator none 不能访问 management plugin ...

  8. LoadRunner学习---脚本编写(4)(比较重要)

    今天接着来翻译http://www.wilsonmar.com/中关于LoadRunner脚本编写部分,下面该翻译脚本编写中一些比较重要的部分了. Web用户Action 在VuGen中,脚本产生的默 ...

  9. 转载 --iOS实用小技巧(2)-生成txt文本

    //不论是创建还是写入只需调用此段代码即可 如果文件未创建 会进行创建操作 - (void)writeToFileWithTxt:(NSString *)string{ dispatch_async( ...

  10. Woody的Python学习笔记3

    Python运算符 Python逻辑运算符 and布尔与-假设x为false.x and y返回false,否则它返回y的计算值. or 布尔或-假设x是true,它返回true.否则它返回y的计算值 ...