Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
14-19).docx
Скачиваний:
2
Добавлен:
07.09.2019
Размер:
39.24 Кб
Скачать

14.Назовите последовательность операций, необходимую для:

  • создания процесса;

  • завершения процесса;

  • переключения процессов.

Создание процесса

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

Существуют четыре основных события, приводящие к созданию процессов:

1.Инициализация системы

2. Выполнение работающим процессом системного вызова, предназначенного для создания процесса.

3. Запрос пользователя на создание нового процесса

4. Инициация пакетного задания

При запуске операционной системы создаются, как правило, несколько про­цессов. Некоторые из них представляют собой высокоприоритетные процессы, то есть процессы, взаимодействующие с пользователями и выполняющие для них определенную работу .Остальные являются фоновыми процессами, не снизанными с конкретными пользователями, но выполняющими ряд специфических функций

Вдобавок к процессам, созданным во время загрузки, новые процессы могут быть также созданы и после нее. Часто бывает так. что работающий процесс осу­ществляет системный вызов для создания одного или более новых вспомогатель­ных процессов. Создание новых процессов особенно полезно, когда выполняемая работа может быть легко выражена в понятиях нескольких связанных друг с дру­гом но в остальном независимых друг от друга взаимодействующих процессов. Например, если для последующей обработки из сети выбираете большой объем данных, наверное, будет удобно создать один процесс для выборки данных и по­мещения их в общий буфер, чтобы в то же самое время второй процесс забирал элементы данных и проводил их обработку также можно ускорить выполнение работы, если на многопроцессорной системе разрешить каждому процессу работ, на разных центральных процессорах.

В интерактивных системах пользователи могут запустить программу вводом команды или щелчком (двойным щелчком) на значке. Любое из этих действий дает начало новому процессу и запускает в нем выбранную программу в основанных на применении команд UNIX-системах. Используя мышь, пользователь может выбрать окно и взаимодействовать с процессом: например, если потребуется, вводить данные.

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

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

В UNIX существует только один системный вызов для создании нового про­цесса - fork. Этот вызов создаст точную копию вызывающего процесса. После выполнения системного вызова fork два процесса, родительский и дочерний, имеют единый образ памяти, единые строки описания конфигурации и одни и те же от­крытые файлы. и больше ничего. Обычно после этого дочерний процесс изменяет образ памяти и запускает новую программу, выполняя системный вызов execve или ему подобный. Например, когда пользователь набирает в оболочке команду sort, оболочка создаст ответвляющийся дочерний процесс, в котором и выполняется команда sort. Смысл этого двухступенчатого процесса заключается в том чтобы позволить дочернему процессу управлять его файловыми дескрипторами после разветвления, но перед выполнением execve с целью выполнения перенаправления стандартного ввода, стандартного вывода и стандартного вывода сообщений об ошибках.

Завершение процессов

После создания процесс начинает работать и выполняет свою задачу. Но ничто не длится вечно, даже процессы. Рано или поздно новые процессы будут завершены, обычно в силу следующих обстоятельств:

  • обычного выхода (добровольно)

  • выхода при возникновении ошибки (добровольно)

  • возникновения фатальной ошибки (принудительно)

  • уничтожения другим процессом (принудительно)

Большинство процессов завершаются по окончании своей работы. Когда ком­пилятор откомпилирует заданную ему программу, он осуществляет системный вызов, сообщающий операционной системе о завершении своей работы. Этим вы­зовом в UNIX является exit. Программы, работающие с экраном, также поддерживают добровольное завершение. Текстовые процессоры, интернет-браузеры и аналогичные программы всегда содержат значок или пуню- меню, на котором пользователь может щелкнуть, чтобы приказать процессу уда­лить все временные файлы, которые им были открыты, и завершить свою работу.

Вторая причина завершения — обнаружение процессом фатальной ошибки.

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

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

Четвертая причина, из-за которой процесс может быть завершен это выполнение процессом системного вызова, приказывающего операционной системе завершить некоторые другие процессы. В UNIX этот вызов называется kill. В обоих случаях у процесса, вызываю­щего завершение, должны быть на это соответствующие полномочия. В некоторых системах при добровольном или принудительном завершении процесса тут же за­вершаются и все созданные им процессы. Но ни UNIX, ни Windows так не делают.

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