Как работает приложение будильника?

460
Remi.b

Мой телефон мертв, и у меня нет будильника. Вот мое решение (на 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до тех пор, пока мой компьютер не засыпает), но выглядит несколько глупо.

Мне непонятно, как процессор измеряет определенное время. Я не знаю, тестирует ли приложение будильника каждые 58 секунд (или другое время ближе, но все же короче, чем одна минута), если уже пора подать сигнал или есть какой-то механизм для ЦП, чтобы послать сигнал для программы в определенное время.

0
Я вижу близкое голосование, потому что «Этот вопрос не о компьютерном оборудовании или программном обеспечении, в рамках, определенном в справочном центре». Будет ли вопрос лучше соответствовать StackOverflow или где-либо еще? Remi.b 7 лет назад 0
Возможно, посмотрите, как реализованы _cron_ демоны? grawity 7 лет назад 0
Закрытое голосование было моим. Это может быть пограничный вопрос, поэтому я хотел, чтобы потенциальное закрытие было органичным, а не оставлял комментарий и влиял на других избирателей. Я рассуждаю о том, что вопросы программирования не по теме, и то, как работают любые / все программы будильника, слишком широка. Я действительно не знаю, какой сайт будет лучшим для этого, поэтому я не предложил один. Это кажется логичным, но я не большой пользователь этого сайта, поэтому не уверен, насколько хорошо он там подходит. Если этот комментарий привлекает мнение, что это по теме здесь, я откажусь от закрытого голосования. fixer1234 7 лет назад 0
Используйте работу cron. DavidPostill 7 лет назад 0
@ fixer1234 ИМХО, суть вопроса в том, * как процессор измеряет определенное время? * и я рассматриваю это по теме. Некоторое редактирование, чтобы сосредоточить вопрос, помогло бы все же. Twisty Impersonator 7 лет назад 0

1 ответ на вопрос

4
Jounathaen

Здесь https://unix.stackexchange.com/questions/64191/how-do-the-internals-of-the-cron-daemon-work объясняется (на примере cron), как вы можете реализовать программу, что делает что-то каждые X секунд / минут. Это сделано аналогично вашему подходу.

Если ваш вопрос был в том, как процессор знает текущее время: обычно на материнской плате установлены аппаратные часы, работающие так же, как обычные кварцевые наручные часы, которые могут связываться с процессором. Процессор может спрашивать эти часы каждую мс или сколько угодно, какое точное время. Это причина, по которой на материнской плате обычно находится батарейка типа «таблетка»: чтобы аппаратные часы работали.

Похожие вопросы