
Лабы / 3 лабораторная
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ
КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Операционные системы
Лабораторная работа №3
Москва, 2024 г.
Содержание
Задание 1. Управление процессами 3
Задание 2. Средства синхронизации в ОС GNU/LINUX 17
Вывод 23
Задание 1. Управление процессами
Цели:
изучить основные команды и инструменты для управления процессами
ознакомиться со средствами мониторинга производительности в Linux
приобрести практический навык автоматизации запуска процессов
Задание 1.1. Мониторинг производительности системы
1. Выполните проверку системы при помощи команды top. Отсортируйте процессы по: объему используемой памяти; времени работы; идентификатору; проценту использования времени процессора.
Воспользуемся командой top -o %MEM (рисунок 1).
Рисунок 1 – Сортировка процессов по объёму используемой памяти
Воспользуемся командой top -o TIME+ (рисунок 2).
Рисунок 2 – Сортировка процессов по времени работы
Воспользуемся командой top -o PID для сортировки по идентификатору (рисунок 3).
Рисунок 3 – Сортировка процессов по идентификатору в порядке убывания
Воспользуемся командой top -o %CPU (рисунок 4).
Рисунок 4 – Сортировка процессов по проценту использования времени процессора
2. Запустите новый процесс в системе, найдите его в выводе команды top. Измените приоритет запущенного процесса командой nice и убедитесь, что изменения отражены в выводе top.
Откроем firefox, его PID 25558 (рисунок 5)
Рисунок 5 – Вывод команды top
Воспользуемся командой sudo renice -n 10 -p 25558 (рисунок 6).
Рисунок 6 – Изменение приоритета процесса
Результат при выводе команды top представлен на рисунке 7.
Рисунок 7 – Вывод команды top с измененным приоритетом процесса 25558
3. С помощью команд atop и atopsar выполните сортировку процессов минимум по трем параметрам общей нагрузки.
Выполним сортировку по объему использования памяти (рисунок 8)
Рисунок 8 – Вывод команды atop с ключом m
Выполним сортировку по проценту использования времени процессора CPU (рисунок 9).
Рисунок 9 – Вывод команды atop с ключом с
Выполним сортировку по дисковой активности (рисунок 10).
Рисунок 10 – Вывод команды atop с ключом D
Анализ логов нагрузки на RAM 12 ноября (рисунок 11).
Рисунок 11 – Вывод команды atopsar с ключом m
Анализ логов нагрузки на сетевые интерфейсы (рисунок 12).
Рисунок 12 – Вывод команды atopsar с ключом i
Анализ логов нагрузки на дисковое пространство (рисунок 13).
Рисунок 13 – Вывод команды atopsar с ключом d
4. При помощи команды mpstat и опции P выведите информацию по: определенному процессору, всем процессорам.
Вывод информации только для процесса 0 (рисунок 14).
Рисунок 14 – Вывод информации о процессе 0
Вывод информации по всем процессам (рисунок 15).
Рисунок 15 – Вывод информации по всем процессам
5. Выполните проверку системы при помощи команды pidstat. Выведите по четыре отчета статистики использования процессора для каждой активной задачи в системе с интервалом в три секунды.
Воспользуемся командой pidstat –u 3 4 (рисунок 16).
Рисунок 16 – Результат работы команды pidstat -u 3 4
Задание 1.2. Создание скрипта для получения статистики
На рисунке 17 представлен текст скрипта, который осуществляет сбор статистики использования процессоров и статистики работы процессов.
Рисунок 17 – Текст скрипта
На рисунке 18 представлен вывод команды ls -l для директории сохранения логов скрипта.
Рисунок 18 – Вывод команды ls -l для директории сохранения логов скрипта
На рисунке 19 представлено содержимое файла лога.
Рисунок 19 – Содержимое файла лога
Задание 1.3. Создание автозапускаемой службы
На рисунке 20 представлен текст файла start.service
Рисунок 20 – Текст файла start.service
На рисунке 21 представлена команда для установки службы
Рисунок 21 - Команда для установки службы
На рисунке 22 представлены команда, регистрирующая службу по сбору статистики, и для запуска службы и включения её в автозагрузку.
Рисунок 22 – Команды для запуска службы и включения её в автозагрузку
На рисунке 23 представлен вывод команды ls -l для директории сохранения логов скрипта.
Рисунок 23 – Вывод команды ls -l для директории сохранения логов скрипта
На рисунке 24 представлена статистика выполнения службы.
Рисунок 24 – Статистика выполнения службы
Задание 2. Средства синхронизации в ОС GNU/LINUX
Цель:
Изучение механизмов синхронизации процессов с использованием
сигналов;
семафоров;
мьютексов;
барьеров.
Исследовать на конкретном примере особенности 3 по выбору из указанных методов синхронизации потоков:
1) сигналы
2) семафоры
3) мьютексы
4) барьеры
Задачи для синхронизации выбрать, исходя из особенностей методов, на свое усмотрение.
Примечание:
1. Задачи для каждого метода синхронизации должны быть различными.
2. Задачи должны наглядно демонстрировать выбранный метод синхронизации и учитывать его особенности
1. Сигналы
Задача: Реализация простого приложения, где один поток отправляет сигнал другому потоку для завершения его работы.
Обоснование: Сигналы в C++ позволяют потокам взаимодействовать друг с другом, отправляя уведомления о событиях. Это полезно, когда необходимо уведомить поток о том, что он должен завершить свою работу.
Код и результат выполнения программы представлены на рисунках 25 – 26 соответственно.
Рисунок 25 – Код программы
Рисунок 26 – Результат выполнения программы
2. Семафоры
Задача: Реализация задачи, где несколько потоков должны получить доступ к ограниченному ресурсу (например, к печатающему устройству).
Обоснование: Семафоры позволяют контролировать доступ к ресурсам, ограничивая количество потоков, которые могут одновременно использовать ресурс. Это особенно полезно в ситуациях, когда ресурс ограничен.
Код и результат выполнения программы представлены на рисунках 27 – 28 соответственно.
Рисунок 27 – Код программы
Рисунок 28 – Результат выполнения программы
3. Мьютексы
Задача: Реализация задачи, где несколько потоков обновляют общий счетчик.
Обоснование: Мьютексы обеспечивают взаимное исключение, что позволяет избежать состояния гонки при доступе к общему ресурсу. Это важно, когда несколько потоков могут одновременно изменять данные.
Код и результат выполнения программы представлены на рисунках 29 – 31 соответственно.
Рисунок 29 – Код программы
Рисунок 30 – Код программы
Рисунок 31 – Результат выполнения программы
Вывод
Мы изучили управление процессами в Linux, а именно изучили основные команды и инструменты для управления процессами, ознакомились со средствами мониторинга производительности в Linux, приобрели практический навык автоматизации запуска процессов.
Также изучили средства и механизмы синхронизации процессов с использованием сигналов, семафоров, мьютексов и барьеров.