
- •Лекция 1. Состав и назначение и классификация операционной системы Введение
- •Понятие процесса и ресурса
- •Состав операционной системы
- •Классификация ос
- •Ос пакетной обработки
- •Ос оперативной обработки
- •Системы жёсткого реального времени не допускают задержек реакции системы, так как это может привести к:
- •Моделирование режима мультипрограммирования
- •Планирование процессов Понятия о планировании и диспетчеризации процессов
- •Создание процессов
- •Завершение процесса
- •Состояние процесса
- •Алгоритмы планирования
- •Методы планирования
- •Детерминированное планирование
- •Стохастическое планирование Последовательный выбор
- •Алгоритм одноуровневого циклического выбора
- •Алгоритм многоуровневого циклического выбора
- •Алгоритм многоуровневого планирования с учётом предварительных приоритетов работ.
- •Планирование на основе приоритетов
- •Обслуживание с абсолютными приоритетами
- •Синхронизация процессов
- •Цели и средства синхронизации процессов
- •Понятие системные вызовы. Критические секции
- •Синхронизация методом взаимных исключений
- •Метод блокирующей переменной
- •Блокирующей переменной с использованием системного вызова
- •Метод семафоров
- •Условная (барьерная) синхронизация
- •Тупиковые ситуации во взаимодействии процессов и методы их устранения
- •Управление памятью
- •Проблемы организации памяти мультипроцессорных вычислительных систем. Функции ос по управлению памятью.
- •Методы защиты памяти
- •Метод граничных ресурсов
- •Метод ключей защиты
- •Защита отдельных ячеек
- •Организация виртуальной памяти
- •Статическое и динамическое распределение памяти. Распределение памяти фиксированными разделами
- •Страничная организация виртуальной памяти
- •Сегментная и сегментно-страничная организация виртуальной памяти
- •Структура страничной таблицы
- •Методы уменьшения времени доступа к памяти
- •Обеспечение быстрого доступа к данным кэш-память
- •Ускорение формирования адреса. Буферы быстрого преобразования адреса
- •Алгоритмы замещения страниц в виртуальной памяти
- •В своем развитии осрв строились на основе следующих архитектур.[1]
Синхронизация методом взаимных исключений
Существует два типа реализующих синхронизацию процесса:
взаимное исключение
условная синхронизация.
Во взаимном исключении организуется исключающий доступ к общим ресурсам (переменным) единственного потока или процесса.
В условной синхронизации не допускается исполнение треб. операции или программы пока не будет достигнуто условие треб. программы.
Рассмотрим методы синхронизации взаимного исключения:
Метод блокирующей переменной
Используется программистом, реализ. в пользовательском пространстве, т.е. без обращения к ядру. Каждому набору критических секций ставится в соответствие глобальной двоичной переменной, которой присваивается значение единицы, когда вн. в идентичные секции и ноль, когда вых.
«1» - занят
«0» - освободится.
Запрос к некоторому ресурсу Dможно представить следующим алгоритмом:
F(D) – блокирующая переменная, отвечающая за занятость процесса.
Листинг 2.2. Вход и выход из критической области с помощью команды TSL enter_region;
TSL REGISTER.LOCK | Значение lock копируется в регистр, значение переменной
Устанавливается равным 1 GMP REGISTER.#0 I Старое значение lock сравнивается с нулем
JNE enter_region I Если оно ненулевое, значит, блокировка уже была установлена,
поэтому цикл завершается RET I Возврат к вызывающей программе, процесс вошел в критическую
область
leave_region;
MOVE LOCK .#0 | Сохранение 0 в переменной lock
RET
Недостаток: запущенный процесс неопределенно долго может находится в петле ожидания, при этом тратится время.
Такой способ синхронизации быстродейств, т.к. происходит в пространстве пользователя, а не ядра, треб. – контекст сохранения.
Однако, возможен вход нескольких процессов в критическую секцию.
Например, пусть некоторый поток, который требует доступы к некоторым ресурсам. Не успев его установить в состояние «занят» он был прерван, например по истечении кванта.
Другой процесс определяет, что ресурс свободен, занял ресурс, вошел в критическую секцию и был прерван.
Когда первый процесс получит управление он считает, что ресурс свободен, занимает его, и так же входит в критическую секцию. Таким образом, два процесса оказываются в критической секции, что не допустимо.
Чтобы исключить такую ситуацию, можно применить следующие приемы:
при запросе ресурса запрещать прерывания, однако, такой метод не годится для многопроцессных систем, т.к. запрещается прерывание в том процессе, в котором запрещ. поток, остальные процессоры – активны.
использовать неделимую (единую) команду, которая определяет свободен или занят ресурс и устанавливает: занять или освободить TSL.BTRr/mнаходится либо в регистре, либо в памяти (сбросить, освободить). .BTSr/mпроверить и установить блокирующую переменную.
Блокирующей переменной с использованием системного вызова
Метод системных вызовов заключается в том, что процесс или поток прежде чем войти в критическую секцию выполняет системный вызов.
В рамках этого вызова выполняется проверка блокирующих переменных, и если ресурс занят, то запрашивающий процесс переходит в режим ожидания, при этом делается отметка о том, что данный процесс или поток должен быть активирован когда ресурс освободится - перечисленные функции выполняет ядро ОС.
Тогда алгоритм будет следующим:
Такой метод исключает бесконечный цикл опроса блокирующих переменных.
Однако, может быть применен к достаточно объемным критическим секциям. Это связано с тем, что системный вызов требует вход в ядро ОС. Вход сопровождается сохранением контекста, а выход восстановление контекста требуемых программ, требует значительных затрат времени.
Блокирующие переменные, использующие системные вызовы, называют мьютексами, этот метод поддерживается почти всеми ОС.