【操作系统】运行机制–依赖的硬件环境
写在前面
- 关于文章
任何程序在计算机上运行都需要一定的条件,或者说需要一定的运行环境,操作系统也不例外。为了实现操作系统预定的各种管理功能,同样需要有运行环境来支持其工作。
操作系统的运行环境主要包括计算机系统的硬件环境和由其他的系统软件形成的软件环境
。这里首先学习以下操作系统运行的硬件环境
。这里主要学习了CPU、存储体系、中断技术、系统调用、I/O技术、时钟等,关于这些偏向于硬件、底层的理论知识,不需要死记硬背概念,到做到知道其原理、学习其设计思想。
- 我的站点
- 联系我
🐧:
2410685763
WeChat:
Super_Baby_00
公众号:
编程那点事儿
CPU
操作系统作为一个程序
(系统软件)要在处理器上执行。如果一个计算机系统只有一个处理器,我们称之为单机系统
。如果有多个处理器称之为多处理器系统
。
构成与工作方式
一般的处理器由运算器
、控制器
、一系列寄存器
以及高速缓存
构成。
运算器
实现任何指令中的算术和逻辑运算
,是计算机计算的核心;控制器
负责控制程序运行的流程
,包括取指令,维护CPU状态,CPU 与内存的交互等;寄存器
是指令在CPU内部作处理的过程中暂存数据、地址以及指令信息的存储设备
,在计算机的存储系统中它具有最快的访问速度
;高速缓存
处于CPU和物理内存之间,一般由控制器中的内存管理单元(Memory Management Unit,MMU)管理,它的访问速度快于内存,低于寄存器,它利用程序局部性原理
使得高速指令处理和低速内存访问得以匹配,从而大大地提高了CPU的效率。下面重点说说CPU中的寄存器组吧!
处理器中的寄存器
寄存器为处理器本身提供了一定的存储能力
,它们的速度比主存储器快得多,但是因为造价很高,存储容量一般都很小。处理器一般包括两类寄存器:
用户可见寄存器
,对于高级语言来说,编译器通过一定的算法分配并使用这些寄存器,以最大限度地减少程序运行时访问主存储器的次数,这对程序的运行速度影响很大;用户可见寄存器通常对所有程序都是可用的,由机器语言直接使用
。它一般包括数据寄存器、地址寄存器以及条件码寄存器。数据寄存器
( Data Register)有时又称为通用寄存器,主要用于各种算术逻辑指令和访存指令,对具有浮点能力和多媒体能力的处理器来说,浮点处理过程的数据寄存器和整数处理时的数据寄存器一般是分离的。地址寄存器
( Address Register)用于存储数据及指令的物理地址、线性地址或者有效地址,用于某种特定方式的寻址。条件码寄存器
保存CPU操作结果的各种标记位,例如算术运算产生的溢出,符号等,这些标记在条件分支指令中被测试,以控制程序指令的流向。一般来讲,条件码可以被隐式访问,但不能通过显式的方式修改
。
控制和状态寄存器
,它们用于控制处理器的操作,一般由具有特权的操作系统代码使用以控制其他程序的执行。最常见的控制和状态寄存器包括程序计数器
( Program Counter, PC),它记录了将要取出的指令的地址;指令寄存器
( Instruction Register, IR) ,包含了最近取出的指令;程序状态字
( Program Status Word ,PSW ) ,它记录了处理器的运行模式信息等,有的处理器中它还包含了条件码。
指令执行过程
处理指令最简单的方式包括两个步骤:处理器先从存储器中每次读取一条指令
。然后执行这条指令
。一个这样的单条指令处理过程称为一个指令周期
。
典型处理器中,每个指令周期开始的时候,处理器依据在程序计数器
中保存的指令地址从存储器中取一条指令,并在取指令完成后根据指令类别自动将程序计数器的值变成下一条指令的地址
,通常是自增1。取到的指令被放在处理器的指令寄存器中
,指令中包含了处理器将要采取的动作的位,处理器于是解释并执行所要求的动作。这些指令大致可以分成5类:访问存储器指令、I/O指令、算术逻辑指令、控制转移指令以及处理器控制指令。
处理器的状态
管态和目态
处理器有时执行用户程序,有时执行操作系统的程序。在执行不同的程序时,根据运行的程序对资源和机器指令的使用权限
而将此时的处理器设置为不同状态。多数系统将处理器工作状态划分为管态
和目态
。
管态:一般指操作系统管理程序运行的状态,具有较高的特权级别,又称为特权态(特态),系统态;
目态:一般指用户程序运行时的状态,具有较低的特权级别,又称为普通态(普态)、用户态。
当处理器处于管态时全部指令(包括特权指令)可以执行,可使用所有资源,并具有改变处理器状态的能力。当处理器处于目态时,就只有非特权指令能执行,一般说来,特权级别越高,可以运行的指令集合也越大,而且高特权级别对应的可运行指令集合包含低特权级的。
CPU状态的转换
在系统运行过程中,CPU的状态是动态改变的,时而运行于管态,时而运行于目态,即管态和目态这两种状态可以相互转换。
1)目态到管态的转换
其转换的途径是通过中断或异常
。中断响应时交换中断向量,新的中断向量中的PSW的CPU 状态位标志为管态。
2)管态到目态的转换
可通过设置PSW指令
(修改程序状态字),实现从操作系统向用户程序的转换。
当中央处理器处于管态时可执行包括特权指令在内的一切机器指令;当中央处理器处于目态时不允许执行特权指令。系统启动时,CPU的初始状态为管态,然后装入操作系统程序
。操作系统退出执行时,让用户程序在目态执行。
程序状态字
用一个专门的寄存器来指示处理器状态,称为程序状态字( PSW)
;用程序计数器(PC)这个专门的寄存器来指示下一条要执行的指令
。
处理器的程序状态字(PSW)通常包括以下状态代码:
- CPU的工作状态代码——指明管态还是目态,用来说明当前在CPU上执行的是操作系统还是一般用户,从而决定其是否可以使用特权指令或拥有其他的特殊权力。
- 条件码——反映指令执行后的结果特征。
- 中断屏蔽码——指出是否允许中断。
存储体系
大家都知道,一个作业必须把它的程序和数据存放在主存储器(又称内部存储器、内存)中才能运行
。操作系统不但要管理﹑保护这些程序和数据,使它们不至于受到破坏,而且操作系统本身也要存放在主存储器中并运行,因此主存储器以及与存储器管理有关的机构是支持操作系统运行的硬件环境的一个重要方面。
存储器的层次结构
从整个系统来看,在计算机系统中的层次化的存储体系是由寄存器
、高速缓存
﹑内存储器
、硬盘存储器
﹑磁带机和光盘存储器
等装置构成的。
存储保护
存放在主存中的用户程序和操作系统,以及它们的数据,有可能受到正在CPU上运行的某用户程序的有意或无意的破坏,这会造成十分严重的后果。要实现存储保护,必须要有硬件的支持
。如果在某种计算机系统中没有对存储器的硬件保护机构,想单纯通过操作系统保护住存储的内容不受有意或无意的破坏,那是无法做到的。
界地址寄存器(界限寄存器)
界地址寄存器
是被广泛使用的一种存储保护技术。这种机制比较简单,易于实现。其方法是在CPU中设置一对界限寄存器来存放该用户作业在主存中的下限和上限地址,分别称为下限寄存器和上限寄存器
。也可将一个寄存器作为基址寄存器.另一寄存器作为限长寄存器(指示存储区长度)的方法来指出程序在内存的存放区域。每当CPU要访问主存时,硬件
自动将被访问的主存地址与界限寄存器的内容进行比较,以判断是否越界。如果未越界,则按此地址访问主存,否则将产生程序中断。
中断与异常机制
中断与异常机制是操作系统中极为重要的一个部分。操作系统在管理输入输出设备时,在处理外部的各种事件时,都需要通过中断与异常机制进行处理
。所以也有人把操作系统称为是由“中断驱动”或者“事件驱动”的。
由于中断与异常机制的实现必须依靠相关的硬件支持
,所以硬件中断装置是操作系统运行环境中的一个极为重要的组成部分。中断的实现是硬件中断装置和相应的中断处理软件共同完成的
概念
所谓中断是指CPU对系统中或系统外发生的异步事件的响应。异步事件也就是随机事件。
“中断”这个名称来源于:当发生某个异步事件后,中断了处理器对当前程序的执行,而转去处理该异步事件(称作执行该事件的中断处理程序
)。在该异步事件处理完了之后,处理器再转回原程序的中断点继续执行。
中断是所有要打断处理器的正常工作次序,并要求其去处理某一事件的一种常用手段。中断技术相关术语:
我们把引起中断的那些事件称为中断事件或中断源
;中断源向处理器发出的请求信号称为中断请求
;而把处理中断事件的那段程序称为中断处理程序
;发生中断时正在执行的程序的暂停点叫作中断断点
;处理器暂停当前程序转而处理中断的过程称为中断响应
。中断处理结束之后恢复原来程序的执行被称为中断返回
。
一个计算机系统提供的中断源的有序集合一般被称为中断字
,这是一个逻辑结构,在不同的处理器有着很不相同的实现方式。在一台计算机中有多少中断源,是根据各个计算机系统的需要而安排的。就PC而言,它的微处理器能处理256种不同的中断
。
为了使得中断装置可以找到恰当的中断处理程序,专门设计了中断处理程序人口地址映射表
,又称中断向量表
。表中的每一项称为一个中断向量
,主要由程序状态字PSW和指令计数器PC的值组成。不同性质的中断源需要用不同的中断处理程序来处理,也就是对应不同的中断向量。通过中断向量,可以找到中断处理程序在主存中的位置。
中断技术解决了主机和外设并行工作的问题
,消除了因外设的慢速而使得主机等待的现象,为多机操作和实时处理提供了硬件基础。
一般来说中断具有以下作用:
能充分发挥处理器的使用效率
。因为输入输出设备可以用中断的方式同CPU通信,报告其完成CPU所要求的数据传输的情况和问题,这样可以免除CPU不断地查询和等待,从而大大提高处理器的效率。
提高系统的实时能力
。因为具有较高实时处理要求的设备,可以通过中断方式请求及时处理,从而使处理器立即运行该设备的处理程序(也是该中断的中新处理程序)。
中断是由外部事件引发的,而异常则是由正在执行的指令引发的
。
分类
典型的中断包括:
时钟中断
。由处理器内部的计时器产生,允许操作系统以一定规律执行函数,如时间片到时、硬件实时钟到时等。输入输出(I/O)中断
。由IО控制器产生,用于通知一个I/O操作的正常完成或者发生的错误。控制台中断
,如系统操作员通过控制台发出命令等。硬件故障中断
,由掉电、存储器校验错等硬件故障引起等。
异常发生的时间以及位置具有确定性,典型的异常包括:
程序性中断
。在某些条件下由指令执行结果产生,例如算术溢出﹑被零除、目态程序试图执行非法指令、访问不被允许访问的存储位置、虚拟存储中的缺页等。访管指令异常
。目的是要求操作系统提供系统服务。
中断系统
可以把中断系统分为两大组成部分:中断系统的硬件中断装置
和软件中断处理程序
。硬件中断装置负责捕获中断源发出的中断请求,并以一定的方式响应中断源,然后将处理器的控制权移交给特定的中断处理程序。中断处理程序则针对中断事件的性质而执行相应的一系列操作。
接收中断请求
中断逻辑线路
用于接收中断信号,并把收到的中断信号寄存在线路中的硬件触发器
中。在中断逻辑线路中有若干个专门接受中断信号的触发器,每个触发器称为一个中断位
。通常规定,一个触发器的值为1时,表示该触发器收到中断信号,为0时表示无中断信号。这些触发器的全体称为中断寄存器,所以中断寄存器是由若干个中断位组成的。
中断响应
处理器的控制部件中设置有中断信号扫描结构
,它在每条指令执行周期内的最后时刻扫描中断寄存器,查看是否有中断信号到来。若无中断信号,处理器就继续执行下一条指令,若有中断到来,处理器接收由硬件中断装置发来的中断向量代号。
接着,处理器开始为后续的软件处理中断做必要的准备工作:保存中断点的程序执行上下文环境(又称保存现场
)。这是因为中断处理结束之后,处理器还要继续被中断程序的执行,所以原有中断点程序执行的所有必要信息都必须保存下来。这个上下文环境通常包括程序状态字PSW
、程序计数器PC中的下一条指令位置
和一些寄存器的值
。它们一般保存在一个专门的系统堆栈
中。处理器状态此时被切换到管态
。
处理器根据中断向量代号查询中断向量表,获得与该中断源相联系的中断处理程序的人口地址,并将PC置成该地址。随后控制权转移到中断处理程序。
中断请求响应的工作过程是:①处理器接收中断信号;②保护现场,将中断断点的程序状态字PSW和程序计数器PC值存入系统堆栈;③分析中断向量,取得中断处理程序的入口地址;④将处理器的PC值置为中断处理程序的入口地址;⑤调用中断处理程序。
中断处理
在处理器的控制权转移到中断处理程序之后,中断处理程序开始工作,其中包括检查IО相关的状态信息,操纵I/О设备或者在设备和主存之间传送数据等。具体的中断处理程序的内容,完全是依据中断请求的类别和要求的不同,而分别设计的。在中断处理程序结束工作之后,处理器会检测到一条中断返回指令。在执行中断返回指令时,处理器会把原先被中断的程序的上下文环境从系统堆栈中恢复。处理器状态也从管态恢复成被中断时的目态。整个中断处理结束。
I/O中断
I/O中断一般由IO设备的控制器
或者通道
发出。I/O中断通常可分成两大类:I/О操作正常结束
以及I/О异常
。对于前者来说,如果要继续进行IО操作,则需要在准备好以后重新启动I/O。若请求I/O的程序正处于等待IО的状态,则应该将其唤醒。对于后者,常常需要重新执行失败的I/О操作,不过这个重试的次数常常有一个上限,因为错误可能由硬件损伤引起,当重试次数过大的时候,系统将判定硬件故障,并通知管理员。
时钟中断
时钟中断是计算机系统多道能力的重要条件之一。时钟中断处理程序通常要做较多的与系统运转、管理和维护相关的工作,它们对于整个系统是非常重要的,主要包括:
- 维护软件时钟
- 处理器调度
- 控制系统定时任务
- 实时处理
一般来说,调度程序并不在时钟中断里,因为时钟中断的优先级往往比较高,而且频繁发生,如果时钟中断处理时间过长,就会使一些较低优先级的中断丢失。
硬件故障中断
硬件故障一般是由硬件的问题
引起的,排除此类故障通常需要人工的干预
,例如复位硬件或者更换设备等。
硬件故障中断处理程序需要做的工作是保存现场
,使用一定的手段警告管理员并提供一些辅助的诊断信息。此外,在高可靠的系统中,中断处理程序还需要评估系统的可用性,并尽可能地恢复系统。
程序性中断
程序性中断多数是程序指令出错
、指令越权
或者指令寻址越界
而引发的系统保护。它的处理方法可以依据中断是否可以被用户程序自行处理,而分成两类:
第一类为程序性中断,只能由操作系统完成
。这种情况多为程序试图做自己不能做的操作引起的系统保护。
第二类为程序性中断,可以由程序自己完成。
中断优先级与中断屏蔽
现代的微处理器都提供有多级中断系统
,从硬件上看,多级中断系统表现为有多根中断请求线从不同设备连接到中断逻辑线路上
。连接在不同中断请求线上的中断信号,表示它们有不同的中断级别
。中断信号的级别代表了该中断信号是否具有被优先处理的特权,以及这个特权的大小。可见,在多级中断系统中,硬件决定了各个中断的优先级别
。
在多级中断系统中,在同时有多个中断请求时,CPU 接收中断优先级为最高的那个中断(如果其中断优先级高于当前运行程序的中断优先级时),而忽略其中断优先级较低的那些中断。比如,计算机的电池即将没有电了,这种掉电中断显然应该有非常高的优先级别。
如果在同一中断级中的多个设备接口中同时都有中断请求时,一般有两种办法可以采用。
(1)固定优先数
。给每个设备接口安排一个不同的、固定的优先顺序。比如以该设备在总线中的位置来定优先顺序,离CPU近的设备,其优先数高于离CPU远的设备。
(2)轮转法
。用一个表格,依次轮转响应,这是一个较为公平合理的方法。
在整个中断系统中,可以允许或者禁止中断系统对某些类别中断的响应
。我们知道,在程序状态字PSW中设计有中断屏蔽位
,主机是否允许响应或禁止某些中断,则由PWS中的中断屏蔽位决定,这些屏蔽位标识了那些被屏蔽的中断类或者中断。
一旦某个I/O中断被程序状态字PSW中的中断屏蔽位加以屏蔽,那么此时即使有IО中断信号,处理器也不予响应。
很显然,有了中断屏蔽,中断系统中原先由硬件事先给定的中断优先级,就可能发生改变。
还有一类中断信号是不可屏蔽的,一般这类中断信号属于机器故障中断。比如内存奇偶校验错,以及掉电等使得机器无法继续操作一类的故障。
一旦发生这类不可屏蔽的中断,不管程序状态字中的屏蔽位是否建立,处理器都要立即响应这类中断,并进行处理。
系统调用
为了从操作系统中获得服务,用户程序必须使用系统调用( system call ) ,系统调用陷入内核并调用操作系统。访管指令把用户态切换成内核态,并启用操作系统。当有关工作完成之后,在系统调用后面的指令把控制权返回给用户程序。
概念
所谓系统调用,就是用户在程序中调用操作系统所提供的一些子功能
。这是一种特殊的过程调用,这种调用通常是由特殊的机器指令实现的
。
系统调用是操作系统提供给编程人员的唯一接口
。编程人员利用系统调用,动态请求和释放系统资源,调用系统中已有的系统功能来完成与计算机硬件部分相关的工作以及控制程序的执行速度等。因此,系统调用像一个黑箱子那样,对用户屏蔽了操作系统的具体动作而只提供有关功能。
区别
系统调用在本质上是应用程序请求操作系统核心完成某一特定功能的一种过程调用,是一种特殊的过程调用,它与一般过程调用有以下几方面的区别:
- 运行在不同的系统状态
一般过程调用,其调用程序和被调用程序都运行在相同的状态,即核心态或用户态;而系统调用与一般调用的最大区别就在于:调用程序运行在用户态,而被调用程序则运行在系统态
。
- 状态的转换
一般过程调用不涉及系统状态的转换,可直接由调用过程转向被调用过程
;但在运行系统调用时,由于调用和被调用过程工作在不同的系统状态,因而不允许由调用过程直接转向被调用过程,通常都是通过软中断机制先由用户态转换为核心态
,在操作系统核心分析之后,转向相应的系统调用处理子程序。
- 返回问题
一般过程调用在被调用过程执行完后,将返回到调用过程继续执行
。但是,在采用抢占式调度方式的系统中,被调用过程执行完后,系统将对所有要求运行的进程进行优先级分析。如果调用进程仍然具有最高优先级,则返回到调用进程继续执行;否则,将引起重新调度,以便让优先级最高的进程优先执行。此时,系统将把调用进程放入就绪队列。 - 嵌套调用
像一般过程调用一样,系统调用也允许嵌套调用
,即在一个被调用过程的执行期间,还可再利用系统调用命令去调用另一个系统调用。一般情况下,每个系统对嵌套调用的深度都有一定的限制
。
分类
通常,一个操作系统的功能分为两大部分:一部分是系统自身所需要的
;另一部分功能是作为服务提供给用户的
,有关这部分功能可以从操作系统所提供的系统调用上体现出来。不同的操作系统所提供的系统调用会有一定的差异
。对于一般通用的操作系统而言,可将其所提供的系统调用分为以下几方面。
- 进程控制类系统调用
- 文件操作类系统调用
- 进程通信类系统调用
- 设备管理类系统调用
- 信息维护类系统调用
操作系统中还提供了一类有关信息维护的系统调用。用户可利用这类系统调用来获得当前时间和日期;设置文件访问和修改时间;了解系统当前的用户数、操作系统版本号、空闲内存和磁盘空间的大小等。
补充:
不同的系统提供有不同的系统调用。一般,每个系统为用户提供几十到几百条系统调用。
系统调用命令是作为扩充机器指令,增强系统的功能,方便用户使用而提供的。
因此,在一些计算机系统中,把系统调用命令称为“广义指令”。但“广义指令”和机器指令在性质上是不同的。
机器指令是由硬件线路直接实现的,而“广义指令”则是由操作系统所提供的一个或多个子程序模块,即软件实现的。
I/O技术
I/O结构(CPU定期轮询)
在一台计算机系统中,可能有大量的外部设备,为了满足对这些IО设备的控制,提高处理器和外部设备的运行效率
,出现了各种不同的I/O硬件结构。
在早期的计算机系统中,外部设备的控制器通过IО硬件结构与中央处理器连接。对设备控制器的操作是由处理器直接发出的IО指令来实现的。在这种方法中,中央处理器定期轮询各个I0设备控制器的状态
。如果有I/O处理请求,中央处理器就处理IO操作,直到该I/О处理完毕。这种程序直接控制I/O的主要缺陷是,处理器为了关注I/О设备控制器的状态,必须耗费大量的时间轮询各个外部设备以获得这些信息,这就严重地降低了整个系统的性能
。这种早期I/O结构,由于效率太低,已经淘汰。
通道
通道是独立于中央处理器
的,专门负责数据IO传输工作的处理单元
。从现代计算机系统的结构上看,各种外部设备均配有相应的设备控制器,这些设备控制器再通过通道连接在计算机系统的公共系统总线上。
通道对外部设备实行统一的管理,它代替CPU对1/О操作进行控制,从而使CPU和外部设备可以并行工作
。所以通道又称为I/O处理机
。
DMA技术
直接存储器访问
( Direct Memory Access, DMA )技术通过系统总线
中的一个独立控制单元,即DMA控制器
,自动地控制成块数据
在内存和I/O单元之间的传送。
当处理器需要读写一整块数据的时候,它给DMA控制单元发送一条命令,在命令中通常包含了IО设备的编址、开始读或写的主存编址、需要传送的数据长度、是否请求一次读或写等信息。
处理器在给DMA控制单元发送完一条命令之后,就可以处理其他的事情了。
而 DMA控制器将自动管理整块数据的传送。当这个传送过程完成后,它会给处理器发一个中断。这样处理器只需要在整块数据开始传送和传送结束时关注一下就可以了。可见DMA技术大大提高了处理I/О的效能。
不过,处理器和DMA传送也不是完全并行的
,它们之间会有总线竞争
的情况发生,此时总线上正在进行DMA传送,而处理器也想使用总线。不过这种总线竞争不会引起中断,也不会引起程序上下文的保存,通常这个过程只会花费一个总线周期,于是处理器会稍稍等待。也就是说,在DMA传送发生时,处理器访问总线的速度会有所变慢
。尽管如此,对于有大量数据的IO传送来说, DMA技术是很有价值的。
缓冲技术
缓冲技术是用在外部设备与其他硬件部件之间的一种数据暂存技术,它利用存储器件在外部设备中设置了数据的一个存储区域,称为缓冲区。缓冲技术一般有两种用途,一种是用在外部设备与外部设备之间的通信上的,还有一种是用在外部设备和处理器之间的。
时钟
时钟在计算机系统完成的工作:
- 在多道程序运行的环境中,时钟可以为系统发现一个陷入死循环(由编程错误引起)的作业,从而防止机时的浪费。
- 在分时系统中,用时钟间隔来实现各个作业按时间片轮转运行。
- 在实时系统中,按要求的时间间隔输出正确的时间信号给相关的实时控制设备。
- 定时唤醒那些要求按照事先给定的时间执行的各个外部事件(如定时为各进程计算优先数,银行系统中定时运行某类结账程序等)。
- 记录用户使用各种设备的时间和记录某外部事件发生的时间间隔。
- 记录用户和系统所需要的绝对时间,即年、月、日。
时钟可以分为两种:
硬件时钟
硬件时钟的工作原理是,在电路中的晶体振荡器,每隔一定间隔产生固定的脉冲频率,时钟电路中的时钟寄存器依据时钟电路所产生的脉冲数,对时钟寄存器进行加1的工作。
软件时钟
软件时钟,常用作相对时钟
,它的工作原理主要是利用内存单元模拟时钟寄存器
,并采用一段程序来计算相应的脉冲数,对内存时钟寄存器进行加1或减1的工作,从而模拟了时钟的功能。由于硬件提供的时钟总是比较少的,往往不能满足操作系统和应用程序对时钟的要求,因而软件时钟是经常需要的。软件时钟与硬件时钟的同步工作,由操作系统负责维护。
时钟的用途可以分为绝对时钟
和相对时钟
。
绝对时钟
是在计算机系统中不受外界干扰,独立运行的一种时钟。一般来说,绝对时钟很准确,它通常不会被停止,当计算机系统关机时,绝对时钟值仍然始终不停地保持运行
,作为整个计算机系统中的时间参考基准。绝对时钟通常提供公元日历的时间(即年、月、日、时、分.秒)显示。
相对时钟又称间隔时钟
。它只计算从某一个时间初值开始的一段时间间隔。
微信关注