Разработка операционной системы жесткого режима реального масштаба времени на базе

advertisement
Московский Физико-Технический Институт
(государственный университет)
Разработка операционной системы жесткого
режима реального масштаба времени
на базе
ОС Solaris (E90) для ВК Эльбрус-90микро
Денис Федотов, 218 группа
Научный руководитель: Тухватуллин Гумер Мингатович
Москва 2008
Требования к режиму
реального времени
Время входа в процедуру прерывания не более 20
микросекунд.
Время переключения процесса из процедуры
прерывания на другой процесс не должна превышать 100
микросекунд.
Время передачи управления не должна превышать 300
микросекунд.
Вся деятельность системы должна быть основана на
приоритетном планировании всех процессов,
обработчиков внешних прерываний и семафорной
синхронизации с возможностью управления
приоритетами из ФПО.
Должна быть предоставлена возможность резидентации
ресурсов ВК:
–
резидентация оперативной памяти.
–
назначение одного или нескольких процессоров для
исполнения конкретного процесса.
Выбор направления для
создания ОС РВ
МСВС – нет поддержки режима РМВ.
Solaris 2.5.1 – поддержка МРРМВ.
VxWorks – не поддерживает
многопроцессорные симметричные системы,
вся работа в контексте ядра.
Linux – плохая система синхронизации и
обработки прерываний. Система МРРВ.
LynxOS – дорого стоит. Необходимость
портировать на новую архитектуру.
Постановка задачи
Разработка метода анализа временных
характеристик операционной системы.
Анализ существующих реализаций ОС E90 в
качестве систем реального маштаба
времени.
Разработка компонентов жесткого режима
РМВ ОС E90 на основе произведенного
анализа для достижения заданных
характеристик.
Анализ характеристик полученной системы.
Методы и средства анализа
временных характеристик
Специализированная ячейка mtst.
Набор тестовых программ.
Трассировка ОС.
Процессорный JTAG.
Логический анализатор.
Ячейка MTST
Генератор SBus прерываний.
Счетчик времени с точностью до 40
наносекунд.
Позволяет полностью замерить все
временные характеристики от момента
генерации прерывания до момента
выхода на пользователя.
Измерение времени реакции на
прерывание
Измерение времени
переключения задач
Анализ существующих реализаций
ОС E90 в качестве систем реального
времени
Время входа в процедуру
прерывания: 245 микросекунд.
Время переключения процесса из
процедуры прерывания на другой
процесс: 3721 микросекунд.
Время передачи управления: 3756
микросекунд.
Время переключения процессов: 367
микросекунд.
Проблемы
Неправильная, для ОС жесткого режима РМВ,
работа планировщика.
Нет возможности отключения процессоров от
обработки прерываний.
Нет возможности отключить миграцию процессов.
Нет возможности отключить на любом процессоре
выполнение задач к нему не привязанных.
Нет возможности привязывать процессы к
процессорам.
Нет возможности генерировать прерывания на
заданном процессоре.
Нет выбора режимов обработки прерываний.
Длительная работа прерывания clock, блокирующая
работу на ЦП.
Механизмы планирования
Существуют очереди готовых к исполнению
РТ процессов для каждого процессора и
одна общая очередь процессов для
исполнения на любом процессоре.
Только система реального времени может
привязать какой-то поток управления
(thread) к определенному процессу.
Только ФПО имеет право перемещать
привязанные потоки управления с одного
процессора на другой.
Вся работа подчиняется правилам
абсолютных приоритетов.
Отключения процессоров от
обработки прерываний
Строго необходимо. Так как это
позволяет гарантировать время
переключения, и непрерывность работы
задачи ФПО.
Все прерывания обрабатывает 1 или 2
процессора.
миграция процессов
Миграция процессов может внести
дополнительную задержку.
Процессы ФПО должны быть
привязаны к процессорам.
Idle
User
FP
Отключение на процессоре выполнение
задач к нему не привязанных
Необходимо если существует поток или
набор потоков задачи ФПО, для
которых времена отклика наиболее
критично.
Позволяет ограничить круг задач
исполняемых на данном процессоре.
Обслуживание двух уровневого
прерывания в «Эльбрус – 90 микро»
В операционную систему приходит заявка на обработку
прерывания высокого уровня.
Это прерывание обрабатывается на любом процессоре,
на котором разрешена обработка прерываний.
Обработчик прерывания высокого уровня генерирует
софтверное прерывание низкого уровня (1 или 4 уровня
по MBus).
Обработчик нижнего уровня запускается на любом
процессоре, на котором разрешена обработка
прерываний. И если он запустился не на том
процессоре, на котором ожидает ФПО, а так и будет в
силу того, что на нем отключена обработка внешних
прерываний, то он посылает внутреннее прерывание 14
уровня чтобы запустить планировщик.
Планировщик запускает на исполнение задачу ФПО,
если нет ничего более приоритетного.
Реализована другая схема
В операционную систему приходит заявка на
обработку прерывания высокого уровня.
Это прерывание обрабатывается на любом
процессоре, на котором разрешена обработка
прерываний.
Обработчик прерывания высокого уровня
генерирует софтверное прерывание низкого уровня
(1,4,6,7,8 или 9 уровень по MBus).
Обработчик нижнего уровня запускается на
процессоре, на котором ФПО ждет приход этого
прерывания.
Запускается планировщик, который ставит задачу
ФПО на исполнение.
Классические этапы обработки
прерывания
Т1 – время прихода прерывания в процессор.
Т2 – время входа в ОС.
Т3 – время входа в системный обработчик
прерывания (процедура драйвера) для исполнения
TopHalf .
Т4 – окончание TopHalf.
T5 – Начало BottomHalf.
Т6 – окончание BottomHalf и активизация процесса
ФПО (постановка процесса в очередь готовых к
исполнению процессов).
Т7 – начало работы планировщика для
переключения процессора на процесс ФПО.
Т8 – начало работы ФПО процесса для реакции на
прерывание.
Причины возможных задержек
при входе в прерывание
Т1-Т2 – задержка входа в ОС.
Т2-Т3 – Это время работы ядра ОС.
Т3-Т4 – время исполнения TopHalf.
T4 – Т5 – задержка начала исполнения
BottomHalf.
T5-Т6 – время работы BottomHalf.
Т6-Т7 – время задержки до начала работы
планировщика.
Т7-Т8. Время работы планировщика
процессов.
Выбор режима обработки прерываний
1. Последовательная
2. Оптимальная
3. Честная
Длительная работа прерывания clock
Прерывание высокого уровня.
Работа clock до 400 микросекунд.
Решение
Разбить на 2 части.
Первая часть обрабатывается на том
процессоре на который она придет.
Вторая часть:
– Как отдельный thread с системным приоритетом.
– Как прерывание низкого уровня, на отдельно
выделенном для этого процессоре, не
обрабатывающем другие прерывания.
Доработка драйверов
Оптимизация работы драйверов.
Доработка драйверов с учетом новых
возможностей ядра.
Работа с памятью
выравнивать адреса по началу
страницы памяти.
регулировать размер структур таким
образом, чтобы размер структуры был
кратен длине страницы (4096 Байт).
Экспериментальные
результаты
Новое ядро
Старое ядро
Время переключения процессов
Минимум
25
47
В среднем
27
95
Максимум
28
367
Новое ядро Старое ядро
Время входа в процедуру прерывания
В среднем
11
23
Максимум
17
245
Время в прерывании
В среднем
18
38
Максимум
32
345
Время от прерывания до poll
В среднем
37
66
Максимум
57
3721
Время от poll до пользователя
В среднем
10
30
Максимум
12
45
Новое ядро
Старое ядро
Итоговое время
время переключения процесса из процедуры прерывания на другой
процесс
В среднем
48
95
Максимум
62
3756
Результаты
Реализовано и внедрено в
программное обеспечение ВК
«Эльбрус-90микро» новое ядро
удовлетворяющее требованиям
поставленной задачи и
обеспечивающее эффективное время
переключения процессов и обработки
прерываний.
Q&A
Download