开发软件经常会用到时间,不同的场合用到的时间也不尽相同,有时候我们需要的是年月日时分秒这样很容易理解的格式,也有时候我们只是想知道系统开机了之后运行了多久,还有的时候我们不需要知道具体时间,只是想像设定一个闹钟一样,时间到了叫我干活就行。
在操作系统的内核里也一样,没了时间做基础,什么时间片、周期调度、延迟处理都没办法实现,这些关于时间的服务(也可以叫功能),总结下来是下面这两类:
-
获取时间
-
定时服务
那这两个功能是怎么实现的呢?世上没有免费的午餐,想用到什么功能,就得有相应的软硬件来支持,我们先来看看要想获取时间和定时在硬件上都需要什么,下面是一个硬件框图,基本在单片机或者嵌入式linux都适用。
这些框框都用来干嘛呢?RTC(Real Time Clock)就是实时时钟,主要用来提供时间基准,有独立的芯片也有些MCU是内置的,一般会有单独的电池供电,就像电脑主板上一样,即使关了机RTC的时间也是在继续走的。RTC提供的时间通常是UTC时间,年月日时分秒,很容易阅读,缺点是精度不高,