Работа в режиме реального времени
Работа в режиме реального времени. Таймер.
Когда процессы ждут прерывания, они находятся в режиме сна. Приходит прерывание => процессы переходят в режим готовности к запуску.
Режим реального времени подразумевает возможность обеспечения достаточной скорости при обработке внешних прерываний и выполнении отдельных процессов в темпе, соизмеримом с частотой возникновения вызывающих прерывания событий.
Системные операции, связанные со временем.
stime ≈ устанавливает системное время в секундах, начиная с семидесятого года;
time ≈ выдать время в секундах, начиная с семидесятого года;
times ≈ возвращает суммарное время выполнения процесса и всех его потомков.
alarm ≈ процесс посылает себе сигнал будильника;
(Пример будильника:)
Рекомендуемые материалы
main ( )
{
extern wakeup ( );
signal (SIGALARM, wakeup);
while (1);
{
alarm (5);
pause ( );
}
}
Опишем wakeup, обрабатывающий сигнал будильника:
wakeup ( )
{
printf (“Я проснулся”);
}
В цикле заряжаем будильник на пять секунд. Процесс приостанавливается. Через пять секунд приходит сигнал будильника SIGALARM, и мы вызываем wakeup.
Таймер.
Функции программы обработки прерываний по таймеру:
1. Перезапуск часов для выполнения, следующего тика.
2. Вызов на выполнение функций ядра, использующих встроенные часы.
3. Поддержка возможности выполнения процессов.
time prog1
Ещё посмотрите лекцию "Воспалительные заболевания селезенки" по этой теме.
Программа prog1 вызывается на выполнение, и после выполнения выдается, сколько секунд она выполнялась.
4. Сбор статистики о системе и протекающих в ней процессах.
5. Слежение за временем.
6. Посылка процессом сигналов будильника по запросу.
7. Периодическое возобновление процесса подкачки.
8. Управление диспетчеризацией процессов.