Все о моделировании в Компас-3D LT
   Главная Статьи Файлы Форум Ссылки Категории новостей
Август 24 2019 03:38:37   
Навигация
Главная
Статьи
Файлы
FAQ
Форум
Ссылки
Категории новостей
Обратная связь
Фото галерея
Поиск
Разное
Карта Сайта
Популярные статьи
Что необходимо ... 65535
Учимся удалять!... 23663
4.12.1 Професси... 22371
Примеры, синони... 21284
FAST (методика ... 19242
Просмотр готовы... 18957
Декартовы коорд... 17357
Просмотр готовы... 15799
Работа с инстру... 11937
Что такое САПР 11342
Сейчас на сайте
Гостей: 2
На сайте нет зарегистрированных пользователей

Пользователей: 9,955
новичок: Logyattella
Друзья сайта
Ramblers Top100
Рейтинг@Mail.ru

Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ по Delphi
Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog
8.3 ТАЙМЕР
В функции программы обработки прерываний по таймеру входит:
• перезапуск часов,
• вызов на исполнение функций ядра, использующих встроенные часы,
• поддержка возможности профилирования выполнения процессов в режимах ядра и задачи;
• сбор статистики о системе и протекающих в ней процессах,
• слежение за временем,
• посылка процессам сигналов "будильника" по запросу,
• периодическое возобновление процесса подкачки (см. следующую главу),
• управление диспетчеризацией процессов.
Некоторые из функций реализуются при каждом прерывании по таймеру, другие — по прошествии нескольких таймерных тиков. Программа обработки прерываний по таймеру запускается с высоким приоритетом обращения к процессору, не допуская во время работы возникновения других внешних событий (таких как прерывания от периферийных устройств). Поэтому программа обработки прерываний по таймеру работает очень быстро, за максимально-короткое время пробегая свои критические отрезки, которые должны выполняться без прерываний со стороны других процессов. Алгоритм обработки прерываний по таймеру приведен на Рисунке 8.9.
#include ‹sys/types.h›
#include ‹sys/stat.h›
#include ‹sys/signal.h›
main(argc, argv)
int argc;
char *argv[];
{
extern unsigned alarm();
extern wakeup();
struct stat statbuf;
time_t axtime;
if (argc != 2) {
printf("только 1 аргумент\n");
exit();
}
axtime = (time_t) 0;
for (;;) {
/* получение значения времени доступа к файлу */
if (stat(argv[1], &statbuf) == -1) {
printf("файла с именем %s нет\n", argv[1]);
exit();
}
if (axtime != statbuf.st_atime) {
printf("к файлу %s было обращение\n", argv[1]);
axtime = statbuf.st_atime;
}
signal(SIGALRM, wakeup); /* подготовка к приему сигнала */
alarm(60);
pause(); /* приостанов до получения сигнала */
}
}
wakeup() {}
Рисунок 8.8. Программа, использующая системную функцию alarm
алгоритм clock
входная информация: отсутствует
выходная информация: отсутствует
{
перезапустить часы; /* чтобы они снова посылали прерывания */
if (таблица ответных сигналов не пуста) {
установить время для ответных сигналов;
запустить функцию callout, если время истекло;
}
if (профилируется выполнение в режиме ядра)
запомнить значение счетчика команд в момент прерывания;
if (профилируется выполнение в режиме задачи)
запомнить значение счетчика команд в момент прерывания;
собрать статистику о самой системе;
собрать статистику о протекающих в системе процессах;
выверить значение продолжительности ИЦП процессом;
if (прошла 1 секунда или более и исполняется отрезок, не являющийся критическим) {
for (всех процессов в системе) {
установить "будильник", если он активен;
выверить значение продолжительности ИЦП;
if (процесс будет исполняться в режиме задачи) выверить приоритет процесса;
}
возобновить в случае необходимости выполнение процесса подкачки;
}
}
Рисунок 8.9. Алгоритм обработки прерываний по таймеру
Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Случайные статьи
DVD-приводы
Как «исправить» fi...
Порядок сборки
Администра...
8.3.2 Внутренние с...
8.2 СИСТЕМНЫЕ ОПЕР...
2. Дивизиональная ...
содержание - сетев...
Пройдусь по Абрико...
Водозащищенность
Введение
СИСТЕМНЫЕ ОПЕРАЦИИ...
Спрашивай – Отвечаем
Псевдолиты
Глава 8. Acer n35
Какие же цели прес...
5.4 Информационно...
Забытые науки
3.1 Основные типы ...
Использование подт...
Глава 1. GARMIN QUEST
Глава 7. HUMMINBI...
Глава 12. Fortuna...
7.1 СОЗДАНИЕ ПРОЦЕССА
4.12.3.2 Принципы ...
Как работает эхолот
Существуют ли друг...
Основной рабочий э...
Настройка шрифта т...
Своя игра
4.5 Управление пот...
Проверка внедрения
Глава 2. Cистема п...
4.9 ВЫВОДЫ
Какую аппаратуру и...
Глава 4. Основные ...
2.4.2 Логическое к...
Как правильно наст...
6.5.3 Присоединени...
2.3.1 Общие сообра...
Мини-чат
Вам необходимо залогиниться.

Нет присланных сообщений.
Copyright © 2009