Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Инфу взял из его методички




Вального таймера, если заданное время срабатывания требует более мелкой дискретизации, чем поддерживает конкретная реализация, действительное значение времени срабатывания должно быть округлено до ближайшего большего поддерживаемого значения

Значения

времени, находящиеся между двумя последовательными целыми, кратными разрешению заданного таймера, должны быть округлены до большего из целых. Ошибка квантования не должна привести к срабатыванию таймера раньше округлённого значения.для каждого интер-

185. В чём причина неправильности использования одноразового таймера в цикле для реализации заданного интервала времени в программе?

Реализация периодического многоразового таймера путём цик-лического вызова однократной задержки всегда сопряжена с накоп-лением ошибок (cumulative drift).Накопленный временной дрейф за 1000 шагов составит 2с.

таймер отрабатывает не ровно указанное время а немного больше + необходимое на создание нового таймера время

186. Какие аппаратные источники временных интервалов можно использовать для замера времени в программах QNX Neutrino?

В ОС РВ QNX за отсчёт временнЫх интервалов, используемых для собственных системных нужд и программных таймеров в пользовательских приложениях, ответственно микроядро Neutrino. В качестве источника временных импульсов микроядро использует прерывания аппаратного таймера. На IBM PC совместимых компьютерах – это микросхема Intel 8254 и её аналоги. Частота генератора внутренних импульсов чипа i8254 составляет 1.1931816 МГц, что соответствует периоду Tат = 838095345 фемтосекунд = 838.095345 нс. Эта частота уменьшается до заданных допустимых значений путём загрузки ядром соответствующего целочисленного значения в 16-битный регистр-счётчик аппаратного таймера. Наибольшее значение счётчика определяет наименьшую частоту генерируемых аппаратных прерываний. Каждое прерывание соответствует тику системных часов. На компьютерах с архитектурой Intel прерывание от аппаратного таймера имеет наивысший приоритет, и обработка этих прерываний может внести задержку реакции на другие прерывания с более низким приоритетом. Обработка прерываний от таймера в простейшем случае включает обновление счётчика системного времени и занимает на тестовой машине 4 мкс. Если после обновления счётчика истекает время какого-либо из таймеров, обработка прерывания может занять больше времени. Значение 4 мкс хотя и мало, но не является предельным возможным.

Для формирования системного времени на этапе загрузки операционной системы QNX/Neutrino использует аппаратные часы реального времени. На платформе x86 обычно они совмещены в одном кристалле с питаемой от батарейки “энергонезависимой” CMOS-памятью.

Для высокоточного измерения коротких временных интервалов используется 64-разрядный регистр-счётчик TSC (time-stamp counter) современных микропроцессоров, инкременируемый с тактовой частотой микропроцессора. На процессорах, начиная с i586, доступ к этому счётчику осуществляется с помощью ассемблерной инструкции RDTSC, библиотека Neutrino имеет соответствующий макрос ClockCycles(), определённый в /usr/include/x86/neutrino.h.

Некоторые ОС используют дополнительные аппаратные тайме-ры, доступные на современных материнских платах персональных компьютеров, такие, как таймер высокого разрешения IA-PC HPET и таймер управления питанием ACPI (расширенного интерфейса конфигурирования компьютера и управления питанием). Таймер ACPI при сравнимой с TSC разрешающей способностью (частота 3.579545 МГц) имеет то преимущество, что его частота неизменна и не зависит от режима энергопотребления компьютера.

Микроядро QNX/Neutrino, в отличие от других операционных систем, не умеет обращаться к таким таймерам. Однако, используя модульный принцип архитектуры QNX и стандартные средства взаи-модействия с устройствами, программист самостоятельно может расширить применяемый в своих приложениях набор аппаратных таймеров. В частности, кроме упомянутых, в качестве источников пе-риодических аппаратных прерываний с различными частотами могут быть использованы часы реального времени (обеспечивают частоты

прерываний 2n, n = 1,2,…,13) и микросхема UART (см. п. 1.9). Применяются также внешние источники периодических импульсов, на-пример аппаратные таймеры, размещённые на платах расширения, или электронные схемы, подключённые к параллельному порту. На современных процессорах (Pentium-3 500 МГц) QNX/Neutrino обеспечивает бесперебойную обработку прерываний от параллельного порта с частотой 10 кГц.

Стандартные средства программирования стартового кода QNX/Neutrino дают возможность настроить нужным образом внеш-ний осциллятор на этапе загрузки ОС.

187. Что такое таймаут?

Под таймаутом понимается заданный отрезок времени или момент абсолютного времени, до окончания которого разрешено ожидать определённое событие. Таймауты могут быть реализованы с помощью таймеров общего назначения. Более удобно использовать специализированные средства API.

Наиболее часто такая потребность возникает при обмене сообщениями: клиент, посылая сообщение серверу, не желает ждать ответа вечно. В этом случае удобно использовать вызовы ядра, устанавливающие тайм-ауты на состояния блокировки. Тайм-аут также полезен в сочетании с функцией pthread_join: завершения потока тоже не всегда хочется ждать. Ответственной за формирование тайм-аутов ядра является функция timer_timeout(), представленная в следующем фрагменте.

188. Для чего предназначен примитив синхронизации условная переменная?

Позволяет потокам ожидать выполнения некоторого условия (события), связанного с разделяемыми данными. Над ней определены две основные операции: wait и signal. Нить, выполнившая операцию wait, блокируется до того момента, пока другая нить не выполнит операцию signal. Таким образом, операцией wait первая нить сообщает системе, что она ждет выполнения какого-то условия, а операцией signal вторая нить сообщает первой, что параметры, от которых зависит выполнение условия, возможно, изменились. Используется для проверки секции по условию pthread_cond_wait/signal/broadcast/timeout().

189. Нарисуйте график загрузки процессора системой периодических задач с заданными параметрами при планировании их по RM-алгоритму.




Поделиться с друзьями:


Дата добавления: 2014-12-24; Просмотров: 410; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.