Logo Host-telecom.com — профессиональный хостинг в Европе! Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Wildcard сертификаты от $74,97 в год.

Дешевые ssl сертификаты для домена

Sectigo сертификаты от $7,67 в год.

хостинг Украина Виртуальный хостинг для сайта от $4,87

Регистрация домена от $2 в год

Партнерская программа – $20 за клиента

VPS с гибкой конфигурацией: за 1€

Мощные выделенные сервера: от 25€

Собственный Дата-Центр
Поддержка 24/7

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

Управление перегрузками (starvation)

В этом разделе рассматривается сторожевой таймер RTX (watchdog timer) и техника программирования, которая позволит избежать ситуации перегрузки.  

Сторожевой таймер

Ситуация, когда единственный RTSS-поток полностью владеет CPU, чаще всего возникает в результате логической ошибки в программе (что бывает на стадии разработки). Когда единственный RTSS-поток полностью владеет CPU на однопроцессорной системе функционирование Windows NT прекращается. В системе с несколькими процессорами Windows NT продолжает работь, но не может остановить RTSS-поток, владеющий CPU, из-за того, что потоки Service Request Interrupt (SRI) менеджера, имеющие более низкий приоритет, не запустятся.

Работа со сторожевым таймером

Для вышеописанной ситуации можно использовать сторожевой таймер RTX (watchdog timer). При каждом прерывании от таймера (обычно такие прерывания разрешены) этот таймер проверяет, не исполняется ли один и тот же поток (за исключением Windows NT idle thread). При срабатывании сторожевого таймера поток-нарушитель будет остановлен, появится окошко с сообщением о возникшей ошибке, и возобновится нормальная работа Windows NT. Для выгрузки остановленного процесса можно использовать утилиту RTSSkill.

Установка периода сторожевого таймера

Можно устанавливать т.н. Starvation Time Out период (период сторожевого таймера) из контрольной панели RTX или с помощью ключа

	HKLM\System\CurrentControlSet\Control\RTX\StarvationTimeOut

в регистре и последующей перезагрузки.

Значения для ключа:

0 – запрет сторожевого таймера
N – (миллисекунд) разрешает сторожевой таймер и устанавливает период (обычно период составляет несколько секунд или десятков секунд).

Замечания по программированию

Программа может вести себя правильно, но все же иметь один или несколько потоков, которые на определенные промежутки времени занимают CPU. В таких случаях, в этих промежутках Вы можете периодически выделять небольшие отрезки времени для работы Windows NT. Это может потребоваться, например, для того, чтобы Windows NT очистила буфер RS232 UART, обслужила сетевые запросы, совершила дисковые операции, переместила указатель мыши или отобразила что-либо в GUI. Т.к. реально требуемое поведение может быть очень сложным, бессмысленно требовать, чтобы RTX непосредственно управлял выделением Windows NT временных отрезков.

Можно легко справиться с этой ситуацией, создав обработчик таймера, который периодически подвешивает владеющие CPU поток(и) на короткий промежуток времени. Рассиотрим, например, приложение, запускающее каждую секунду поток продолжительностью 100 миллисекунд. Можно подвешивать этот поток на 0.5 миллисекунд каждые 10 миллисекунд. Вообще, можно создать сколь угодно сложный или простой алгоритм для предотвращения перегрузки системы. Обычно пять процентов времени на работу системы является разумной начальной величиной. Затем можно измерять перегрузку и изменять алгоритм.

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

Использование арифметики с плавающей точкой

Потоки, исполняющиеся в RTSS подсистеме, всегда исполняются в режиме ядра. В то время, как ядро Windows NT не поддерживает операции с плавающей точкой, исполняющиеся в режиме ядра (такой код приводит к краху системы), RTX позволяет RTSS-потокам использовать FPU для операций с плавающей точкой.  

Разрешение поддержки плавающей точки в RTSS программах

Если Вы строите RTSS-программу с использованием NMAKE, Вы должны добавить следующую строчку к make-файлу перед строкой включения rtx.mak:

	RTSS_CRT = 1

Эта строка разрешает использование FPU, включая математические функции, использующие плавающую точку и printf с поддержкой плавающей точки.  

Выполнение RTSS-программ, использующих плавающую точку

Не нужно никаких специальных процедур для выполнения RTSS-программ, использующих плавающую точку. Программа может просто выдавать команды FPU и вызывать математические функции, использующие плавающую точку так же, как обычная Win32 программа.

Взаимодействие с драйверами ядра

В этом разделе рассматривается т.н. RTKAPI - Windows NT Driver Inter-Process Communication API. Функции, содержащиеся в нем, предназначены для доступа к механизму межпроцессного взаимодействия RTX из драйверов ядра Windows NT. Они похожи на функции, содержащиеся в RTAPI (например, RtkOpenSemaphore аналогична RtOpenSemaphore). Вы используете вызовы функций RTKAPI также, как функций RTAPI, но из драйверов NT. Все функции RTKAPI имеют префикс Rtk.

API

Ниже будут перечислены функции RTKAPI. Действие практически всех функций понятно из названий, поэтому описание не дается.

  • RtkCloseHandle
  • RtkCreateEvent
  • RtkCreateMutex
  • RtkCreateSemaphore
  • RtkCreateSharedMemory
  • RtOpenEvent
  • RtOpenMutex
  • RtkOpenSemaphore
  • RtkOpenSharedMemory
  • RtkPulseEvent
  • RtkReleaseMutex
  • RtkReleaseSemaphore
  • RtkResetEvent
  • RtkRtssAttach – “присоединяет” драйвер ядра NT к подсистеме RTSS
  • RtkRtssAttach -“отсоединяет” драйвер ядра NT от RTSS подсистемы
  • RtkSetEvent
  • RtkWaitForSingleObject

Назад | Содержание | Вперед

ATLEX Выделенные серверы: в Европе / в России.

Виртуальные серверы: в Европе / в России.

Партнерская программа

Ваш сайт в 8 раз быстрее конкурентов. Хостинг от $2.95

VPS: SSD, KVM, бесплатные бэкапы и администрирование

Все необходимое для вашего сайта и лучшая техподдержка 24/7

хостинг сайтов ГиперХост — хостинг сайтов который Вы искали.

Виртуальный хостинг, Аренда VPS серверов, рация доменных имен, SSL сертификаты

💰 Самые низкие цены на домены

🔒 Отличный хостинг на SSD c бесплатными SSL

💻 Огромнейший выбор dedicated выделенных серверов

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VDS хостинг Облачный сервер в Нидерландах и Украине

Аренда виртуального сервера от $7.91

Партнёрская программа
$20 за клиента

Новости мира IT:

Архив новостей

Последние комментарии:

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...