Лабораторная работа 1. Getpid() и getppid() получает и печатает значения pid
Скачать 104.37 Kb.
|
Лабораторная работа 1. Процессы в операционной системе UNIX. 1. Самостоятельно написать программу, которая с помощью системных вызовов getpid () и getppid () получает и печатает значения PID и PPID процесса, в рамках которого она выполняется. Обеспечить тестирование работы программы. 2. Подготовить программу 01_1.c , в которой родитель и ребенок выполняют одинаковые действия, откомпилировать ее и запустить на исполнение. 3. Изменить программу 01_1.c так, чтобы родитель и ребенок совершали разные действия, например, соответственно печатали сообщения: “Parent process” и “Child process”, а также выводили значения PID и PPID соответствующих процессов. 4. Самостоятельно написать программу, распечатывающую значения аргументов командной строки и параметров окружающей среды для текущего процесса. 5. Самостоятельно подготовить, откомпилировать и выполнить программу 01_2.c 6. Самостоятельно модифицировать программу 01_1.c так, чтобы дочерний процесс запускал на исполнение новую программу, которая должна быть предварительно подготовлена. Предусмотреть вывод идентификаторов родительского процесса, а также идентификаторов дочернего процесса до и после замены пользовательского контекста. 7. Подготовить, откомпилировать и выполнить программу 01_3.c . Обеспечить проверку правильности работы программы. 8. Модифицировать программу 01_3.c так, чтобы порожденный процесс запускал на исполнение новую программу, а родительский процесс дожидался окончания ее выполнения. Обеспечить проверку правильности работы всех программ и процессов. Контрольные вопросы. 1. Диаграмма состояний процессов в UNIX. Переходы между состояниями. 2. Состав таблицы процессов в UNIX. 3. Состав пространства процессов в UNIX. 4. Контекст процесса, компоненты контекста, состав компонент контекста. 5. Алгоритмы выполнения системных вызовов fork, exec и exit. Процессы-зомби. 6. Многоразовые операции и особенности их выполнения. 7. Одноразовые операции. |