- •«Московский технический университет связи и информатики»
- •Лабораторная работа №4
- •Задание 1. Управление памятью в Linux
- •Задание 1.1 Получение карты виртуальной памяти процесса
- •Задание 1.2 Настройка файла подкачки
- •Задание 1.3. Тестирование памяти
- •Дополнительное задание
- •Задание 2. Реализация обмена данными между процессами
Задание 1.3. Тестирование памяти
С помощью утилиты Memtester проведите тестирование 1 Гб свободной памяти (если данный объем недоступен, выберите меньшее количество свободной памяти), выполнив не менее двух проходов. Отобразите в отчете процесс и результаты тестирования.
Результат выполнения и установки утилиты представлены на рисунках 15-17.
Рисунок 15 – Установка утилиты memtester
Рисунок 16 – Тестирование 1 ГБ свободной памяти
Рисунок 17 – Тестирование 1 ГБ свободной памяти
Дополнительное задание
Получите текущее значение параметра swappiness. Измените его. Сделайте скриншот внесенного изменения. На что влияет значение этого параметра?
Результат выполнения представлен на рисунке18.
Рисунок 18 – Получение и изменение параметра swappiness
Swappiness определяет, насколько активно ядро Linux будет использовать область подкачки. Значение этого параметра находится в диапазоне от 0 до 100, где 0 означает минимальное использование подкачки, а 100 максимальное.
Значение 0. Компьютер будет стараться избегать использования области подкачки, сохраняя данные в оперативной памяти на столько, насколько это возможно.
Значение 100. Компьютер будет активно использовать область подкачки, чтобы освободить оперативную память, когда она начинает заполняться.
Изменение параметра swappiness может применяться для оптимального использования ресурсов в зависимости от конкретных потребностей.
Задание 2. Реализация обмена данными между процессами
Цели:
Изучение набора средств коммуникации процессов в ОС GNU/LINUX.
Получение практических навыков по использованию механизмов межпроцессного взаимодействия
Задание:
Написать программу, выполняющую с помощью ВСЕХ перечисленных механизмов межпроцессного взаимодействия (разделяемая память, сокеты, каналы) одну из задач (в соответствии с № по журналу).
Выбор средства коммуникации в программе осуществлять исходя из переданного пользователем при запуске программы аргумента, например: ./lab_4 pipe запускает ведущую программу, задавая режим коммуникации с помощью каналов, далее ведущий процесс создает дочерние.
Для решения задачи создавать минимально 2 ведомых процесса, выполняющих переданные ведущим процессом подзадачи и возвращающие результаты ведущему процессу. Финальную обработку результатов, по необходимости, осуществлять ведущим процессом.
Продумать интерфейс взаимодействия с пользователем и отображение результатов работы.
Задача:
Реализовать алгоритм блочной сортировки файла целых чисел. Каждый процесс, выполняющий сортировку, получает свою часть файла от ведущего процесса и сортирует его. Ведущий процесс выполняет упорядочивание уже отсортированных блоков. При необходимости ведомым процессам может быть выделено более одного задания на сортировку.
На рисунках 19-32 представлен код программы.
Рисунок 19 – Код программы
Рисунок 20 – Код программы
Рисунок 21 – Код программы
Рисунок 22 – Код программы
Рисунок 23 – Код программы
Рисунок 24 – Код программы
Рисунок 25 – Код программы
Рисунок 26 – Код программы
Рисунок 27 – Код программы
Рисунок 28 – Код программы
Рисунок 29 – Код программы
Рисунок 30 – Код программы
Рисунок 31 – Код программы
Рисунок 32 – Код программы
На рисунке 33 представлено содержание исходного файла.
Рисунок 33 – Содержание исходного файла
На рисунках 34-36 представлено содержание файла после сортировки с помощью сокетов, каналов и разделяемой памяти соответственно.
Рисунок 34 – Содержание нового файла после сортировки сокетами
Рисунок 35 – Содержание нового файла после сортировки каналами
Рисунок 36 – Содержание нового файла после сортировки разделяемой памятью
Вывод
Мы изучили управление памятью в Linux. Изучили основные методы управления памятью в Linux, построили карту виртуальной памяти процесса, приобрели практические навыки работы с инструментами мониторинга использования памяти, настройки параметров виртуальной памяти, тестирования работоспособности оперативной памяти.
Также изучили реализацию обмена данными между процессами. Получили практические навыкы по использованию механизмов межпроцессного взаимодействия с помощью каналов, сокетов и разделяемой памяти.
