Реализация мониторинга создания, управления и удаления сегментов разделяемой памяти
12
Как уже было отмечено, отследить обращения к сегментам разделяемой памяти можно, перехватив системный вызов sys_ipc, который помимо прочих аргумантов принимает параметр call, определяющий какую из системных функций sys_get, sys_shmat, sys_ctl, sys_dt следует вызвать. Для перехвата выхова sys_ipc, надо сделать следующее: · В функции init_module() сохранить указатель на оригинальный (исходный) вызов – orig_sys_ipc – и в таблице системных вызовов sys_call_table настроить соответствующий указатель на новый системный вызов. · Создать функцию, реализующую новый системный вызов – new_sys_ipc. · В функции cleanup_module() восстанавить оригинальный системный вызов, используя ранее сохраненный указатель. В созданном обработчике системного вызова, в зависимости от аргумента call, вызывать функции обработки вызовов sys_get, sys_shmat, sys_ctl, sys_dt, которые сохраняют полученные данные в соответствующие структуры данных, затем отображаются в ядро и выводятся в системном файле /var/log/messages. Компиляция созданного модуля ядра осуществляется с помощью команды # make Несмотря на все свои достоинства, утилита make ничего не знает о проекте, поэтому необходимо создать простой текстовый файл, который будет содержать все необходимые инструкции по сборке. Файл с инструкциями по сборке проекта называется Makefile. В данном случае, когда модуль состоит из одного файла, Makefile имеет вид, представленный на рис.3
Рис.3. Makefile
Загрузка модуля в ядро осуществляется командой insmod ./<имя модуля>.ko Выгрузка – командой rmmod <имя модуля>
Проверить, загружен ли модуль в ядро, можно командой # lsmod, которая выдаёт список всех загруженных модулей. lsmod в свою очередь обращается за необходимыми сведениями к файлу /proc/modules.
Пользовательский интерфейс
Пользовательский интерфейс является полностью консольным. Во-первых, потому что при минимуме входных данных нецелесообразно создавать графическое приложение. Во-вторых, концепция ОС Linux предполагает широкое использование возможностей командной строки Shell. Для того чтобы запустить программу, необходимо выполнить следующую последовательность действий: · Запустить приложение start.o · Загрузить модуль ядра · Запустить тестовую программу (или любое приложение ОС) · Выгрузить модуль ядра · Запустить приложение save.o Тестирующее приложение предоставляет пользователю меню, позволяющее производить выбор действий над сегментом разделяемой памяти (рис.4).
Рис.4. Меню тестирующей программы
Результат отображается на экране и сохраняется в файле. Структура файла отображена на рис.5
Рис.5 Файл Result Заключение
В результате выполнения данной курсовой работы был изучен механизм межпроцессного взаимодействия (IPC) на основе сегментов разделяемой памяти. Реализован мониторинг системных вызовов, обращающихся к объектам Shared Memory, а именно создания, удаления сегментов разделяемой памяти и обращения к ним в ОС Linux. В результате чего были получены данные о сегментах разделяемой памяти, такие как идентификаторы пользователя и группы владельца, запрашиваемый и реальный размеры сегмента, адрес привязки сегмента в адресном пространстве пользователя и другие. Список используемой литературы
1) «Linux Programmer’s Guide», Sven Goldt, Sven van der Meer, Skott Burkett, Matt Welsh 2) «The Linux Kernel Module Programming Guide», А Peter Jay Salzman, Michael Burian, Ori Pomerantz 3) «Перехват системных вызовов», статья из журнала «Системный администратор», В. Мешков 4) «Современные операционные системы» , Э. Таненбаум
12
Популярное: Почему стероиды повышают давление?: Основных причин три... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (150)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |