闹钟应用程序如何工作?

闹钟应用程序如何工作?

我的手机没电了,也没有闹钟。下面是我使用 Bash 的解决方案,可以确保我明天早上能起床

while [ 1 ]; do
  TIME=$(date +'%H'):$(date +'%M')
  echo $TIME
  if [ $TIME == "06:15" ];then
    osascript -e "set Volume 3"
    open /Path/To/MyFavouriteSong.mp3
    break
  fi
  sleep 58
done

该代码运行良好(只要Mac OSX 10.12.2我的计算机不进入睡眠状态)但感觉有点傻。

我不清楚 CPU 如何测量特定时间。我不知道闹钟应用是否通常每 58 秒(或其他更接近但仍短于一分钟的时间)测试一次是否已到响起闹钟的时间,或者是否有某种机制让 CPU 在特定时间向程序发送信号。

答案1

这里https://unix.stackexchange.com/questions/64191/how-do-the-internals-of-the-cron-daemon-work解释了(以 cron 为例)如何实现一个每隔 X 秒/分钟执行某项操作的程序。其实现方式与您的方法类似。

如果你的问题是 CPU 如何知道当前时间:通常主板上有一个硬件时钟,其工作方式与普通石英手表相同,可以与 CPU 通信。CPU 可以每隔 ms 或其他时间询问这些时钟确切的时间。这就是为什么主板上通常有一个纽扣电池的原因:保持硬件时钟运行。

相关内容