Стандартные ввод и вывод

Управление процессами в ОС Linux

Продолжительность работы: 4 часа.

Цель работы: знакомство с многозадачностью ОС Linux; научиться работать со многими процессами, планированию запуска команд в определенное время; мониторинг многозадачной среды; управление многозадачностью.

Краткие теоретические сведения

Введение

О процессах LINUX

Процессом в Linux называется выполняющаяся программа. Поскольку Linux – многозадачная система, то в одно и то же время могут выполняться несколько процессов. Чтобы их различать, Linux присваивает каждому процессу уникальный номер, называемый идентификатором процесса (process ID).

Идентификатор процесса – это число, идентифицирующее каждый выполняющийся процесс. Увидеть идентификаторы процессов можно, например, с помощью команды ps.

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

Клонирование процессов, процессы init и exec

Клонирование или ветвление (fork) процесса – это операция создания дубликата существующего процесса. Все новые процессы в Linux создаются с помощью механизма клонирования. При этом создается почти точная копия существующего процесса, включая окружение и все открытые процессом файлы. Единственное, что отличает дубликаты, – это флаг, обозначающий ка­кой из процессов родительский, а какой – порождённый (дочерний).

Так как все процессы создаются подобным образом, то у них есть родительский процесс. Каждый выполняющийся в ОС Linux процесс может проследить свое происхождение в обратном порядке вплоть до init – прародителя всех процессов. Сам init, идентификатор процесса которого равен 1, является единственным процессом, запущенным непосредственно ядром Linux. Каждый процесс, создаваемый пользователем во время работы, имеет своим предком процесс оболочки, а родителем процесса оболочки является init.

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

Стандартные ввод и вывод

Каждый вновь созданный процесс получает уже открытыми три «файла». Так как Linux не делает различий между файлами и устройствами, открытый «файл» может быть настоящим файлом на диске или устройством, например, терминалом пользователя. Эти три открытых файла представляют собой стандартное устройство ввода (stdin), стандартное устройство вывода (stdout) и стандартное устройство вывода сообщений об ошибках (stderr). Все команды Linux, как и прикладные программы, получают информацию со стандартного устройства ввода и выводят информацию на стандартное устройство вывода. Все диагностические сообщения автоматически направляются на стандартное устройство вывода сообщений об ошибках.

Это всегда нужно помнить, потому что, например, чтобы отсортировать файл sales.dat и вывести результат на экран монитора не сохраняя результата сортировки в самом файле необходимо просто ввести команду:

#sort sales.dat

Её вводом будет не клавиатура (stdin), а файл sales.dat т.к. он указан после команды. Выводом же будет файл stdout (в нашем случае экран монитора), т.к. ничего дополнительно не оговаривается.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: