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

Вопрос 2.

Синхронизация процессов и потоков. Проблемы взаимодействия и синхронизации

Степень осведомленности

Взаимосвязь

Влияние одного процесса на другой

Потенциальные проблемы

Процессы не осведомлены друг о друге

Конкуренция

Результат работы одного процесса не зависит от действий других.

Возможно влияние одного процесса на время работы другого.

Взаимоисключения

Взаимоблокировки

Голодание

Процессы косвенно осведомлены о наличии друг друга

Сотрудничество с использованием разделения

Результат работы одного процесса может зависеть от информации, полученной от других.

Возможно влияние одного процесса на время работы другого.

Взаимоисключения

Взаимоблокировки

Голодание

Синхронизация

Процессы непосредственно осведомлены о наличии друг друга

Сотрудничество с использованием связи

Результат работы одного процесса может зависеть от информации, полученной от других.

Возможно влияние одного процесса на время работы другого.

Взаимоблокировки (возобновляемые ресурсы)

Голодание

Методы взаимоисключений

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

  2. Блокирующие переменные (программный подход)

  3. Использование системных функций входа в критическую секцию

  4. Семафоры Дийкстры

Блокирующие переменные

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

Системные функции для работы с критическими секциями

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

Задача

У гибкого диска 40 цилиндров. Операция поиска занимает 6 мс на цилиндр. Если не пытаться разместить блоки файла близко друг к другу, два логически последовательных блока окажутся в среднем на расстоянии 13 цилиндров друг от друга. Однако если операционная система пытается объединять логически соседние блоки в кластеры, то среднее межблоковое расстояние может быть уменьшено до двух цилиндров. Сколько понадобится времени в обоих случаях для считывания 100-блочного файла, если задержка вращения составляет 100 мс, а время переноса одного блока равно 25 мс?

Время выполнения запроса = время поиска + задержка вращения + время передачи.

Сперва мы ищем первый блок файла: в среднем для этого придется поискать на 20 цилиндрах, т.е затратить 120мс. Для полного считывания потребуется 120мс + 100мс + 25мс = 245мс. Теперь рассмотрим считывание остальных 99 блоков файла.

В случае, когда два блока находятся на расстоянии 13 цилиндров, время поиска занимает 13*6мс = 78мс. Время считывания блока = время поиска + задержка вращения + время передачи = 78 + 100 + 25 = 203 мс. Общее время считывания файла = время считывания первого блока + время считывания 99 остальных блоков = 20,342 сек.

В случае, когда два блока находятся на расстоянии 2 цилиндра, время поиска занимает 2*6мс = 12мс. Время считывания блока = время поиска + задержка вращения + время передачи = 12 + 100 + 25 =137 мс. Общее время считывания файла = время считывания первого блока + время считывания 99 остальных блоков = 13,808сек.

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