Разработать программу на языке С, которая осуществляет следующие действия
- Создает область памяти размером 242 мегабайт, начинающихся с адреса 0xC5FA086B (если возможно) при помощи mmap заполненную случайными числами /dev/urandom в 35 потоков. Используя системные средства мониторинга определите адрес начала в адресном пространстве процесса и характеристики выделенных участков памяти. Замеры виртуальной/физической памяти необходимо снять
- До аллокации
- После аллокации
- После заполнения участка данными
- После деаллокации
- Записывает область памяти в файлы одинакового размера 162 мегабайт с использованием блочного обращения к диску. Размер блока ввода-вывода 129 байт. Преподаватель выдает в качестве задания последовательность записи/чтения блоков (последовательный)
- Генерацию данных и запись осуществлять в бесконечном цикле.
- В отдельных 46 потоках осуществлять чтение данных из файлов и подсчитывать агрегированные характеристики данных - сумму.
- Чтение и запись данных в/из файла должна быть защищена примитивами синхронизации futex
- По заданию преподавателя изменить приоритеты потоков и описать изменения в характеристиках программы. Измерить значения затраченного процессорного времени на выполнение программы и на операции ввода-вывода используя системные утилиты. Отследить трассу системных вызовов. Используя stap построить графики системных характеристик.
btw I use arch linux