47 lines
3.8 KiB
Markdown
47 lines
3.8 KiB
Markdown
## Что такое процесс в контексте операционной системы? Чем процесс отличается от потока?
|
||
|
||
Изолированный набор ресурсов (потоков, страниц памяти, дескрипторов).
|
||
|
||
## Что такое системный вызов в контексте операционной системы?
|
||
|
||
Обращение к ядру.
|
||
|
||
## Что такое 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 и анализа их поведения? |