Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС ответы.docx
Скачиваний:
10
Добавлен:
27.09.2019
Размер:
94.3 Кб
Скачать

35. Синхронные и асинхронные функции. Методы уведомления о завершении работы асинхронной функции. Основные операции с потоками в .Net Framework: создание потоков, функции Sleep, Join, Abort.

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

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

Как правило, асинхронный метод реализуется в виде двух функций: BeginMethodXXX () и EndMethodXXX (). Первая функция запускает метод в параллельном потоке. А вызов второй функции приводит к блокированию вызывающего потока до завершения асинхронной функции, по завершению метод возвращает результаты работы. Это решение продемонстрировано на рис. 1: P1 — основной поток, вызывающий асинхронный метод, запускаемый в потоке P2. В исходном состоянии (сразу после вызова Begin) потоки находятся в состоянии SB. Далее они могут двигаться по любой траектории, не выходя за заштрихованную область, «выйти» из области можно только

через точку SE. Между вызовами Begin и End поток P1 может выполнять некоторые действия, а может сразу блокироваться, ожидая завершение P2. Описанное решение реализует уведомление о завершении асинхронной операции методом ожидания, то есть вызывающий поток блокируется до завершения запущенного. Возможна ситуация, когда потоку P1 потребуется выполнять какие-то действия до тех пор пока не будет завершен поток P2 (то есть возможна ситуация, когда нам не хотелось бы блокировать поток P1 на вертикальной линии End диаграммы, после выполнения конечного числа шагов между Begin и End). К примеру, поток P1 может позволить пользователю решать другие задачи во время работы P2 либо выводить

состояние P2 (процент выполнения задачи). В этом случае возможно использование других методов уведомления о завершении асинхронной операции: опрос либо обратный вызов. В случае опроса поток P1 периодически (например, в цикле или по таймеру) проверяет состояние потока P2 (не завершился ли он) и по завершению P2 вызывает End (переходит в точку SE) не попадая в состояние блокировки. В случае обратного вызова поток P1 при вызове Begin указывает потоку P2 какую функцию потока P1 тот должен вызывать по завершению. В этой функции поток P1 вызывает End (переходит в точку SE) не попадая в состояние блокировки.

Sleep(50)-функция работает в режим ожидания на 10 мс, при этом планировщик передает управление другим потокам.

Abort-остановка потока.

thread.Join()-перед созданием нового потока дожидаемся завершения предыдущего.

36. Выгружаемые и невыгружаемые ресурсы. Понятие взаимоблокировки. Условия взаимоблокировки.

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

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

Ресурсы при обращении к которым может произойти взаимоблокировка бывают 2-х основных типов:

1.Выгружаемые.

2.Невыгружаемые.

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

Для предоставления ресурса используется следующая схема:

1.Запрос ресурсов

2.Использование ресурсов.

3.Возврат ресурсов.

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

Введение в теорию блокировки.

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

Условия взаимоблокировки.

1.Условия взаимного исключения(каждый ресурс либозанят ровно одним процессом либо свободен).

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

3.Условие отсутствия принудительной выгрузки(у процесса нельзя принудительным образом забрать ранее полученный ресурс они могут быть получены только добравольно).

4.Условия циклического ожидания(должна существовать круговая последовательность из двух и более процессов каждый из которых ждёт доступа к удерживаемому ресурсу).

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