中断应用—时钟中断

在所有的外部中断中,时钟中断起特殊的作用。因为计算机是以精确的时间进行数值运算和数据处理的,最基本的时间单元是时钟周期,例如取指令、执行指令、存取内存等,这里讨论的是操作系统建立的时间系统,这个时间系统是整个操作系统活动的动力。

一、时钟硬件

大部分PC中有两个时钟源,分别是RTC和OS(操作系统)时钟RTC(实时时钟)也叫做CMOS(互补金属氧化物半导体)时钟,是PC主板上的一块芯片(时钟电路),靠电池供电,即使系统断电,也可以维持日期和时间。由于RTC独立于操作系统,所以也被称为硬件时钟,为整个计算机提供一个计时标准,是最原始最底层的时钟数据。

OS时钟产生于PC主板上的定时/计数芯片,由操作系统控制这个芯片的工作,OS时钟基本单位是该芯片的计数周期。开机时操作系统取得RTC中的时间数据来初始化OS时钟,然后通过计数芯片的向下计数形成OS时钟,所以OS时钟并不是本质意义上的时钟,更应该被称为一个计数器。OS时钟只在开机时才有效,完全由操作系统控制,也被称为软时钟或系统时钟

重点描述OS时钟的产生。

OS时钟使用的定时/计数芯片是8253/8254可编程定时/计数芯片,只简单描述它如何维持OS时钟的。OS时钟的物理产生如图5.7所示。

分析:

可编程定时/计数器由计数硬件和通信寄存器组成。通信寄存器包含有控制寄存器、状态寄存器、计数初始值寄存器(16位)、计数输出寄存器等。通信寄存器在计数硬件和操作系统之间建立联系,用于二者之间的通信,操作系统通过这些寄存器控制计数硬件的工作方式、读取计数硬件的当前状态和计数值等信息。在Linux内核初始化时,内核写入控制字和计数初值,计数硬件会按照一定的计数方式对晶振产生的输入脉冲信号进行计数操作:计数器从计数初值开始,每收到一次脉冲信号,计数器减1,当计数器减到0时,输出高电平或低电平。然后,如果计数为循环方式,则重新从计数初值进行计数,产生如上图所示的输出脉冲信号。输出脉冲是OS时钟的硬件基础,因为这个输出脉冲将接到中断控制器上,产生中断信号,触发时钟中断,由时钟中断服务程序维持OS时钟的正常工作。维持,其实是简单的加1及细微的修正操作。这是OS时钟产生的来源。

二、时钟运作机制

不同的操作系统,RTC和OS时钟的关系不同。RTC和OS时钟之间的关系也被称作操作系统的时钟运作机制。

一般来说,RTC是OS时钟的时间基准,操作系统通过读取RTC来初始化OS时钟,此后二者保持同步运行,共同维持系统时间。同步,是指操作系统在运行过程中,每隔一个固定时间会刷新或校正RTC中的信息。

Linux中的时钟运作机制如图5.8所示。

OS时钟和RTC之间要通过BIOS连接,这是因为传统PC的BIOS中固化有对RTC进行有关操作的函数,例如从RTC中读出有关数据对OS时钟初始化、对RTC进行更新等。Linux在内核初始化完成后完全抛弃BIOS(基本输入输出系统)中的程序。

RTC处于最底层,提供最原始的时钟数据。OS时钟建立在RTC之上,初始化完成后完全由操作系统控制,与RTC脱离关系。操作系统通过OS时钟提供给应用程序所有和时间有关的服务。因为OS时钟是一个软件问题,其能表达的时间由操作系统的设计者决定,将OS时钟定义为整型、长整型还是大的类型由设计者来决定。

三、Linux时间系统

下面具体描述OS时钟。

OS时钟是由可编程定时/计数器产生的输出脉冲触发中断产生的。输出脉冲的周期叫做一个时钟节拍。计算机中的时间以时钟节拍为单位,每一次时钟节拍,系统时间就会加1。操作系统根据当前时钟节拍的数目可计算出以秒或毫秒等为单位的其他时间格式。

不同的操作系统采用不同的时间基准。定义时间基准的目的是为了简化计算,计算机中的时间只要表示为从这个时间基准开始的时钟节拍数就可以。时间基准由操作系统的设计者规定的。例如,Linux的时间基准是1970年1月1日凌晨0点。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值