- •Классификация ос по назначению:
- •Монолитная структура ос.
- •Переносимость ос может быть достигнута при соблюдении:
- •Процесс – отдельная программа в момент ее выполнения, а также выделенные ей ресурсы.
- •Описание процессов.
- •Создание процесса.
- •Сигнал в ос unix — это асинхронное уведомление процесса о каком-либо событии.
- •Поток — это независимо планируемый контекст выполнения, разделяющий единое адресное пространство с другими потоками своего процесса.
- •Два процесса называются параллельными, если их выполнение может перекрываться во времени.
- •Аппаратные способы достижения взаимного исключения.
- •Семафор – специальная переменная, имеющая целое значение и связанную с ним очередь
- •Классические проблемы межпроцессорного взаимодействия.
- •Планирование – обеспечение поочередного доступа процессов к одному процессору.
- •Фиксированное распределение памяти.
- •Система двойников.
- •Алгоритмы управления виртуальной памятью.
- •Цели и задачи файловой системы.
- •Устройство диска.
- •Атрибуты файлов.
- •Переменные окружения (переменные среды) используются для настройки многих ос. Они задаются в реестре Windows и программным обеспечением.
Два процесса называются параллельными, если их выполнение может перекрываться во времени.
В мультипроцессорной системе достигается физическая параллельность.
Когда один процессор – логическая параллельность.
Виды взаимодействия процессов:
обмен информацией
конкуренция за доступ к ресурсам
согласование действий процессов
Механизмы взаимодействия параллельных процессов:
разделяемые переменные
передача сообщений
Способы передачи сообщений:
разделяемая память
каналы – один процесс пишет, другой читает
сокет – поддерживаемый ядром механизм, скрывающий особенности среды и позволяющий единообразно взаимодействовать процессам
почтовые ящики
вызов удаленной процедуры
Проблемы параллельных процессов:
состояние гонок – несколько процессов считывают или записывают одновременно
блокировки и взаимоблокировки при доступе к ресурсам
трудно обнаруживаемые программные ошибки
Взаимное исключение – механизм, который гарантирует, что в любой момент времени только один процесс выполняет некоторую определенную последовательность действий и тем самым исключает возможность работы другого процесса.
Критический ресурс – ресурс, которому в каждый момент времени возможен доступ только одного процесса.
Доступ к такому ресурсу осуществляется в критической секции.
Критическая секция – часть кода, которая в любой момент времени может выполняться только одним процессом.
Взаимное исключение может привести:
к взаимной блокировке
голоданию
Для правильной совместной работы параллельных процессов необходимо:
два процесса не должны одновременно находиться в критической секции
в программе не должно, быть заложено ни каких, первоначальных предположений о скорости или количестве процессов
процесс, находящийся вне критической секции не должен блокировать другой процесс
должна быть невозможна ситуация, когда процесс вечно ждет попадания в критическую секцию
когда в критической секции нет ни одного процесса, любой процесс может получить доступ к ней
процесс остается в критической секции только в течении ограниченного времени
Подходы к достижению взаимного исключения:
Программный – сам процесс ответственен за достижение взаимного исключения
Аппаратный – с использованием специальных машинных команд
Поддержка со стороны ОС или среды программирования
Аппаратные способы достижения взаимного исключения.
Завершение прерываний – процессор переключается на другой процесс только по прерыванию
Недостатки аппаратного способа:
он применим только в однопроцессорных системах
важные события ввода вывода могут быть не отобраны
Программные способы достижения взаимного исключения.
Переменные блокировки – процесс перед входом в критическую ситуацию непрерывно проверяет значение переменной блокировки, чтобы определить, свободен или занят ресурс.
Недостатки программного способа:
те же что и при организации доступа к общим переменным
если после выхода из критической ситуации процесс по какой-либо причине не установит значение переменной блокировки равным нулю, то другие процессы не смогут войти в критическую ситуацию
непроизводительный расход времени процессора