Размер области памяти: A=197 Мб;
Начальный адрес: B=0x513F4598;
Создать с помощью этого: C=mmap;
Количество потоков: D=35;
Размер файлов для записи: E=26;
Тип обращения к диску: F=block;
Размер блока I/O: G=51;
Последовательность I/O блоков: H=random;
Число потоков для I из файлов: I=26;
Подсчитать характеристику: J=avg;
Примитив синхронизации K=sema;
Разработать программу на языке С, которая осуществляет следующие действия
Создает область памяти размером A мегабайт, начинающихся с адреса B (если возможно)
при помощи C=(malloc, mmap) заполненную случайными числами /dev/urandom в D потоков.
Используя системные средства мониторинга определите адрес начала в адресном пространстве
процесса и характеристики выделенных участков памяти. Замеры виртуальной/физической памяти необходимо снять:
До аллокации
После аллокации
После заполнения участка данными
После деаллокации
Записывает область памяти в файлы одинакового размера E мегабайт с использованием
F=(блочного, некешируемого) обращения к диску. Размер блока ввода-вывода G байт.
Преподаватель выдает в качестве задания последовательность записи/чтения блоков
H=(последовательный, заданный или случайный)
Генерацию данных и запись осуществлять в бесконечном цикле.
В отдельных I потоках осуществлять чтение данных из файлов и подсчитывать агрегированные
характеристики данных - J=(сумму, среднее значение, максимальное, минимальное значение).
Чтение и запись данных в/из файла должна быть защищена примитивами синхронизации K=(futex, cv, sem, flock).
По заданию преподавателя изменить приоритеты потоков и описать изменения в характеристиках программы.
Для запуска программы возможно использовать операционную систему Windows 10 или Debian/Ubuntu в виртуальном окружении.
Измерить значения затраченного процессорного времени на выполнение программы и на операции ввода-вывода используя системные утилиты.
Отследить трассу системных вызовов.
Используя stap построить графики системных характеристик.