Наиболее важным ресурсом после процессора является оперативная память. Большинство программ и данных хранится на жестком диске и загружается в оперативную память по мере необходимости. Поскольку в системах реального времени задержек исполнения быть не должно, все необходимые модули должны быть загружены предварительно. Кроме того, может возникнуть необходимость выгрузки содержимого части оперативной памяти на диск.
При выборе страницы на выгрузку могут быть использованы различные критерии, смысл которых сводится к тому, что на диск выталкивается страница, к которой в будущем, начиная с данного момента, дольше всего не будет обращений. Решение обычно принимается на основе эмпирических критериев. Наиболее популярным является число обращений за последний интервал времени.
Операционная система ведет для каждой страницы программный счетчик. Всякий раз, когда происходит обращение к какой- либо странице, процессор устанавливает в единицу признак доступа в относящейся к данной странице записи таблицы страниц. ОС периодически просматривает признаки доступа всех страниц во всех существующих в данный момент записях таблицы страниц. Если какой-либо признак оказывается равным 1 (было обращение), то система сбрасывает его в 0, увеличивая при этом на 1 значение связанного с этой страницей счетчика обращений. Когда возникает необходимость удалить какую-либо страницу из памяти, ОС находит страницу, счетчик обращений к которой имеет минимальное значение. Для того чтобы критерий учитывал интенсивность обращений за последний период, ОС с соответствующей периодичностью обнуляет все счетчики.
Интенсивность страничного обмена может быть снижена в результате упреждающей загрузки, в соответствии с которой при возникновении страничного прерывания в память загружается не одна страница, содержащая адрес обращения, а сразу несколько прилегающих к ней страниц. Здесь используется эмпирическое правило: если обращение произошло по некоторому адресу, то велика вероятность того, что следующие обращения произойдут по соседним адресам.
Примеры операционных систем реального времени
Как уже отмечалось выше, операционные системы реального времени имеют ряд особенностей по сравнению с операционными системами обычных систем.
Ниже приводится краткий обзор некоторых ОС РВ.
Операционная систем UNIX представляет собой многозадачную многопользовательскую операционную систему и является в настоящее время одной из наиболее распространенных в мире. Она состоит из небольшого ядра, управляющего системными ресурсами (процессор, память и ввод/вывод), а остальная часть процедур операционной системы работает как пользовательские процессы. Типичная операционная система содержит 10000-20000 строк на языке С и 1000-2000 строк машинно-ориентированных программ на ассемблере, которые разрабатываются отдельно для каждой аппаратной платформы. Ядро представляет собой единую резидентную программу размером от 100 Кбайт до 1 Мбайт в зависимости от платформы и выполняемых функций.
Процессы в UNIX протекают с разделением времени. Для того чтобы дать возможность всем процессам исполняться, применяется динамическое распределение приоритетов. Процессу, готовому для исполнения, сначала присваивается его номинальный приоритет.
Затем, по мере исполнения, значение этого приоритета уменьшается до тех пор, пока он не становится меньше приоритета следующего из ожидающих процессов, который после этого выбирается для исполнения. В результате процессы с более высоким начальным приоритетом получают большую долю процессорного времени, и все процессы периодически выполняются.
Внешние устройства ввода/вывода рассматриваются в UNIX как файлы. Это упрощает программы, так как можно перенаправить ввод/вывод между файлами или внешними устройствами без изменения кода программы. Это важно и с точки зрения машинной независимости программ.
В последних версиях UNIX поддерживаются такие функциональные элементы систем реального времени, как семафоры, разделяемая память, обмен сигналами между процессами, приоритетное управление задачами и прямой доступ внешних устройств к памяти. Недостаток UNIX - это недружественный пользовательский интерфейс.
В странах СНГ наиболее распространена операционная система QNX, отчасти из-за большой распространенности архитектуры х86 фирмы Intel. QNX - это разработка канадской кампании QNX Software System Ltd. Впервые она появилась на рынке в 1981 году. Система построена по технологии FLEET:
Fault-tolerance (отказоустойчивая);
Load-balancing (регулирующая нагрузку);
Efficient (эффективная);
Extensible (расширяемая);
Transparent (прозрачная).
Система допускает объединение в одну сеть разнородных Intel- совместимых компьютеров, соединенных через Arcnet, Ethernet, Token Ring или через последовательный порт, причем возможно участие одного компьютера в трех сетях одновременно.
Файловая система полностью соответствует стандарту POSIX. QNX обеспечивает работу с различными типами файловых систем: POSIX, Embedded (Flash, ROM, SRAM), CD-ROM (с поддержкой стандарта ISO 9660 и его расширения Rock Ridge), DOS (доступ ко всем носителям информации в формате DOS), NFS (доступ к различным типам удаленных файловых систем), SMB (прозрачный доступ к Windows 95 или NT-серверам).
Операционная система OS-9 относится к классу Unix-подобных ОС. Она имеет модульную структуру, поэтому для исполнения программы в целевой системе требуются лишь некоторые части операционной системы. Весь код, генерируемый в OS-9, не зависит от адреса загрузки, он реентерабельный и может быть записан в ПЗУ. Для связи между процессами можно использовать сигналы, события, каналы и модули данных. Когда сигнал направляется от одного процесса к другому, процесс-адресат исполняет процедуру прерывания. Канал представляет собой последовательный поток данных от одного процесса к другому. Наиболее быстрый обмен данными осуществляется через модули - разделяемые области оперативной памяти, к которой могут обращаться все процессы. Среди других функций режима реального времени система также поддерживает аппаратные прерывания.
Основные характеристики OS-9:
* многозадачная (65535 процессов, 65535 уровней приоритета);
* многопользовательская (255 пользователей);
* переносимость приложений: ANSI С/С++, POSIX 1003.1, TCP/IP (NFS/RPC), X Windows X11.R6 (OSF Motif), JAVA;
* объектно-ориентированный модульный дизайн;
* полностью вытесняемое детерминированное ядро с минимальным временем реакции на прерывание;
* развитые сетевые средства: Arcnet, Ethernet, OMNlnet, X.25, ISDN T1/E1, ATM, NFM, TCP/IP, IPX, Profibus, CAN, MIL STD 1553;
* графические оконные интерфейсы GUI.
Операционная система Windows NT способна обеспечить гарантированное время отклика 5-10 мс. Тем не менее время реакции системы зависит от используемых драйверов, от того, запрещена подкачка страниц или нет, и от множества других факторов. Более того, механизмы обработки прерываний Windows NT имеют определенные особенности, которые мешают использовать эту ОС в приложениях «жесткого» реального времени. Например, пользовательский процесс, независимо от его приоритета, может быть прерван для обработки аппаратного прерывания, даже если последнее пришло от такого источника, как манипулятор типа «мышь». Как правило, подпрограммы обработки аппаратных прерываний делают только самые необходимые действия, после чего основные процедуры обработки ставятся в очередь для последующего выполнения с использованием механизма вызова отложенных процедур (DPC - Deferred Procedure Call). К сожалению, DPC обслуживает очередь по принципу FIFO без учета приоритетов как прерываний, так и процессов, с которыми эти прерывания связаны. Более того, DPC не функционирует до тех пор, пока не будут отработаны все аппаратные прерывания, даже если они приходят от «мыши». В настоящее время ряд продуктов, таких как LA-SPOX, RTX, Falcon, Hyperkernel, приспособлен для реального времени на платформе Windows NT.
RTKernel 4.5 - многозадачное ядро реального времени для работы в среде MS-DOS. При инициализации создаются две задачи: основная и «пустая», которая нужна для нормального функционирования планировщика (ему нужна хотя бы одна задача, находящаяся в состоянии готовности). Планирование происходит согласно правилам:
1. Из всех задач, находящихся в состоянии готовности, в активное состояние переводится задача с наивысшим приоритетом.
2. Если в состоянии готовности пребывают несколько задач, имеющих одинаковый приоритет, в активное состояние переводится задача, не исполнявшаяся в течение наиболее длительного интервала времени.
3. Если несколько задач находятся в ожидании события, порядок их активизации при наступлении события осуществляется в порядке убывания их приоритетов.
Можно упомянуть и такие ОС реального времени как VxWorks, pSOS, LynxOS, VRTX.
Контрольные вопросы:
1 Случаи необходимости синхронизации задач.
2 Как осуществляется связь между задачами?
3 Что из себя представляет очередь сообщений ?
4 Методы решения проблемы обеспечения правильной последовательности передачи общего ресурса от задачи к задаче.
5 Назначение семафора.
6 Проблемы, которые могут происходить в борьбе за общие ресурсы.
7 Тенденции синхронизации с внешними событиями.
8 Как осуществляется управление оперативной памятью в СРВ?
9 Охарактеризуйте ОС UNIX.
10 Охарактеризуйте ОС QNX.
11 Охарактеризуйте OS-9
Лекция 29 Типовая структура алгоритмов управляющих ЭВМ. Программирование алгоритмов реального времени
Дата: 2019-04-23, просмотров: 207.