Блокировка системной памяти
Для предотвращения ошибок страниц и, следовательно, непредсказуемых задержек в критическом по времени участке кода, 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 подсистеме
В данном
демонстрируется использование функций блокирования ядра..