2. Синхронизация процессов и потоков. Методы взаимоисключений. Блокирующие переменные. Системные функции для работы с критическими секциями.
Вопрос 1.
Операционная система - это набор программ, контролирующих работу прикладных программ и системных приложений и исполняющих роль интерфейса между пользователями, программистами, приложениями и аппаратным обеспечением компьютера.
Назначение
1. Обеспечение удобного интерфейса [приложения, пользователь] - компьютер за счет предоставляемых сервисов:
a. Инструменты для разработки программ
b. Автоматизация исполнения программ
c. Единообразный интерфейс доступа к устройствам ввода-вывода
d. Контролируемый доступ к файлам
e. Управление доступом к совместно используемой ЭВМ и ее ресурсам
f. Обнаружение ошибок и их обработка
g. Учет использования ресурсов
2. Организация эффективного использования ресурсов ЭВМ
a. Планирование использования ресурса
b. Удовлетворение запросов на ресурсы
c. Отслеживание состояния и учет использования ресурса
|
|
d. Разрешение конфликтов между процессами, претендующими на одни и те же ресурсы
3. Облегчение процессов эксплуатации аппаратных и программных средств вычислительной системы
a. Широкий набор служебных программ (утилит), обеспечивающих резервное копирование, архивацию данных, проверку, очистку, дефрагментацию дисковых устройств и др.
b. Средства диагностики и восстановления работоспособности вычислительной системы и операционной системы:
i. диагностические программы для выявления ошибок в конфигурации ОС;
ii. средства восстановления последней работоспособной конфигурации;
iii. средства восстановления поврежденных и пропавших системных файлов и др.
4. Возможность развития
a. Обновление и возникновение новых видов аппаратного обеспечения
b. Новые сервисы
c. Исправления (обнаружение программных ошибок)
d. Новые версии и редакции ОС
Состав компонентов и функции операционной системы:
1. Управление процессами
2. Управление памятью
3. Управление файлами
4. Управление внешними устройствами
5. Защита данных
6. Администрирование
7. Интерфейс прикладного программирования
8. Пользовательский интерфейс
· ОС — это комплекс взаимосвязанных программ, предназначенный для повышения эффективности аппаратуры компьютера путем рационального управления его ресурсами, а также для обеспечения удобств пользователю путем предоставления ему расширенной виртуальной машины.
· К числу основных ресурсов, управление которыми осуществляет ОС, относятся процессоры, основная память, таймеры, наборы данных, диски, накопители на магнитных лентах, принтеры, сетевые устройства и некоторые другие. Ресурсы распределяются между процессами. Для решения задач управления ресурсами разные ОС используют различные алгоритмы, особенности которых в конечном счете и определяют облик ОС.
|
|
· Наиболее важными подсистемами ОС являются подсистемы управления процессами, памятью, файлами и внешними устройствами, а также подсистемы пользовательского интерфейса, защиты данных и администрирования.
· Прикладному программисту возможности ОС доступны в виде набора функций, составляющих интерфейс прикладного программирования (API).
· Термин «сетевая операционная система» используется в двух значениях: во-первых, как совокупность ОС всех компьютеров сети и, во-вторых, как ОС отдельного компьютера, способного работать в сети.
· К основным функциональным компонентам сетевой ОС относятся средства управления локальными ресурсами и сетевые средства. Последние, в свою очередь, можно разделить на три компонента: средства предоставления локальных ресурсов и услуг в общее пользование — серверная часть ОС, средства запроса доступа к удаленным ресурсам и услугам — клиентская часть ОС (редиректор) и транспортные средства ОС, которые совместно с коммуникационной системой обеспечивают передачу сообщений между компьютерами сети.
· Совокупность серверной и клиентской частей, предоставляющих доступ к конкретному типу ресурса компьютера через сеть, называется сетевой службой. Сетевая служба предоставляет пользователям сети набор услуг — сетевой сервис. Каждая служба связана с определенным типом сетевых ресурсов и/или определенным способом доступа к этим ресурсам. Наиболее важными для пользователей сетевых ОС являются файловая служба и служба печати. Сетевые службы могут быть либо глубоко встроены в ОС, либо объединены в виде некоторой оболочки, либо поставляться в виде отдельного продукта.
· В число требований, предъявляемых сегодня к сетевым ОС, входят: функциональная полнота и эффективность управления ресурсами, модульность и расширяемость, переносимость и многоплатформенность, совместимость на уровне приложений и пользовательских интерфейсов, надежность и отказоустойчивость, безопасность и производительность.
Вопрос 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сек.