0%

操作系统之输入和输出(五):时钟

1. 时钟概述

  • 时钟(Clocks) 也被称为定时器(timers),时钟/定时器对任何程序系统来说都是必不可少的。时钟负责维护时间、防止一个进程长期占用 CPU 时间等其他功能。时钟软件(clock software) 也是一种设备驱动的方式
  • 下面我们就来对时钟进行介绍,一般都是先讨论硬件再介绍软件,采用由下到上的方式,也是告诉你,底层是最重要的

2. 时钟硬件

  • 在计算机中有两种类型的时钟,这些时钟与现实生活中使用的时钟完全不一样

    • 比较简单的一种时钟被连接到 110 V 或 220 V 的电源线上,这样每个电压周期会产生一个中断,大概是 50 - 60 HZ。这些时钟过去一直占据支配地位

    • 另外的一种时钟由晶体振荡器、计数器和寄存器组成,示意图如下所示

  • 这种时钟称为可编程时钟 ,可编程时钟有两种模式,一种是 一键式(one-shot mode),当时钟启动时,会把存储器中的值复制到计数器中,然后,每次晶体的振荡器的脉冲都会使计数器 -1

  • 当计数器变为 0 时,会产生一个中断,并停止工作,直到软件再一次显示启动。还有一种模式时 方波(square-wave mode) 模式,在这种模式下,当计数器变为 0 并产生中断后,存储寄存器的值会自动复制到计数器中,这种周期性的中断称为一个时钟周期

3. 时钟软件

  • 时钟硬件所做的工作只是根据已知的时间间隔产生中断,而其他的工作都是由时钟软件来完成,一般操作系统的不同,时钟软件的具体实现也不同,但是一般都会包括以下这几点
    • 维护一天的时间
    • 阻止进程运行的时间超过其指定时间
    • 统计 CPU 的使用情况
    • 处理用户进程的警告系统调用
    • 为系统各个部分提供看门狗定时器
    • 完成概要剖析,监视和信息收集

4. 软定时器

  • 时钟软件也被称为可编程时钟,可以设置它以程序需要的任何速率引发中断。时钟软件触发的中断是一种硬中断,但是某些应用程序对于硬中断来说是不可接受的
  • 这时候就需要一种软定时器(soft timer) 避免了中断,无论何时当内核因为某种原因呢在运行时,它返回用户态之前都会检查时钟来了解软定时器是否到期。如果软定时器到期,则执行被调度的事件也无需切换到内核态,因为本身已经处于内核态中。这种方式避免了频繁的内核态和用户态之前的切换,提高了程序运行效率
  • 软定时器因为不同的原因切换进入内核态的速率不同,原因主要有
    • 系统调用
    • TLB 未命中
    • 缺页异常
    • I/O 中断
    • CPU 变得空闲
-------------------- 本文结束感谢您的阅读 --------------------