4 Задание 2. Процессы и потоки в ос gnu/linux
Цель работы: изучение системных средств
порождения и взаимодействия процессов
и потоков в ОС GNU/LINUX.
Задача 2.2
Написать программу, создающую два
дочерних потока. Родительский процесс
и два дочерних потока должны выводить
на экран свой id и pid родительского
процесса и текущее время в формате:
часы:минуты:секунды.
На рисунках 21 – 22 представлен код
программы на языке программирования
С++.
Рисунок 21 – Код программы
Рисунок 22 – Код программы
На рисунке 23 представлен результат
работы программы
Рисунок 23 – Результат работы программы
для задачи 2.2
Задача 2.1
Написать программу, создающую два
дочерних процесса с использованием
двух вызовов fork(). Родительский и два
дочерних процесса должны выводить на
экран свой pid и pid родительского процесса
и текущее время в формате: часы:минуты:секунды.
Используя вызов system(), выполнить команду
ps -x в родительском процессе. Найти свои
процессы в списке запущенных процессов.
Первый дочерний процесс, помимо указанного
вывода, также выводит информацию по
варианту (табл.3), используя вызов
system().
Второй дочерний процесс после вывода
основной информации должен быть замещен
задачей, создающей два дочерних потока
(см задание 2.2.).
На рисунках 24 – 26 представлен код
программы на С++.
Рисунок 24 – Код программы
Рисунок 25 – Код программы
Рисунок 26 – Код программы
На рисунках 27 – 29 представлен результат
работы программы для задачи 2.1.
Рисунок 27 – Результат работы программы
Рисунок 28 – Результат работы программы
Рисунок 29 – Результат работы программы
3 Вывод
Выполняя задание 1 мы изучили архитектуру
и основные компоненты ядра Linux, включая
механизм системных вызовов, также
изучили возможности утилиты strace для
отладки и анализа работы программ на
уровне системных вызовов, приобрели
практический навык создания и загрузки
модуля в ядро Linux.
Выполняя задание 2 мы изучили системные
средства порождения и взаимодействия
процессов и потоков в ОС GNU/LINUX.