3. Интерактивные и неинтерактивные процессы, многозадачность. Процессы-демоны (основные сведения).
Процесс - это экземпляр выполняющейся программы.
Программа - совокупность файлов, будь то исходники, объектные файлы либо выполняемый файл.
Для запуска программы на выполнение ОС должна создать окружение или среду выполнения задачи, куда относится ресурсы памяти, возможность доступа к устройствам ввода/вывода и различным системным ресурсам. Процесс состоит из инструкций, выполняемых процессором, данных и информации о выполняемой задаче, такой, как размещенная память, открытые файлы и статус процесса. Программа может породить более одного процесса. Пользователи могут запускать несколько экземпляров одной программы. Например, количество BASH - эквивалентно числу пользователей. Таким образом UNIX - многозадачная ОС.
Выполнение процесса заключается в точном следовании набору инструкций, который никогда не передает управление набору инструкций другого процесса. Процесс взаимодействует со своими данными и стеком, но ему не доступны чужие данные и стек. Процессы изолированы друг от друга. В то же время, процессы имеют возможность обмениваться друг с другом данными с помощью системы межпроцессного взаимодействия (IPC).
Виды IPC:
- сигналы
- каналы
- разделяемая память
- семафоры
- сообщения
- файлы.
Типы процессов
Системные процессы
Системные процессы являются частью ядра и всегда расположены в оперативной памяти. Системные процессы не имеют соответствующих им программ в виде исполняемых файлов и запускаются особым образом при инициализации ядра системы.
Примеры:
- диспетчер свопинга
- диспетчер памяти
Выполняемые инструкции и данные системных процессов находятся в ядре, таким образом, они могут обращаться к функциям и данным, не доступным извне (ядра).
Процесс init можно также отнести к системным, хотя он запускается из файла. Он прародитель всех процессов системы. init запускается первым после загрузки ядра и запускает все остальные инициализационные задачи на выполнение.
Демоны
Демоны - неинтерактивные процессы, запускаемые обычным образом, и выполняются в фоновом режиме. Они не связаны не с одним пользовательским сеансом и не могут непосредственно управляться пользователем. Обеспечивают работу различных подсистем:
- печати
- сетевого доступа
- терминального доступа
- почта
- web-сервера
- СУБД.
Прикладные процессы
Прикладные процессы - все остальные процессы. Как правило, порождаются в рамках пользовательского сеанса. Пример: ls, BASH. Пользовательские процессы могут выполняться как в интерактивном, так и в фоновом режиме, но время из жизни (выполнения) ограничено сеансом работы пользователя. При выходе из системы все пользовательские процессы будут уничтожены.