- •Требования магистрально-модульной структуры.
- •Основные характеристики.
- •Принцип управления.
- •Синхронные и асинхронные магистрали.
- •Vmi – bus.
- •Линии передачи данных.
- •Линии арбитража
- •Линии прерывания
- •Служебные и сервисные линии
- •Фиксированный цикл чтения.
- •Арбитраж
- •Функции обработки прерываний
- •Типы мгпр
- •Межсегментные последовательные шины в распределённых технологических системах
- •Магистральный интерфейс mil stp 1553
- •Форматы информационных слов
- •Применение последовательных шин для внутриконтроллерных взаимодействий Последовательная шина spi
- •Модули памяти
- •Системные модули памяти
- •Функции ядра при загрузке системы
- •Предоставление средств для взаимодействия процессов
- •Обеспечение работы в реальном времени
- •Организация ввода/вывода в системе os-9.
- •Менеджер ввода/вывода
- •Файловый менеджер
- •Драйверы устройства.
- •Операционная система жёсткого реального времени VxWorks
- •Применение.
- •Отладка и сопровождение программ в VxWorks
- •Управление процессами в ос VxWorks.
- •Алгоритм планирования выполнения задач
- •Scada – системы
- •Человеко-машинный интерфейс scada
- •Scada – системы
- •Связь scada – систем с контроллерами
- •Стандартные интерфейсы представления данных в scada– системах.
- •Особенности адресации в scada – системах
- •Alarm’ы и события
- •Встроенные языки программирования
- •Базы данных реального времени
- •Функциональные возможности IndustrialSqlServer
- •Plan2sql
- •Отличия Industrial sql Server и Plan2sql
- •Internet/Intranet решения и scada – системы
- •Тонкий и толстый клиенты
Модули памяти
Унифицированный фрагмент памяти, в котором могут распологаться системные компоненты.
Категории модулей:
исполняемые (системное, прикладное ПО)
неисполняемые (данные)
Любой модуль состоит из:
заголовок
тело модуля
контрольная сумма (CRC)
Заголовок формируется построителем в момент создания модуля. В заголовке первым идёт слово $4AFC.
00 |
$4AFC |
02 |
ID версии ОС |
04 |
размер модуля в байтах (без учёта CRC) |
08 |
пользователь/группа владельца |
0C |
смещение до ??? модуля (от начала модуля) |
10 |
права доступа (три права: чтение, запись, исполнение; для всех модулей памяти) |
12 |
тип и язык |
14 |
атрибуты модуля и ревизия (версия) Номер редакции, смещение до строки комментариев, смещение до символьной таблицы |
2E |
CRC заголовка |
Если модуль данных, то на этом заголовок заканчивается. Если же имеет место программный модуль, то заголовок содержит ещё и следующие поля | |
30 |
Смещение до точки входа |
34 |
Смещение до точки входа в обработчик прерываний по умолчанию |
38 |
Минимальный размер области данных |
3C |
Минимальный размер программного стека |
40 |
Смещение на таблицу инициализации |
44 |
Смещение на точку входа в таблицу инициализации |
Системные модули памяти
Ядро операционной системы (Kernal)
Системный таймер (тик – величина настраиваемая)
Модуль параметров инициализации системы. Работает только во время перезагрузки системы.
Системная таблица (карта загрузки) – список модулей, которые надо создать, запустить. Работает как во время функционирования системы, так и во время начальной инициализации.
Администратор I/O. МенеджерI/O, модули конфигурации типов устройств, логической связи.
Драйверы устройств. Диспетчеры устройств.
И другие модули, необходимые для работы в каждом конкретном случае.
Функции ядра при загрузке системы
Инициализация системы после загрузки.
После загрузки ядра, оно начинает сканировать адресное пространство по 16 К. Если какой-то модуль не откликнулся, этот модуль памяти считается недоступным.
При генерации ОС можно задавать те банки памяти, которые являются доступными.
Далее, в определённой памяти происходит поиск модулей, определение типов этих модулей.
Идёт определение очерёдности запуска модулей и осуществляется запуск всех необходимых системных модулей.
После этого ядро передаёт управление планировщику, который начинает работу по выделению ресурсов.
Управлению памятью.
0000 – младший адрес памяти.
В них расположены векторы прерываний устройств, обнаруженных при инициализации.
Далее расположены векторы особых событий (программные прерывания, порождаемые прикладными программами или системными компонентами).
Далее создаётся область данных прикладных программ.
Со старших адресов:
системные модули данных;
системные программные модули;
модули памяти прикладных программ.
Младшие адреса – динамическая область данных. Она будет расти вверх.
Свободная память.
Модуль памяти всегда занимает подряд идущие адреса памяти.
В конце работы запускает планировщик и контролирует таблицу текущих задач и занимаемые ими ресурсы. А также контролирует таблицу ожидающих задач и их ресурсы. Планировщик занимается конкретным выделением памяти.
В общем случае не существует защиты памяти. Однако, есть возможность при генерации ОС включить модуль защиты памяти, который чётко разделит память на участки.
Совместное с планировщиком управление процессами.
Планирование происходит через каждый тик таймера. Величина тика задаётся при генерации ОС и действует в течении всего времени (10 мс).
Процессы могут находится в следующих состояниях:
состояние текущего запуска – процесс загружен в память, у него есть ресурсы и он использует время процесса. Определить статус можно только во время работы планировщика. Остальные процессы могут быть активными, но их не запускают, т.к. не подошло их время по возрасту и по приоритету.
Состояние ожидания. Процесс ждёт завершение другого.
Состояние сна. Ждёт наступления определённого времени или события.
Ожидание события. Может ждать набор событий.
Все эти процессы находятся в очереди задач. Кроме этого, может быть процесс во взвешенном состоянии, т.е. он ждёт в явном виде реакции со стороны другого процесса. Он должен быть принудительно запущен.
Когда процесс уничтожается, остаётся только модуль памяти, в котором хранилась данная задача.
Процесс может стать или остаться текущим по двум причинам: приоритет и возраст.
Если приоритет это величина неизменная и задаётся во время создания модуля памяти (эта величина показывает претензии), то возраст это число тактов ОС, в течении которых этот процесс был активным, но не работал. Максимальное значение возраста: FFFF.
Максимальный приоритет: 64.
Когда процесс переходит в состояние текущий запуск, его возраст становится раным 0, после каждого тика процессора, его возраст не изменяется, а возраст всех активных процессов увеличивается на 1. Если после тика возраст + приоритет у запущенного процесса меньше, чем у любого активного, то этот активный процесс запускается.
d_age_min– минимальная величина возраста = 20 – обычная величина
d_age_max– максимальная величина возраста – по достижению этой величины, возраст перестаёт инкрементироваться. Используется, если существуют процессы, которые не должны быть прерваны.
На практике d_age_max= 0.5*FFFF.