lab_4 / ос_лаб_4_Мажукин
.docxМинистерство цифрового развития связи и массовых коммуникаций
Ордена Трудового Красного Знамени
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
СВЯЗИ И ИНФОРМАТИКИ»
Кафедра «Системное программирование»
Отчёт по лабораторной работе №4
по дисциплине «Операционные системы»
Выполнил: студент группы БСТ2104
Мажукин И.Н.
Проверил: ст. преп. Алексанян Д.А.
Москва, 2023 г.
Цели лабораторной работы:
Изучить основные команды и инструменты для управления процессами
Ознакомиться со средствами мониторинга производительности в Linux
Приобрести практические навыки автоматизации запуска процессов
Изучить набор средств коммуникации процессов в ОС GNU/LINUX.
Приобрести практические навыки по использованию механизмов межпроцессного взаимодействия
Задание на лабораторную работу
Задание 1.1. Мониторинг производительности системы
Выполните проверку системы при помощи команды top. Отсортируйте процессы по: объему используемой памяти; времени работы; идентификатору; проценту использования времени процессора.
Запустите новый процесс в системе, найдите его в выводе команды top. Измените приоритет запущенного процесса командой renice и убедитесь, что изменения отражены в выводе top.
С помощью команды atop выполните сортировку процессов минимум по трем параметрам общей нагрузки.
При помощи команды mpstat и опции P выведите информацию по: определенному процессору, всем процессорам.
Выполните проверку системы при помощи команды pidstat. Выведите по четыре отчета статистики использования процессора для каждой активной задачи в системе с интервалом в три секунды.
Задание 1.2. Создание скрипта для получения статистики
Напишите скрипт, осуществляющий сбор статистики использования процессоров и статистики работы процессов средствами mpstat и pidstat, выводящий данные в текстовый файл с именем yyyy-mm-dd_h:m:s_syslog.
Задание 1.3. Создание автозапускаемой службы
С помощью утилиты systemd зарегистрируйте свою службу по сбору статистики, запускающую скрипт из задания 2 при старте системы. Запустите службу и проверьте ее работу.
Задание 2. Реализация обмена данными между процессами
Написать программы, выполняющие с помощью ВСЕХ перечисленных механизмов межпроцессного взаимодействия (разделяемая память, сокеты, каналы) задачу. Условие задачи: реализовать обмен текстовыми сообщениями между несколькими процессами, обеспечить возможность отправки сообщения сразу нескольким адресатам, реализовать подтверждение приема сообщения адресатом или, в случае потери сообщения, повторную его передачу.
Для решения задачи создавать минимально 2 ведомых процесса, выполняющих переданные ведущим процессом подзадачи и возвращающие результаты ведущему процессу. Финальную обработку результатов, по необходимости, осуществлять ведущим процессом.
Задание 1.1. Мониторинг производительности системы
На рисунке 1 представлена команда, предоставляющая выполнение проверки системы, на рисунке 2 представлен результат её выполнения
Рисунок 1 – Команда, предоставляющая выполнение проверки системы
Рисунок 2 – Результат выполнения команды top
На рисунке 3 представлена сортировка процессов по объёму используемой памяти (колонка %MEM)
Рисунок 3 – Сортировка процессов по объёму используемой памяти
На рисунке 4 представлена сортировка процессов по времени работы (колонка TIME+)
Рисунок 4 – Сортировка процессов по времени работы
На рисунке 5 представлена сортировка процессов по идентификатору в порядке возрастания (колонка PID USER)
Рисунок 5 – Сортировка процессов по идентификатору в порядке возрастания
На рисунке 6 представлена сортировка процессов по проценту использования времени процессора (колонка %CPU)
Рисунок 6 – Сортировка процессов по проценту использования времени процессора
На рисунке 7 представлен запуск нового процесса в системе (Bitwig studio). Данный процесс присутствует в выводе команды top.
Рисунок 7 – Список процессов с присутствием процесса Bitwig
На рисунке 8 представлена команда для изменения приоритета запущенного процесса и результат её выполнения
Рисунок 8 – Команда для изменения приоритета запущенного процесса
На рисунке 9 представлена команда для получения загрузки по процессору, памяти, дискам и сети, на рисунке 10 представлен результат ввода команды
Рисунок 9 – Команда для получения загрузки по процессору, памяти, дискам и сети
Рисунок 10 – Результат выполнения команды atop
На рисунке 11 представлена сортировка процессов по проценту использования времени процессора (колонка %CPU) внутри команды atop
Рисунок 11 – Сортировка процессов по проценту использования времени процессора внутри команды atop
На рисунке 12 представлена сортировка процессов по объёму используемой памяти (колонка MEM) внутри команды atop
Рисунок 12 – Сортировка процессов по объёму используемой памяти внутри команды atop
На рисунке 13 представлена сортировка процессов по дисковой активности (колонка DKS) внутри команды atop
Рисунок 13 – Сортировка процессов по дисковой активности внутри команды atop
На рисунке 14 представлена команда для вывода информации по всем процессорам и результат её выполнения
Рисунок 14 – Команда для вывода информации по всем процессорам и результат её выполнения
На рисунке 15 представлена команда для вывода информации по определённому процессору и результат её выполнения
Рисунок 15 – Команда для вывода информации по определённому процессору и результат её выполнения
На рисунке 16 представлена команда, предоставляющая выполнение проверки системы при помощи команды pidstat. Команда также выводит четыре отчёта статистики использования процессора с интервалом в три секунды
Рисунок 16 – Результат работы команды pidstat -u 3 4
Задание 1.2. Создание скрипта для получения статистики
На рисунке 17 представлен текст скрипта, который осуществляет сбор статистики использования процессоров и статистики работы процессов
Рисунок 17 – Текст скрипта
На рисунке 18 представлено содержимое файла лога
Рисунок 18 – Содержимое файла лога
На рисунке 19 представлен вывод команды ls -l для директории сохранения логов скрипта
Рисунок 19 – Вывод команды ls -l для директории сохранения логов скрипта
Задание 1.3. Создание автозапускаемой службы
На рисунке 20 представлен текст файла sysloggining.service
Рисунок 20 – Текст файла stats_collector.service
На рисунке 21 представлена команда для установки службы
Рисунок 21 – Команда, регистрирующая службу по сбору статистики
На рисунке 22 представлена команда, регистрирующая службу по сбору статистики
Рисунок 22 – Команда, регистрирующая службу по сбору статистики
На рисунке 23 представлены команды для запуска службы и включения её в автозагрузку
Рисунок 23 – Команды для запуска службы и включения её в автозагрузку
На рисунке 24 представлен вывод команды ls -l для директории сохранения логов скрипта
Рисунок 24 – Вывод команды ls -l для директории сохранения логов скрипта
На рисунке 25 представлена статистика выполнения службы
Рисунок 25 – Статистика выполнения службы
Задание 2. Реализация обмена данными между процессами
На рисунках 28 и 29 представлены коды файлов Channel_server.py и Canal_client.py
Рисунок 28 – Код файла Channel_server.py
Рисунок 29 – Код файла Channel_client.py
На рисунках 30 и 31 представлены результаты работы файлов
Рисунок 30 – Результат работы файла Canal_client.py
Рисунок 31 – Результат работы файла Canal_server.py
На рисунках 32 и 33 представлены коды файлов Socket_server.py и Socket_client.py
Рисунок 32 – Код файла Socket_server.py
Рисунок 33 – Код файла Socket_client.py
На рисунках 34 и 35 представлены результаты работы файлов
Рисунок 34 – Результат работы файла Socket_client.py
Рисунок 35 – Результат работы файла Socket_server.py
На рисунках 36 и 37 представлены коды файлов Shared_memory_server.py и Shared_memory_client.py
Рисунок 36 – Код файла Shared_memory_server.py
Рисунок 37 – Код файла Shared_memory_client.py
На рисунках 38 и 39 представлены результаты работы файлов
Рисунок 38 – Результат работы файла Shared_memory_client.py
Рисунок 39 – Результат работы файла Shared_memory_server.py