3. Интерактивные и неинтерактивные процессы, многозадачность. Процессы-демоны (основные сведения).

Процесс - это экземпляр выполняющейся программы.

Программа - совокупность файлов, будь то исходники, объектные файлы либо выполняемый файл.

Для запуска программы на выполнение ОС должна создать окружение или среду выполнения задачи, куда относится ресурсы памяти, возможность доступа к устройствам ввода/вывода и различным системным ресурсам. Процесс состоит из инструкций, выполняемых процессором, данных и информации о выполняемой задаче, такой, как размещенная память, открытые файлы и статус процесса. Программа может породить более одного процесса. Пользователи могут запускать несколько экземпляров одной программы. Например, количество BASH - эквивалентно числу пользователей. Таким образом UNIX - многозадачная ОС.

Выполнение процесса заключается в точном следовании набору инструкций, который никогда не передает управление набору инструкций другого процесса. Процесс взаимодействует со своими данными и стеком, но ему не доступны чужие данные и стек. Процессы изолированы друг от друга. В то же время, процессы имеют возможность обмениваться друг с другом данными с помощью системы межпроцессного взаимодействия (IPC).

Виды IPC:

  1. сигналы
  2. каналы
  3. разделяемая память
  4. семафоры
  5. сообщения
  6. файлы.

Типы процессов

Системные процессы

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

Примеры:

Выполняемые инструкции и данные системных процессов находятся в ядре, таким образом, они могут обращаться к функциям и данным, не доступным извне (ядра).

Процесс init можно также отнести к системным, хотя он запускается из файла. Он прародитель всех процессов системы. init запускается первым после загрузки ядра и запускает все остальные инициализационные задачи на выполнение.

Демоны

Демоны - неинтерактивные процессы, запускаемые обычным образом, и выполняются в фоновом режиме. Они не связаны не с одним пользовательским сеансом и не могут непосредственно управляться пользователем. Обеспечивают работу различных подсистем:

Прикладные процессы

Прикладные процессы - все остальные процессы. Как правило, порождаются в рамках пользовательского сеанса. Пример: ls, BASH. Пользовательские процессы могут выполняться как в интерактивном, так и в фоновом режиме, но время из жизни (выполнения) ограничено сеансом работы пользователя. При выходе из системы все пользовательские процессы будут уничтожены.