Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shporka.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
623.62 Кб
Скачать

8.Жизненный путь процесса

Процесс в UNIX создается системным вызовом Процесс, сделавший вызов fork(2) называется родительским, а вновь созданный процесс —дочерним. Новый процесс является точной копией породившего его процесса. Как это ни удивительно, но новый процесс имеет те же инструкциии данные, что и его родитель. Более того, выполнение родительского идочернего процесса начнется с одной и той же инструкции, следующей заfork(2). Единственно, чем они различаются — это идентификатором процесса PID. Каждый процесс имеет одного родителя, но можетиметь несколько дочерних процессов.Для запуска задачи, т. е. для загрузки новой программы, процесс должен выполнить системный вызов ехес(2). При этом новый процесс не порождается, а исполняемый код процесса полностью замещается кодом запускаемой программы. Тем не менее окружение новой программы во многомсохраняется, в частности сохраняются значения переменных окружения,назначения стандартных потоков ввода/вывода, вывода сообщений обошибках, а также приоритет процесса. В UNIX запуск на выполнение новой программы часто связан с порождением нового процесса, таким образом сначала процесс выполняет вызовfork(2), порождая дочерний процесс, который затем выполняетполностью замещаясь новой программой.Рассмотрим эту схему на примере.Допустим, пользователь, работая в командном режиме (в командном интерпретаторе shell) запускает команду Текущий процесс (shell) делаетвызов fork(2), порождая вторую копию shell. В свою очередь, порожденный shell вызывает ехес(2), указывая в качестве параметра имя исполняемогофайла, образ которого необходимо загрузить в память вместо кода shell.Код ls(l) замещает код порожденного shell, и утилита ls(l) начинает выполняться. По завершении работы ls(l) созданный процесс "умирает".Пользователь вновь возвращается в командный режим. Описанный процесс представлен на рис. 1.5. Мы также проиллюстрируем работу командного интерпретатора в примере, приведенном в главе 2. Описанная процедура запуска новой программы называется fork!and!exec.Однако бывают ситуации, когда достаточно одного вызова fork(2) без последующего ехес(2). В этом случае исполняемый код родительского процесса должен содержать логическое ветвление для родительского и дочернегоВсе процессы в UNIX создаются посредством вызова fork(2). Запуск навыполнение новых задач осуществляется либо по схеме fork!and!exec, либос помощью ехес(2). "Прародителем" всех процессов является процессназываемый также распределителем процессов. Если построитьграф "родственных отношений" между процессами, то получится дерево,корнем которого является Показанные на рис. 1.6 процессы schedи являются системными и формально не входят в иерархию (онибудут рассматриваться в следующих главах).

9. Пользовательская среда в unix.

Пользовательская среда UNIX представляет собой Графический многооконный нтерфейс, системы меню, техника drag-and-drop.

Базовая пользовательская среда – это алфавитно-цифровой терминал.

И программа - командный интерпретатор shell.

Все современные системы UNIX поставляются по крайней мере с тремя командными интерпретаторами: Bourne shell (/bin/sh), С shell(/bin/csh) и Korn shell(/bin/ksh).

Интерпретатор занимает важное место в операционной системе UNIX, прежде всего, благодаря следующим обстоятельствам:

1. Первая программа, с которой по существу начинается работа пользователя, — shell.

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

1.2 Если пользователь зарегистрирован в системе и ввел правильный пароль, запускает программу, указанную в последнем поле записи пользователя в файле /etc/passwd. В принципе это может быть любая программа, но в нашем случае — это командный интерпретатор shell.

1.3 Shell выполняет соответствующий командный файл инициализации, и выдает на терминал пользователя приглашение. С этого момента пользователь может вводить команды.

1.4 По окончании работы пользователь завершает работу с интерпретатором, вводя команду exit, и выходит из системы.

2. Командный интерпретатор является удобным средством программирования. Программы на языке shell часто называют скриптами или сценариями (script).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]