- •11.Понятие многозадачности
- •12.Процессы и потоки. Понятия, связанные с процессами и потоками.
- •13.Алгоритмы планирования. Планирование в Windows.
- •14. Моменты перепланировки. Пример перепланировки в Windows.
- •15.Механизм прерываний в Windows, обработка прерываний, приоритеты прерываний
- •16.Синхронизация потоков. Способы синхронизации потоков.
- •17.Взаимоблокировки. Условия возникновения блокировок.
- •18.Взаимоблокировки. Варианты решения проблемы блокировок в ос
- •19.Функции ос по управлению памятью. Типы систем управления памятью.
- •20.Адресация памяти. Виртуальное адресное пространство в Windows
- •21.Реализация страничной виртуальной памяти
- •22. Управление памятью в Windows
- •Vad диапазон отображаемых адресов // файл подкачки// смещение в файле// режим доступа// каталог таблиц страниц//
- •23.Порядок доступа к памяти. Типы страничных прерываний
- •24.Рабочий набор процесса. Алгоритм замещения станиц в Windows
- •25.Управление физической памятью в Windows
16.Синхронизация потоков. Способы синхронизации потоков.
Проблема синхронизации потоков:
В ситуации многозадачности при выполнении множества изолированных друг от друга процессов возможно возникновение проблем:
- процессы или потоки могут пересекаться в критической ситуации при доступе к разделяемым данным
-если процесс А должен поставлять данные, а процесс В их использовать, то как организовать их совместную работу
Необходима синхронизация потоков!
Пример состязаний (гонок):
Потоки А и В независимо работают с базой данных.
Поток А – заносит сведения о заказах
Поток В – заносит сведения об оплате
А читает запись из БД, модифицирует поле заказа и прерывается
В читает запись из БД,модифицирует поле оплатыи прерывается
А сохраняет запись с заказоми прерывается
В сохраняет запись с оплатойи прерывается
ПРОБЛЕМА:Исчезла информация о заказе!
Разрешение ситуации гонок:
Для разрешения ситуации гонок необходимо реализовать взаимное исключение: когда один поток использует общие данные – второму это запрещено
Критическая область – часть программы, в которой есть обращения к совместно используемым данным.
Условия разрешения ситуации гонок:
-два потока не должны одновременно находиться в критической области
- в программе не должно быть предположений о количестве потоков и скоростях их выполнения
-поток, находящийся вне критической области не может блокировать другие потоки
-невозможна ситуация, когда поток вечно ждет попадания в критическую область.
Объекты, используемые для синхронизации:
Событие – объект ОС, который может менять свое состояние с «обычного» на «сигнальное». Используются как сигнал о завершении какой либо операции. Позволяет разблокировать поток, ожидающий данного события.
Мьютекс – объект ОС, который может находиться в одном из двух состояний – быть «свободным» или «занятым». Управляют входом в критическую область. Если поток пытается захватить мьютекс, а он уже занят, то поток переходит в состояние ожидания.
Критическая секция – участок программы, который может одновременно выполняться только одним потоком. Поток, может многократно входить в захваченную им критическую секцию.
Семафор – объект ОС, который представляет собой счетчик. Используется при учете используемых ресурсов. Перед использованием к ресурса поток обращается к семафору. Если еще есть свободные ресурсы, они выдаются и значение семафора уменьшается. Если все ресурсы выданы, то поток переходит в ожидание. При освобождении ресурса значение семафора увеличивается.
Способы взаимодействия между процессами:
-использование разделяемой памяти – при этом необходимо обеспечить синхронизацию процессов
-использование каналов (pipe) – системныхобъектов, обеспечивающих передачу информации в одном направлении. Поток вывода одного процесса направляется в поток ввода другого. Операции по работе с каналами аналогичны файловым операциям ввода/вывода.
-использование разделяемых файлов – обмен информацией через файловую систему.
- использование сокетов (socket) – обмен информацией с использованием сетевых возможностей (имитация сетевого обмена)
