Мониторинг виртуальной памяти в ОС Linux - Курсовая работа

бесплатно 0
4.5 70
Разработка драйвера под Linux, отслеживающего выделение и освобождение процессами виртуальной памяти и выделение физических страниц при страничных отказах. Компиляция драйвера и работа с ним. Экспериментальная проверка работоспособности драйвера.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
Зачастую бывает необходимо отследить за работой того или иного процесса с памятью, например, чтобы обнаружить утечки памяти, узнать, в какие моменты и сколько памяти процесс выделяет. Для решения данной задачи существует ряд средств, а именно: · Файловая система /proc - позволяет прочесть различную информацию о всей системе в целом и о каждом из процессов, в том числе информацию об использовании процессом памяти и об отображениях памяти данного процесса. · strace - утилита, позволяющая трассировать все системные вызовы, выполняемые данным процессом (в частности, выделение памяти вызовами brk/mmap). Она использует стандартный отладочный механизм ядра под названием ptrace - подключается к исследуемому процессу как отладчик (вызовов ptrace(), указывая при этом флаг PTRACE_SYSCALL, что заставляет систему уведомлять трассирующий процесс о всех системных вызовах трассируемого). Пример его работы: execve (»./test3», [«test3»], [/* 61 vars */]) = 0 … fsync(0) = -1 EINVAL (Invalid argument) mmap2 (NULL, 2101248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7bf4000 fsync(1) = -1 EINVAL (Invalid argument) fsync(2) = -1 EINVAL (Invalid argument) munmap (0xb7bf4000, 2101248) = 0 exit_group(0) На приведенной трассировке видно, как процесс выделяет и освобождает 2101248 байт памяти. Таким образом, возникает необходимость в средстве, позволяющем отслеживать не только выделения виртуальной памяти процессу, но и выделения отдельных страниц физической памяти в результате страничных сбоев. 1. Аналитический раздел 1.1 Постановка задачи Разработать драйвер под Linux, отслеживающий выделение и освобождение процессами виртуальной памяти и выделение физических страниц при страничных отказах. Драйвер должен поддерживать динамическую загрузку и выгрузку без перезапуска системы и задание списка процессов, за которыми необходимо выполнять мониторинг. Взаимодействие с пользовательской программой осуществляется посредством файлов, создаваемых в файловой системе /proc. В общих словах, подсистема управления процессами реализует абстракцию множества процессов, работающих одновременно на одном или нескольких процессорах. 1.1.1 Управление памятью Память компьютера - один из главных ресурсов, и производительность системы критически зависит от политики распределения памяти. Конструкторский раздел 2.1 Модульная структура драйвера Драйвер memmon состоит из следующих модулей: mmon.c - основной модуль, отвечающий за инициализацию и выгрузку драйвера mm-fault.c - обработчик страничных ошибок syscalls.c - высокоуровневая часть перехвата системных вызовов syscalls-entry.S - низкоуровневая часть перехвата системных вызовов watch-pids.c - список процессов, за которыми осуществляется мониторинг, добавление и удаление из него events.c - кольцевой буфер событий 2.2 Инициализация и выгрузка драйвера Инициализацию драйвера выполняет функция int __init init(void). Данный драйвер создает в папке /proc/memmon 2 файла - watch-pids - для добавления / удаления процессов в список отслеживаемых и events - файл, содержащий собственно лог событий. 2.4 Перехват системных вызовов Одно из основных действий, выполняемых драйвером - перехват системных вызовов. Память для буфера выделяется функцией kzalloc() - аналогом фукнций malloc/calloc() из стандартной библиотеки С.

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?