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. oracle 存储过程学习感悟

    1.跟大白话差不多 2.if...then.... else ....写的比较多 3.调用存储过程命令:execute procedure_name 4.调用存储函数命令:select '0' str ...

  2. Apache Rewrite 拟静态

    mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面.一些防盗链就是通过该方法做到的. 00x1 启动rewrite引擎 00x2 如何启用apache rewrite? 0 ...

  3. 一些lua代码

    1.把k--v表转化为数组表,只支持2级 2.取中值 3.字符串按每行最多n像素分割,并返回每行最大宽度,可以用"\n"手动换行

  4. 原创jQuery插件之图片自适应

    效果图例如以下: 功能:使图片自适应居中位于容器内 限制:容器须要给定大小 用法: 1.引入jQuery.然后引入fitimg插件 2.给须要图片自适应的容器固定宽高 3.header .accoun ...

  5. 树链剖分 + 后缀数组 - E. Misha and LCP on Tree

    E. Misha and LCP on Tree Problem's Link Mean: 给出一棵树,每个结点上有一个字母.每个询问给出两个路径,问这两个路径的串的最长公共前缀. analyse: ...

  6. java为安全起见对Applet有所限制

    Applet消亡的原因: ①java为安全起见对Applet有所限制:Applet不允许访问本地文件信息.敏感信息,不能执行本地指令(比如FORMAT),不能访问初原服务器之外的其他服务器. ① IE ...

  7. jquery -- 同时监听多个事件

    多个事件触发同一反应 $("#redrow").on("click touchend",function(){});//每个监听事件之间用 “空格” 隔开 多个 ...

  8. 【NOIP模拟题】Incr(dp)

    太水的dp没啥好说的.. #include <cstdio> #include <cstring> #include <cmath> #include <st ...

  9. 【BZOJ】1625: [Usaco2007 Dec]宝石手镯(01背包)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1625 太水了. #include <cstdio> #include <cstri ...

  10. 透過 bc 計算 pi

    echo "scale=${num}; 4*a(1)" | bc -lq例如: echo "scale=5000; 4*a(1)" | bc -lq 4*a(1 ...