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

12. Способы синхронизации задач (критическая секция, взаимное исключение, «блокировка», «тупик», «взаимодействие»).

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

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

При синхронизации задач необходимо бороться с 3-мя проблемами:

1. "блокировка" ("lockout"): процесс (задача) ожидает ресурс, который никогда не освободится,

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

3. "застой" ("starvation") процесс (задача) монополизировал процессор.

13. Стандарты на ОСРВ.

Стандарты ОСРВ автоматически создают определения рассматриваемых объектов и понятий как аксиомы.

Наиболее ранним и распространенным стандартом ОСРВ является стандарт POSIX. Первоначальный вариант стандарта POSIX появился в 1990 г. и был предназначен для UNIX-систем. Спецификации POSIX определяют стандартный механизм взаимодействия прикладной программы и операционной системы и в настоящее время включают набор более чем из 30 стандартов. Для ОСРВ наиболее важны семь из них (1003.1a, 1003.1b, 1003.1c, 1003.1d, 1003.1j, 1003.21, 1003.2h), но широкую поддержку в коммерческих ОС получили только три первых.

Несмотря на явно устаревшие положения стандарта POSIX и большую востребованность обновлений стандартизации для ОСРВ, заметного продвижения в этом направлении не наблюдается.

Стандарт SCEPTRE разрабатывался в 1980-90 годы. За время его создания появились новые концепции в ОСРВ, не все из которых успели найти отражение в стандарте. В стандарте даны определения и описания набора методов и подходов, используемых в ОСРВ; были разработаны спецификации для промышленных приложений; были поставлены цели, которые должна преследовать ОСРВ.

1. адекватность поставленной задаче,

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

3. минимальная стоимость,

4. максимальная производительность,

5. переносимость (возможность реализовать систему на другом типе процессора),

6. адаптивность (способность приспосабливаться к новому управляемому ею оборудованию и/или задачам),

7. модульность.

14. Семафоры. Виды семафоров. Использование семафоров для решения задач синхронизации.

Семафоры - это высокоуровневый механизм синхронизации задач.

Различают:

Двоичные (булевские) семафоры— это механизм взаимного исключения для защиты критичного разделяемого ресурса; определены следующие элементарные операции:

* взять (состояние ожидания освобождения семафора),

* вернуть (если семафор ожидается другой задачей, то она может быть активизирована и может вытеснить текущую задачу),

* попробовать взять (состояние опроса).

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

Счетные семафоры — это механизм взаимного исключения для защиты ресурса, который может быть одновременно использован не более, чем ограниченным фиксированным числом задач (например, 4-х канальный порт ввода/вывода может быть использован не более чем четырьмя задачами, требующими по одному каналу каждая).

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

* взять k единиц из семафора, т.е. уменьшить счетчик на k,

* вернуть k единиц в семафор, т.е. увеличить счетчик на k,

* попробовать взять k единиц из семафор.

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

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