operating-systems/lab1/questions.md

47 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Что такое процесс в контексте операционной системы? Чем процесс отличается от потока?
Изолированный набор ресурсов (потоков, страниц памяти, дескрипторов).
## Что такое системный вызов в контексте операционной системы?
Обращение к ядру.
## Что такое POSIX?
POSIX (англ. Portable Operating System Interface — переносимый интерфейс операционных систем) — набор стандартов,
описывающих интерфейсы между операционной системой и прикладной программой (системный API),
библиотеку языка C и набор приложений и их интерфейсов.
Стандарт создан для обеспечения совместимости различных UNIX-подобных операционных систем и переносимости
прикладных программ на уровне исходного кода, но может быть использован и для не-Unix систем.
## Какой системный вызов используется для создания нового процесса в Linux?
fork (57)
## Что такое идентификатор процесса (PID), и как его можно получить в программе на языке C?
Уникальное число, используемое для идентификации процесса.
```c
pid_t getpid(void);
```
## Какой системный вызов позволяет родительскому процессу ожидать завершения своего потомка, и как он работает?
`waitpid` - переводит вызывающий поток в спящее состояние, до тех пор пока вызывающий процесс не получит `SIGCHLD` с соответствующим `PID`.
## Что произойдет, если родительский процесс завершится раньше своих потомков? Как это отразится на процессе потомков в операционной системе Linux?
Родителем потомков станет процесс с `PID=1`.
## Как можно программно контролировать завершение процесса в бесконечном цикле с вероятностью завершения 1/3?
## Что делает системный вызов waitpid() и как его использовать для управления процессами в отношениях «родитель-потомок»?
## Что происходит, если вызвать waitpid() с флагом WNOHANG, и чем это отличается от вызова без этого флага?
С флагом `WHOHANG` функция сразу вернёт значение, без флага заблокирует вызывающий поток до завершения запрошенного процесса.
## Как можно использовать системный вызов sleep() для организации пауз между выполнением операций в процессе?
## В чем отличие между системными вызовами fork() и exec(), и как они используются при работе с процессами?
## Как можно использовать команды ps или top для мониторинга состояния процессов в Linux и анализа их поведения?