А. П. ЕРОПКИН
Научный руководитель – С. В. СИНИЦЫН, к. т.н., доцент
Национальный исследовательский ядерный университет «МИФИ»
ИСПОЛЬЗОВАНИЕ ЭМУЛЯТОРА МЕЖПРОЦЕССНЫХ МЕХАНИЗМОВ В ОБУЧЕНИИ
Рассматривается эмулятор межпроцесснных механизмов IPC ядра Linux и его применение в обучающем процессе.
Очереди сообщений являются одним из трех механизмов IPC (Inter Process Communication – Межпроцессное взаимодействие). Очереди сообщений впервые появились в UNIX System V и предназначаются для асинхронной передачи сообщений между процессами.
В рамках учебного курса ”Операционные системы” на кафедре “Кибернетика” проводятся лабораторные работы, посвященные изучению основ программирования с использованием функций ядра ОС, таких как порождение процессов, пересылка сообщений.
Минусами данных работ является то, что студенты работают с объектами ядра, что влечет за собой опасность нарушения нормальной работы лабораторного комплекса, вплоть до полного зависания всей системы, что усугубляется при использовании терминального доступа к общему серверу. Кроме того преподаватель уделяет достаточно много времени принятию выполненного задания, поскольку проверяет не только общую работоспособность программы, но и ключевые элементы исходного кода.
В результате анализа потребностей лабораторных работ был спроектирован и реализован эмулятор, обладающий следующими свойствами:
1. ошибки, возникающие в процессе работы программы, не оказывают влияния на ОС;
2. используемые функции и их параметры аналогичны реальным функциям за исключением случаев упрощения;
3. получение достаточно полного отчета о работе программы, позволяет не только увидеть всю последовательность выполняемых действий, но и уменьшить время проверки правильности работы программы, как обучающемуся, так и преподавателю. Использование отчета, как унифицированной формы сдачи программ по заданию, экономит время приема;
4. возможность работы как в ОС GNU/Linux, так и ОС Windows, т. к. все функции реализованы на языке С с использованием стандартной библиотеки, присутствующей в реализации компилятора на всех платформах.
Для реализации эмулятора был проверен анализ реализации в ядре Linux межпроцессного взаимодействия. Выделены ключевые особенности и функции, принимающие участие в передаче сообщений между процессами. На основании анализа работы функций ядра были составлены требования к функциям в пользовательской библиотеке эмулятора.
Реализация эмулятора сделана в виде динамической библиотеки, в которую включены все необходимые функции для моделирования межпроцессного взаимодействия.
При желании всегда есть возможность работы с исходными текстами, которые включены в комплект эмулятора.
Написание программ с использованием данной библиотеки заключается во включении необходимых заголовочных файлов и использовании функций с префиксом Lab_ .
Основные функции, реализованные в эмуляторе:
1. int Lab_fork – функция создания процесса;
2. int Lab_msgget – функция создания и инициализации новой очереди сообщений;
3. int Lab_msgrcv – функция чтения сообщения из очереди;
4. int Lab_msgsnd – функция отсылки сообщения в очередь.
Эмулятор внедрен в учебный процесс кафедры кибернетики. Использование разработанного эмулятора при проведении лабораторных работ позволило значительно сократить время приема заданий, одновременно существенно уменьшилось число случаев в отказе работы сервера.
Следует отметить возможность расширения функциональности эмулятора, путем написания и добавления необходимых функций. Данное свойство позволяет не только расширить область применения, но так же использовать его в целях моделирования.
Список литературы
1. “UNIX: взаимодействие процессов” – Питер, 2002, 576 с.
2.. Лабораторные работы по информатике в МИФИ по курсу “Операционные системы”.


