RTX – расширение реального времени для Windows NT

Блокировка системной памяти


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

API блокирования процессов

Следующие функции служат для блокировки памяти RTX процесса:

RtLockProcess –

блокирует все pageable секции процесса в физической памяти.

RtUnlockProcess – разблокирует секции виртуального адресного пространства процесса, блокированные ранее в физической памяти.

RtCommitLockProcessHeap – блокирует кучу процесса.

RtCommitLockHeap – блокирует указанную при вызове кучу.

RtCommitLockStack - блокирует указанный при вызове стек.

Замечания по программированию в RTSS подсистеме

По умолчанию, все процессы и объекты в RTSS подсистеме блокированы в физической памяти. Следовательно, выполнение RTSS процесса никогда не повлечет ошибку страницы. Вызов функций Rt*Lock (Process, Heap, Stack) в RTSS подсистеме всегда завершается успешно, но не влечет за собой никаких реальных действий.

Замечания по программированию в Win32 подсистеме

Любые процессы и службы Windows NT могут сбрасывать страницы на диск, если только явным образом не блокированы в физической памяти. Для того, чтобы real-time процесс не осуществлял такой сброс страниц, надо использовать функцию RtLockProcess.

В данном

демонстрируется использование функций блокирования процесса.

API блокирования ядра

Следующие функции служат для доступа к RTX-службам блокирования ядра:

RtLockKernel –блокирует pageable участки ядра в физической памяти.

RtUnlockKernel – разблокирует предварительно блокированные участки ядра Windows NT.

Замечания по программированию в RTSS подсистеме

По умолчанию, все процессы и объекты в RTSS подсистеме блокированы в физической памяти. Блокирование ядра Windows NT не повлияет на производительность RTSS процесса.

Замечания по программированию в Win32 подсистеме

  • Определенные компоненты Windows NT подвержены пэйджингу (pageable), включая большую часть ядра и подсистемы Win32. Для предотвращения задержек в работе real-time процесса, связанных с ошибками страниц, надо использовать функцию RtLockKernel.
  • Драйверы устройств в Windows NT обычно не осуществляют пэйджинг. Драйверы устройств, загружаемые во время загрузки системы, никогда не делают пэйджинг. Для того, чтобы система могла сбрасывать страницы драйвера, разработчик такого драйвера должен тщательно продумать его структуру и явным образом указать участки кода, которые можно сбрасывать. Из-за своей сложности такие драйверы встречаются редко.
  • Блокирование ядра Windows NT и процессов уменьшает пул доступной физической памяти. Это может кардинальным образом сказаться на производительности не real-time части системы. При необходимости для обеспечения желаемой производительности не real-time операций можно просто добавить физической памяти.
  • В данном

    демонстрируется использование функций блокирования ядра..



    Содержание раздела