
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Кафедра програмного забезпечення автоматизованих систем
Звіт
«Робота із стандартними програмами системи Unix»
з лабораторної роботи №2
з дисципліни
«Операційні системи»
Перевірив: Виконав:
ст. викладач кафедри ПЗАС студент групи ПЗ-104
Гузнін С. С. IІІ-курсу ФІТІС
Пістряк Р. Ю.
Черкаси 2013
Тема роботи: Робота із стандартними програмами системи Unix.
Мета роботи: Знайомство з процесної організацією Unix-про подібних систем. Вивчення інформаційних команд відстеження інформації про процеси. Вивчення різних типів процесів. Вивчення інформації про первинний процес init і рівнях завантаження системи. Створення програми на мові Сі з використанням системних викликів Unix реалізує породження і заміщення процесів, запуск команд Unix з користувацької програми. Познайомитися з компіляцією програм з використанням компілятора gcc.
Порядок виконання роботи:
1. Рассмотреть утилиты ps и top. Для утилиты ps рассмотреть основные ключи, используя man ps, ps –help. Выполнить команду ps со всеми основными ключами. Вывести иерархию процессов с подробным описанием. Вывести все системные процессы. Рассмотреть в дереве процессов различные типы процессов. Посмотреть место процесса init в иерархии процессов, посмотреть уровень загрузки системы по умолчанию. В каталоге /etc найти файл inittab и рассмотреть его формат. Объяснить, что получится в результате выполнения утилиты /sbin/init с параметрами 1, 3, 5, 6, 0;
2. Рассмотреть компиляцию программ с использованием компиляторов gcc и g++;
3. Изучить функции управления процессами (использовать man). Написать многопроцессную программу на Cи или C++, реализующую запуск команд Unix из процессов. Реализовать синхронизацию процессов-родителей с процессами-потомками(использовать функцию wait).
Завдання
Вариант 10. Реализовать командный файл который при старте выводит информацию о системе, информацию о пользователе, запустившем данный командный файл, далее в цикле выводит список активных пользователей в системе – запрашивает имя пользователя и выводят список всех процессов bash запущенных данным пользователем.
Теоретичні відомості
1 Получение информации о процессах в системе
Для получения информации о процессах в системе наиболее часто используются утилиты ps и top. В Linux вся информация о динамике выполнения системы отражается в каталоге /proc, утилиты ps и top собирают данные о запущенных процессах на основании информации находящейся в этом каталоге.
В командной строке наберите:
#ps –AfH | more
и вы получите список всех процессов выполняющихся в системе (Пример 2.1):
Формат команды следующий: ps [PID] [options]
Полное описание команды вы можете узнать - man ps.
Для просмотра иерархии(дерева) процессов можно воспользоваться командой tree.
Опция A – обеспечит вывод всех процессов, f – полную информацию о процессе,ключ H покажет иерархию процессов. “| more “или “| less” обеспечит ‘форматированный’ вывод на экран.
Пример 2.1 Фрагмент результата выполнения команды в ОС Novell Suse Linux 10.0.
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 18:23 ? 00:00:01 init [5]
root 2 1 0 18:23 ? 00:00:00 [ksoftirqd/0]
root 3 1 0 18:23 ? 00:00:00 [events/0]
root 4 1 0 18:23 ? 00:00:00 [khelper]
root 5 1 0 18:23 ? 00:00:00 [kthread]
root 7 5 0 18:23 ? 00:00:00 \_ [kblockd/0]
где:
UID – идентификатор пользователя от имени которого запущен процесс,
PID – уникальный идентификатор процесса,
PPID – идентификатор процесса родителя,
TIME – суммарное время выполнения процесса,
TTY – терминал на котором выполняется данный процесс,
CMD – команда.
Как видно из этого фрагмента (Пример 2.1) во главе процессов находится процесс init, который является первичным процессом в системе. Параметр процесса init (смотрите фрагмент - init [5]) определяет уровень загрузки системы.