- •Лекция 1. Операционные системы.
- •Экскурс в историю.
- •Основы архитектуры вычислительных систем.
- •Лекция 2. Системы программирования.
- •Выводы:
- •Основы компьютерной архитектуры.
- •Центральный процессор
- •Модель организации прерываний с использованием «вектора прерываний»
- •Лекция 3.Внешние запоминающие устройства.
- •Аппаратная поддержка ос и систем программирования.
- •Регистровые окна
- •Системный стек
- •Виртуальная память
- •Модельный пример организации страничной виртуальной памяти. Лекция 4.Операционная система. Общие характеристики и свойства.
- •Структура ос.
- •Процессы в ос unix.
- •1. Системный вызов fork()
- •2. Системный вызов exec()
- •Лекция 5. Взаимодействие процессов: синхронизация, тупики
- •Средства синхронизации
- •Классические задачи синхронизации процессов
- •Лекция 6 .Основы взаимодействия сети.
- •Многомашинные и многопроцессорные ассоциации.
- •Компьютерные сети
- •Лекция 7. Файловые системы
- •Практическая реализация фс.
- •Лекция 8. Ос unix. Файловая система.
- •Модель версии system V
- •Альтернатива для system V – ffs bsd.
- •Управление внешними устройствами.
- •Лекция 9. Программное управление внешними устройствами
- •Эффективность (когда есть все уровни кэш, но нет интенсивности потоков)
- •Одно из основных качеств программного решения – надежность (24 часа 7 дней в неделю)
- •Oc Unix: Работа с внешними устройствами
- •Лекция 10. Система межпроцессного взаимодействия ipc
- •«Очередь сообщений»
- •Ipc: разделяемая память.
- •1Й процесс:
- •2Й процесс:
- •Close – полная аналогия с работой с файлами, но аргумент – дескриптор сокета.
- •Лекция 11. Планирование
- •Алгоритмы, основанные на приоритетах
- •Планирование в ос unix
- •Планирование в Windows nt.
- •Планирование свопинга в ос Unix
- •Лекция 12. Управление оперативной памятью
- •1.Одиночное непрерывное распределение.
- •2.Распределение разделами.
- •3.Распределение перемещаемыми разделами.
- •4.Страничное распределение.
- •А лгоритм nru
- •Алгоритм fifo
- •Алгоритм «Часы»
- •А лгоритм lru
Лекция 5. Взаимодействие процессов: синхронизация, тупики
Процессы, выполнение которых хотя бы частично перекрывается по времени, называются параллельными. Они могут быть независимыми и взаимодействующими. Независимые процессы – процессы, использующие независимое множество ресурсов и на результат работы такого процесса не влияет работа независимого от него процесса. Наоборот – взаимодействующие процессы совместно используют ресурсы и выполнение одного может оказывать влияние на результат другого.
Совместное использование несколькими процессами ресурса ВС, когда каждый из процессов одновременно владеет ресурсом называют разделением ресурса. Разделению подлежат как аппаратные, так программные ресурсы. Разделяемые ресурсы, которые должны быть доступны в текущий момент времени только одному процессу – это так называемые критические ресурсы. Таковыми ресурсами могут быть, как внешнее устройство, так и некая переменная, значение которой может изменяться разными процессами.
Необходимо уметь решать две важнейшие задачи:
-
Распределение ресурсов между процессами.
-
Организация защиты адресного пространства и других ресурсов, выделенных определенному процессу, от неконтролируемого доступа со стороны других процессов.
Важнейшим требованием мультипрограммирования с точки зрения распределения ресурсов является следующее: результат выполнения процесса не должен зависеть от порядка переключения выполнения между процессами, т.е. от соотношения скорости выполнения процесса со скоростями выполнения других процессов.
Рассмотрим ситуацию, изображенную на Рис. 1:
Рис. 1 Конкуренция процессов за ресурс.
В этом случае символ, считанный процессом А, был потерян, а символ, считанный процессом В, был выведен дважды. Результат выполнения процессов здесь зависит от того, в какой момент осуществляется переключение процессов, и от того, какой конкретно процесс будет выбран для выполнения следующим. Такие ситуации называются гонками (race conditions) между процессами, а процессы – конкурирующими. Единственный способ избежать гонок при использовании разделяемых ресурсов – контролировать доступ к любым разделяемым ресурсам в системе. При этом необходимо организовать взаимное исключение – т.е. такой способ работы с разделяемым ресурсом, при котором постулируется, что в тот момент, когда один из процессов работает с разделяемым ресурсом, все остальные процессы не могут иметь к нему доступ.
Проблему организации взаимного исключения можно сформулировать в более общем виде. Часть программы (фактически набор операций), в которой осуществляется работа с критическим ресурсом, называется критической секцией, или критическим интервалом. Задача взаимного исключения в этом случае сводится к тому, чтобы не допускать ситуации, когда два процесса одновременно находятся в критических секциях, связанных с одним и тем же ресурсом.
Заметим, что вопрос организации взаимного исключения актуален не только для взаимосвязанных процессов, совместно использующих определенные ресурсы для обмена информацией. Выше отмечалось, что возможна ситуация, когда процессы, не подозревающие о существовании друг друга, используют глобальные ресурсы системы, такие как устройства ввода/вывода, принтеры и т.п. В с этом случае имеет место конкуренция за ресурсы, доступ к которым также должен быть организован по принципу взаимного исключения.
При организации взаимного исключения могут возникнуть тупики (deadlocks), ситуации в которой конкурирующие за критический ресурс процессы вступают в клинч – безвозвратно блокируются.
Есть два процесса А и В, каждому из которых в некоторый момент требуется иметь доступ к двум ресурсам R1 и R2. Процесс А получил доступ к ресурсу R1, и следовательно, никакой другой процесс не может иметь к нему доступ, пока процесс А не закончит с ним работать. Одновременно процесс В завладел ресурсом R2. В этой ситуации каждый из процессов ожидает освобождения недостающего ресурса, но оба ресурса никогда не будут освобождены, и процессы никогда не смогут выполнить необходимые действия.
Далее мы рассмотрим различные механизмы организации взаимного исключения для синхронизации доступа к разделяемым ресурсам и обсудим достоинства, недостатки и области применения этих подходов.
Рассмотри классические методы (средства) синхронизации