operating-systems/lab1/questions.md

3.8 KiB
Raw Blame History

Что такое процесс в контексте операционной системы? Чем процесс отличается от потока?

Изолированный набор ресурсов (потоков, страниц памяти, дескрипторов).

Что такое системный вызов в контексте операционной системы?

Обращение к ядру.

Что такое POSIX?

POSIX (англ. Portable Operating System Interface — переносимый интерфейс операционных систем) — набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой (системный API), библиотеку языка C и набор приложений и их интерфейсов.

Стандарт создан для обеспечения совместимости различных UNIX-подобных операционных систем и переносимости прикладных программ на уровне исходного кода, но может быть использован и для не-Unix систем.

Какой системный вызов используется для создания нового процесса в Linux?

fork (57)

Что такое идентификатор процесса (PID), и как его можно получить в программе на языке C?

Уникальное число, используемое для идентификации процесса.

pid_t getpid(void);

Какой системный вызов позволяет родительскому процессу ожидать завершения своего потомка, и как он работает?

waitpid - переводит вызывающий поток в спящее состояние, до тех пор пока вызывающий процесс не получит SIGCHLD с соответствующим PID.

Что произойдет, если родительский процесс завершится раньше своих потомков? Как это отразится на процессе потомков в операционной системе Linux?

Родителем потомков станет процесс с PID=1.

Как можно программно контролировать завершение процесса в бесконечном цикле с вероятностью завершения 1/3?

Что делает системный вызов waitpid() и как его использовать для управления процессами в отношениях «родитель-потомок»?

Что происходит, если вызвать waitpid() с флагом WNOHANG, и чем это отличается от вызова без этого флага?

С флагом WHOHANG функция сразу вернёт значение, без флага заблокирует вызывающий поток до завершения запрошенного процесса.

Как можно использовать системный вызов sleep() для организации пауз между выполнением операций в процессе?

В чем отличие между системными вызовами fork() и exec(), и как они используются при работе с процессами?

Как можно использовать команды ps или top для мониторинга состояния процессов в Linux и анализа их поведения?