Вычисление времени запрета обработки внешних прерываний ОС с использованием ячейки МПВ-М Магистерская диссертация Студент: Севастинович Павел, 515 гр. Научный руководитель: к.т.н.Харитонов М.И.
Постановка задачи Нить Обработчик прерываний Захват Внешнее прерывание 1 зафиксированное Обработка внешнего прерывания 1 Освобождение - функция spin_lock_irqrestore Захват - функция spin_lock_irqsave Внешние прерывания 2..n не зафиксированные Освобождение T nf T nf – время блокировки фиксации прерываний
Функциональная схема ячейки привязки времени МПВ-М Приём внешних прерываний Определение времени обработки внешних прерываний Обработчик внешних прерываний Регистр внешних прерываний Счётчики времени прерываний в 5-и каналах Генератор прерываний с периодом кратным 4 тактам шины PCI в 5-и каналах Приём и обработка внешних прерываний по 5-и каналам Приём и обработка внешних прерываний по 15-и каналам Посылка прерывания пользователем Регистр выходных прерываний Передача во внешний интерфейс выходных прерываний по 16-и каналам Каналы входных и выходных прерываний
Цель работы Реализация режима генерации прерываний в драйвере МПВ-М Реализация теста режима генерации прерываний Проведение статистических измерений времени закрытых прерываний
Архитектура системы измерения времени Инициализация устройства Запуск режима генерации прерываний Сбор статистики измерения времени /dev/mpv/mpv_(in, out, st) VFS Драйвер ячейки привязки времени с использованием генератора прерываний Ячейка привязки времени ioctl (input output control interface) интерфейс управления ввода-вывода для конфигурирования и изменения специальных характеристик устройства Файлы устройства Ядро Пользователь Пользовательское приложение open, close, ioctl
Драйвер устройства МПВ пользовательские команды Модуль mpvmpv_init()mpv_exit()mpv_open()mpv_close()mpv_ioctl() Выполняемое действие Инициализация устройства Удаление устройства Открытие файла устройства Закрытие файла устройства Интерфейс управления ввода-вывода Команды пользователя modprobe mpvrmmod mpvopen()close()ioctl() консоль код приложения
Структурная схема драйвера МПВ-М Регистрация устройства в ОС Инициализация состояния ПО Обнуление регистров устройства и выполнение аппаратных проверок Инициализация регистра полярностиСоздание малых узлов в VFSОпределение тактовой частоты шиныПодключение обработчика прерываний ioctl Посылка выходного прерыванияОжидание прерывания Установка полярности внешних прерываний Установка в исходное состояние регистров Установка в исходное состояние выходных параметров Запуск устройства Установка режима генерации прерываний init delete Удаление малых узлов из VFS Освобождение линии прерываний Удаление устройства из списка регистрации Обработчик прерываний
Локальные подпрограммы драйвера МПВ Локальная подпрограммы модуля mpv mpv_check_initial_value_reg()mpv_intr_handler()mpv_write_regl()mpv_read_regl()mpv_reset_module() Выполняемая функция Проверка начальных значений регистров Обработчик прерываний Запись в регистрЧтение из регистраОбнуление регистров Изменения Введена проверка дополнительных регистров Введено обнуление регистров счётчиков в режиме генерации прерываний Введено обнуление дополнительных регистров
Результаты измерений времени закрытых прерываний на УВК/С Количество прерываний/10^6 Время запрета обработки внешних прерываний, мкс График отражает распределение количества прерываний по временам обработки
Реализован режим генерации прерываний в драйвере МПВ-М Реализован тест mpv_tc для генерации прерываний по всем каналам МПВ-М Собрана статистика времен закрытых прерываний для машины УВК/С Итоги работы
Спасибо за внимание! Вопросы?