Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SPIOS_mobchik.doc
Скачиваний:
2
Добавлен:
24.04.2019
Размер:
3.49 Mб
Скачать

1.Какие последовательные вычислительные процессы называются параллель­ными и почему? Что такое процесс? Что такое поток? Какие параллельные процессы называются независимыми, а какие – взаимодействующими?

Процесс-это запущенное приложение в соответствии которому соответствует хотя бы один поток выполнения.

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

Задача – это отдельный поток выполнения. Задачи бывают независимые и взаимодействующие. Независимые задачи – это задачи, которые не имеют общего доступа к устройствам и памяти. Взаимодействующие задачи – это задачи, которые (не имеют общего доступа) могут обращаться к общему устройству памяти или устройству.

2. Поясните принцип многозадачности современных операционных систем.

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

3.Каким образом осуществляется синхронизация потоков? Что такое критический ресурс? Что такое критическая секция?

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

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

4. Изложите алгоритм Деккера, позволяющий разрешить проблему взаимного исключения путем использования одной только блокировки памяти.

Пологает, что 1 и 2 задачи имеют собственные флаги, указывающие на то, что данная задача находиться в критической секции. Имеется флаг, указывающий на занятость/свободность ресурса. Задача для входа в критическую секцию выставляет флаг входа в критич. Секц.,затем проверит флаг конкурента и критического ресурса. Если существует возможность входа, то устанавливает флаг занятости критического ресурса, и она входит в критич секцию. После окончания сбрасывает флаг критического ресурса и собственный флаг входа в крит. секцию.

5. Расскажите о семафорах Дейкстры. Чем обеспечивается взаимное исключе­ние при выполнении примитивов p(открытие) и V (закрытие)?

Семафор — объект, позволяющий войти в заданный участок кода не более чем n потокам

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

6 Что такое семафор? Изложите, алгоритм взаимного исключения с использованием семафоров?

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

Семафоры работают по схеме: 1) исследуется состояние технического ресурса, который определяет значение семафора. 2) осуществляется доступ к ресурсу либо отказ за определённое время. При этом режим ожидания является пассивным. Операция открытия (захвата) и закрытия (освобождения) являются неделимыми. O(S) – открытие семафора. С(S) - закрытие. Суть операции O(S) состоит в проверке текущего состояния S и если оно 0,то процесс допускается к критич. ресурсу. В противном случае задача снимается с выполнения путём перехода в режим пассивного ожидания.C(S) связана с увлечением семафора на 11 и переводом одной или нескольких задач. Управление опрециями открытия и закрытия возглавляется на ОС и тесно связано с диспетчером задач, сам семафор также принадлежит к Ос. Для доступа к нему задача должна использовать системные вызовы. Обобщенный алгоритм работы взаимодействия задач с семафором: 1) открыть семафор 2) Ожидать разрешение на доступ к ресурсам 3)войти в критическую секцию 4) закрыть семафор. Особенность семафоров: они могут обеспечивать очередь к критическому ресурсу и параллельный одновременный доступ нескольких задач к критическому ресурсу.

7. Что такое Мьютекс? Изложите, алгоритм взаимного исключения с использованием Мьютексов?

Мьютексы (mutex) — это один из вариантов семафорных механизмов для организации взаимного исключения. Они реализованы во многих ОС, их основное назначение — организация взаимного исключения для потоков из одного и того же или из разных процессов.

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

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

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

Единственная задача мьютекса — защита объекта от доступа к нему других потоков, отличных от того, который завладел мьютексом. Если другому потоку будет нужен доступ к переменной, защищённой мьютексом, то этот поток просто засыпает до тех пор, пока мьютекс не будет освобождён.

Цель использования мьютексов — защита данных от повреждения; однако им порождаются другие проблемы, такие как взаимная блокировка (клинч) и «соревнование за ресурс».

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