Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / 3 лабораторная

.docx
Скачиваний:
0
Добавлен:
09.07.2025
Размер:
7.81 Mб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ

КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики»

Операционные системы

Лабораторная работа №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, приобрели практический навык автоматизации запуска процессов.

Также изучили средства и механизмы синхронизации процессов с использованием сигналов, семафоров, мьютексов и барьеров.

Соседние файлы в папке Лабы