Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика 2013.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
840.19 Кб
Скачать

18. Понятие процесса и потока (нити), принципы диспетчеризации процессов, блокировка процессов.

Процесс — выполнение пассивных инструкций компьютерной программы на процессоре ЭВМ. Признаки процесса:

  • Для ОС потребителем ресурсов выступает процесс.

  • Процесс является единицей работы для ОС.

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

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

  • Процесс всегда выполняется по какому-то программному коду.

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

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

В общем случае поток может находиться в одном из 3-х состояний: 1). Выполнение, а именно: процесс имеет все необходимые для работы ресурсы, в т.ч. ЦП, т.е. процесс является активным. 2). Ожидание – поток приостановил свое выполнение по каким-либо внутренним причинам. Например, поток запросил операцию в/в. 3). Состояние готовности – поток не находится в активном состоянии по причинам внешним для потока. Например, потоку не выделен ЦП.

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

Управление процессами определяет какой процесс в какой момент времени должен стать активным и на какой интервал. В задаче управления процессами (потоками) выделяется 2-е основные подзадачи:

1). Задача планирования потоков - определяет в какой момент и какой поток должен стать активным.

Планирование потоков, по существу, включает в себя решение двух задач:

- определение момента времени для смены текущего активного потока;

- выбор для выполнения потока из очереди готовых потоков.

Существует множество различных алгоритмов планирования потоков, по-своему решающих каждую из приведенных выше задач. Алгоритмы планирования могут преследовать различные цели и обеспечивать разное качество мультипрограммирования. Например, в одном случае выбирается такой алгоритм планирования, при котором гарантируется, что ни один поток/процесс не будет занимать процессор дольше определенного времени, в другом случае целью является максимально быстрое выполнение «коротких» задач, а в третьем случае — преимущественное право занять процессор получают потоки интерактивных приложений

Решение задачи планирования потоков может следовать одной из 2-х основных стратегий: не вытесняющая и вытесняющая многозадачность.

Не вытесняющая многозадачность (win 3.1, NetWare 3.x, 4.x). если поток становится активным, т.е. находится в состоянии выполнения, то он продолжает выполнение до тех пор, пока он сам не прекратит выполнение. Ос с не вытесняющей многозадачностью подвержена краху системы. Однако в таких системах можно организовать эффективное выполнение всех потоков, если каждый из них занимает ресурс ограниченное время.

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

2). Задача диспетчеризации потоков - определяет как должно осуществляться сохранение контекста текущего активного потока и переключение на контекст нового активного потока.

Диспетчеризация сводится к следующему:

- сохранение контекста текущего потока, который требуется сменить;

- загрузка контекста нового потока, выбранного в результате планирования;

- запуск нового потока на выполнение.

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

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

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

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

Под тупиком (взаимной блокировкой) понимается ожидание 2-х или более потоков освобождения 2-х или более ресурсов, которое не может произойти.

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

Меры по недопущению появления тупиков:

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

  2. Просмотр того, что будет, если данный ресурс будет предоставлен потоку. Если есть возможность тупика, то поток переводится в режим ожидания.

Можно перефразировать способы избежания взаимной блокировки (тупика):

1 Не бери ложку, если не положил вилку

2 Бери ложку и вилку сразу (WaitForMultipleObjects)