Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
osnovy_vt / процессы1.ppt
Скачиваний:
39
Добавлен:
21.03.2016
Размер:
300.03 Кб
Скачать

Процессы

Процесс - выполняющаяся программа.

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

У каждого процесса имеется полный набор регистров имеющихся в процессоре. У каждого процесса имеется свой собственный процессор - тот процессор на котором в данный момент времени выполняется данный процесс.

Каждому процессу ОС системой выделяются внешние ресурсы: дисковое пространство, устройство ввода вывода, канал передачи информации и др. Каждый процесс имеет возможность запускать другие процессы и контролировать ход их выполнения. Каждому процессу в ОС отводятся определенные права. Эти права максимальны для самой ОС, имеют промежуточные значения для подсистем ОС (драйвера) и минимальные права соответствуют выполняющимся пользовательским программам. ОС для каждого из процесса хранит всю информацию об этих процессах в специальных таблицах. В этих таблицах обязательно описываются права процесса, полное состояние регистров процессора для данного процесса, объем ОП отводимый процессу и отображение этой памяти на реальную физическую память, а так же список всех ресурсов, отводимых данному процессу. При переключении с одного процесса на другой ОС пользуется этими учетными записями.

Дерево процессов:

Классическая архитектура

Запуск процесса – инициализация

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

Родитель имеет право контролировать работу потомка, приостанавливать его выполнение и завершать выполнение потомка. Потомок не имеет никаких прав по отношению к родителям, «братьям», «дядям». В Windows системах нет такой жесткой иерархии. Все процессы являются равноправными. Не один из процессов (кроме ядра ОС) не имеет право контролировать работу другого процесса.

Более того, в силу реализации Windows, один и тот же процесс может оказываться на различных уровнях прав.

Процессы при своем исполнении должны уметь синхронизировать свою работу. Для этих целей процессы организуют различные симофоры. Кроме того организуется Pipe- специальный файл, который при своей инициализации адресуется предназначается определенному процессу. Далее pipe процессы смогут писать и читать даже как в обычный файл, то возможен обмен данными между процессами, кроме того могут выделятся участки shared (разделение памяти) , доступные для одновременного использования различными процессами.

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

Порождение нового процесса это длительная процедура, поскольку ОС должна выполнить множество действий :

1)выделить процессу необходимые ресурсы (собственное адресное пространство, файлы, устройство и т.д.);

2)произвести инициализацию этих ресурсов (загрузить выполняемую программу в ОП, инициализировать первое начальное значение регистров и стеков, открыть файлы и т.д.);

3)занести всю необходимую информацию в специальную таблицу, описывающую процессу в системе;

4)передать управление новому процессу.

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

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

Потоки

Потоки (нити, треды- thread) это отдельные параллельно выполняющиеся программы в рамках одного процесса. Для потоков в отличии от процессов характерно следующие важное свойство: они делят между собой почти все ресурсы потока- одновременно используют эти ресурсы. Обычно различные потоки совместно используют следующие ресурсы потока: 1) адресное пространство; 2) глобальные переменные; 3) открытые файлы; 4) дочерние процессы; 5) необработанные аварийные сигналы; 6) сигналы тревоги и их обработчики; 7) информацию об используемых ресурсах.

При этом каждый из потоков имеет собственный: счетчик команд регистр стеки

состояние процессора локальные переменные

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

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

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

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

Планирование процессов Планирование необходимо для того, чтобы организовать наиболее производительную

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

Для всех ОС соблюдается следующие принципы планирования: Предоставление каждому процессу справедливого (одинакового) количество процессорного времени.

Производится принудительное выполнение политики приоритетов выполняющихся процессов.

Планирование производится таким образом чтобы поддерживался максимальный баланс занятости системы. Например: в очереди на выполнение имеются 4 процесса, 2 из которых требуют значительного количество работы устройств ввода вывода и малого количество процессорного времени, а 2 других процесса требуют большого количество процессорного времени и малого времени работы устройств ввода вывода. Все процессы будут выполнятся значительно скорее если они будут запускаться попарно: процесс требующий большого количество работы устройств ввода вывода и малого количество времени процессора, а так же процесс требующий большого количество процессорного времени и малого времени работы устройств ввода вывода.

Для ОС пакетной обработки данных кроме того используются следующие критерии планирования:

Максимальная пропускная способность ЭВМ в целом. Максимальное использование процессора.

Минимальное время выполнения одного задания (процесса).

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

Кроме того в этом случи ОС должна уметь настраиваться под пожелания отдельных пользователей.

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

Взаимоблокировка процессов

Блокировкой процессов называют такое состояние системы, при котором 2 или более процессов не могут продолжать свое выполнение из-за отсутствия необходимых для этого ресурсов.

Например: одному процессу требуется СD привод и магнитная лента, при этом он успел запросить у ОС права на использование СD привода и не успел получить доступ к магнитной ленте; второму процессу для продолжения выполнения требуется те же ресурсы, при этом он успел получить у ОС права на использование магнитной ленты и не успел получить права на использование СD привода. В этом случи оба процесса будут блокированы. Они будут бесконечно долго ожидать необходимые ресурсы и никогда не получат их для использования. Взаимоблокировка возникает в многозадачных многопользовательских ОС. Чем большее количество различных задач выполняется на машине, и чем меньше ее ресурсы, тем больше вероятность возникновение взаимоблокировок. При этом ситуация напоминает подающий с горы снежный ком. Количество блокированных процессов быстро возрастает до тех пор, пока в системе не останется не одного работающего процесса. ОС практически полностью прекращает полезное функционирование а ЭВМ простаивает.

Блокировки процессов возникают либо сами собой, либо инициализируются внешними атаками. Например: атаки вирусов (хакеров) на определенный сайт приводят к возникновению блокировки на обслуживающим этот сайт ЭВМ. Это вызвано перегрузкой работы соответствующей ЭВМ, когда в условии ограниченности ресурсов (хотя эти ресурсы у майнфреймов могут быть очень большими: несколько сотен дисков, десятки терабайт ОП и т.д.) ЭВМ должна одновременно обработать очень большое количество запросов.

В итоге ЭВМ нужно будет заново перезагружать. Для майнфрейма каждая перезагрузка аналогична потере нескольких миллионов долларов, такова цена за невыполненные вовремя различные запросы.

Имеются различные способы выхода из блокировок:

Снятие оператором выполняющихся процессов до тех пор, пока не исчезнет взаимоблокировка. Этот путь эффективен лишь в том случае, когда количество выполняющихся процессов не очень велико (например не более 100). При большом количестве выполняющихся процессов этот путь чаще всего не помогает преодолеть блокировку. Перезагрузка системы этот путь преодоления блокировок наиболее радикальный, но и наиболее дорогой. Рестарт системы с так называемой контрольной точки. Контрольная точка - это полное состояние ЭВМ запомненное на внешнем носители. Для больших ЭВМ организация контрольной точки требует больших ресурсов и времени, поскольку на внешний носитель нужно будет запомнить полное состояние всех регистров ЭВМ, всей ее ОП (несколько десятков терабайт на майнфреймах), а так же полное состояние регистров и ОП каждого из устройств ЭВМ (несколько десятков тысяч устройств на майнфреймах). Несмотря на то что организация контрольной точки требует большого количества времени и ресурсов, ее регулярно проводят с различной периодичностью (раз в час) для того чтобы уменьшить неизбежные финансовые потери от рестарта ЭВМ.

Имеются два противоположных способа борьбы с взаимоблокировками: Полное игнорирование угроз возникновения взаимоблокировок.

Построение такой ОС, которая просчитывает на несколько шагов вперед (подобно шахматисту) ситуацию которая может возникнуть в ЭВМ после запуска определенного процесса. Это можно сделать на основе теории графов. Такое построение ОС ведет к существенному усложнению ее структуры, однако не решает проблемы на 100%, поскольку любая сложная программа, в том числе и ОС, имеет большое количество не выявленных ошибок. В типичных ОС количество ошибок исчисляется несколькими

десятков или сотнями тысяч.