
- •1.Понятие об архитектуре аппаратных средств и её взаимосвязи с программным обеспечением.
- •2.Основные классы задач операционной системы.
- •3.Концептуальные основы операционных систем.
- •4.Средства и алгоритмы управления задачами ос.
- •5.Задачи управления ресурсами.
- •6.Управление памятью в операционных системах.
- •7.Система ввода – вывода
- •8.Защита информации и безопасность в ос.
- •Методы идентификации и аутентификации
- •9.Криптография, шифры, перестановки.
- •10.Шифр гаммирования.
- •11.Стандартные шифры des(Data encryption standart) и гост.
- •12.Шифры с открытым ключом.
- •13.Методы идентификации и аутентификации.
- •14.Специальные методы аутентификации и идентификации и управление доступом. Методы отражения атак.
5.Задачи управления ресурсами.
Такие задачи возникают, когда у нас есть взаимосвязь и конкурирующие между собой ресурсы. Как правило, в ОС отсутствуют отдельные супервизоры ресурсов, так как эти задачи решаются на уровне внешнего или внутреннего управления процессов. Основными функциями управления процессом являются:
Учет наличия и состояния ресурса
Прием и учет заявок на ресурсы
Распределение ресурсов
Организация исполнения ресурсов
Возврат ресурса в систему по мере освобождения.
Для реализации этих функций формируются информационная таблица, в которых отображаются следующие данные:
Для ресурсов – учетная информация о ресурсах, код состояния, идентификатор процесса владельца и др.
Для заявок – идентификатор процесса заявителя, приоритет процесса, требуемый объем ресурсов.
При управлении ресурсами решаются три основные задачи:
Задача рационального исполнения и распределения;
Задача синхронизации процесса;
(тесно св. со вторым) Задача вычисления тупиков ОС.
Система, находится в состоянии тупика, если процесс ожидает некоторое событие, которое никогда не произойдет.
Систематический тупик системы (зависящее): перпендикулярно или более процессов оказывается в состоянии тупика.
Сформулируем 4 необходимых условия наличия тупика:
Процессы требуют предоставления им монопольного права управления ресурсом, который им выделяется – условия взаимоисключения.
Процессы удерживают за собой ресурсы уже выделенные им, ожидая в то же время выделения дополнительных ресурсов – условие ожидания ресурсов.
Ресурсы нельзя отобрать у процессов, удерживающих их, эти ресурсы не будут использованы для завершения работы – условие неперераспределяемости.
Существует кольцевая связь процессов в которой каждый процесс удерживает за собой один или более ресурсов, требующихся следующему процессу цепи – условие кругового ожидания. Оно означает, что ни один или 2 процесса могут прийти в тупик, а неопределенное множество m.
Для решения проблемы тупиков используются 4 подхода:
Предотвращение тупиков;
Обход тупиков;
Обнаружение тупиков;
Восстановление тупиков.
В первом случае целью является обеспечение условий, исключенных принципы возникновения тупиковых ситуаций (неполное исполнение средств системы).
Обход учитывает опасность возникновения тупиковых ситуаций по косвенным параметрам, характеризующих такие ситуации в процессе выполнения. Он тесно связан с методами обнаружения тупиков и зависит от количества метода обнаружения. Если тупиковая ситуация все таки произошла, производится выход из процессов. Для того, чтобы процесс продолжить, применяются методы восстановления. (Процессы, попавшие в тупик завершиться с освобождением занимаемых ими ресурсов).
При обращении нескольких процессов к критическому ресурсу, только одному из них разрешается воспользоваться ресурсом
В каждый момент времени только один процесс должен владеть критическим ресурсом.
Рассмотрим механизмы синхронизации процессов.
Рабочая смесь состоит из параллельных процессов. Они могут быть: несвязанными, т.е. не обменивающиеся целенаправленной информацией друг с другом, связанными, в противном случае, при этом связанные процессы могут быть, как синхронными, требующими, согласование скоростей развития, так и асинхронными в противном случае.
В механизмах синхронизации нуждаются все процессы, в том числе и несвязанные. Основная потребность синхронизации определяется тем, что одни и те же физические и логические устройства могут потребоваться разным процессам. Ресурс системы называется критическим если он допускает каждый момент времени обслуживание только одного процесса. Для решения данной задачи синхронизации, т. е. по ресурсам, применяется принцип взаимоисключения. Т.е. каждый процесс обращающийся к критическим ресурсам (иногда их называют разделяемые) должен исключить возможность для всех других процессов использования данного ресурса. В соответствии с этим принципом в программы процессов должны быть включены механизмы синхронизации, обеспечивающие выполнение следующих условий:
При обращении нескольких процессов к критическому ресурсу, только одному из них разрешается воспользоваться ресурсом
В каждый момент времени только один процесс должен владеть критическим ресурсом.
Все механизмы синхронизации, реализующие принцип взаимоисключения основаны на применении концепции критического участка. Им называется тот отрезок программного кода процесса, на котором данный процесс обращается к критическому участку. Когда один процесс находится на своем критическом участке, другие процессы могут продолжать выполнение, но без входа в их критические участки, если речь идет об одном ресурсе. Когда процесс выходит из критического участка, то должно быть обеспечено освобождение критического ресурса.
Общим подходом к построению таких механизмов синхронизации является использование примитивов взаимоисключения . Таких примитивов должно быть два
Вход взаимоисключения(ВВ)
Выход взаимоисключения(ВхВ)
Первый из них фиксирует захват критического ресурса процессом и запрет на использование его другими процессами. Второй информирует систему и другие процессы через нее об освобождении критического ресурса.
Предположим у нас есть два процесса организованных следующим образом, где каждый критический участок выполняется следующими примитивами:
Если П1 выполняет свой примитив ВВ и при этом П2 находится вне критического участка, то П1 входит в совй КУ(критический участок) по завершении которого выполняет примитив выхода сообщает об окончании работы с критическим ресурсом.
Если П1 выполняет примитив ВВ(входа), в то время, когда П2 находится на своем критическом участке, то П1 переходит в состояние ожидания до тех пор, пока П2 не выполнит примитив выхода, если же процессы П1 и П2 выполняют примитив входа одновременно, то одному из них операционная система разрешает продолжить работу, а другой переводит в состояние ожидания. Такие примитивы могут быть реализованы программно или аппаратно.
При программной реализации необходимо соблюдать следующие ограничения:
Задача решается ВС, не имеющей специальных команд взаимоисключения.
Не должно быть никаких предположений относительно скорости выполнения параллельных процессов.
Процессы, находящиеся вне своих критических участков не могут препятствовать другим процессам входить в их критические участки.
Не должно быть бесконечного откладывания момента входа процессов в их критические участки.
Классическое выполнение этих условий предложено математиками Деккером и Дейкстра. Ее изложение можно посмотреть в учебном пособии.
Для синхронизации с использованием аппаратных средств необходимо наличие в системе команд для синхранизации с использованием аппаратных средств.
Команды, которые обеспечивают следующие операции:
Чтение переменной.
Запись её значения в область сохранения.
Установка необходимого значения этой переменной.
4) Все это в одной команде - testandset - это неделимая команда с двумя переменными а и b читает значение логической переменной b, копирует его в а и затем устанавливает для b значение "истина". Все это в рамках единой неделимой операции.
Отсюда перейдем к понятию семафора.
Семафор - это защищенная переменная, значения которой можно опрашивать и изменять только при помощи операции "инициализация семафора" и операции Р(S), V(S), где S - семафор. Операция P выполняется по правилам, если S больше нуля, то S присвоить S = -1. Иначе ожидать на этом семафоре(на S). Операция V - если один или более процессов ожидает на семафоре, то разрешить одному из процессов продолжить работу, иначе S = S+1. Тоесть вход в критические участки можно контролировать с помощью семафоров.
Различают два вида:
Двоичные - S = 0 или S = 1
Считающие, когда S принимает целые неотрицательные значения.
Т.е. участки взаимоисключения или критические участки обрамляются операциями P и V. Если одновременно несколько процессов попытаются выполнить операцию P для данного семафора, то продолжен будет только один из них, а остальные перейдут в режим ожидания. Так же как и примитивы, они могут быть реализованы и программно и аппаратно.
Еще один механизм обработки критических участков связан с понятием монитора. Монитор содержит как данные, так и процедуры необходимые для реализации динамического распределения конкретного общего ресурса. Необходимость обращения использования ресурса называют необходимость обращения соответствующему монитору. В различные моменты времени потребность в таком входе может возникнуть у многих процессов. Но монитор на входе осуществляет взаимоисключение процессов и только одному из них разрешается вход в монитор. Остальные переходят в режим ожидания, которым автоматически управляет монитор. Таким образом, монитор не только выполняет операции взаимоисключения, но и функции по обслуживанию очереди ожидающих процессов.
Рассмотрим алгоритмы управления ресурсами.
Ресурсы могут распределяться двумя способами:
Статически, на основе информации из пакета задания.
Динамически, по запросам процессов и при возникновении соответствующих событий.
Конечно, возможны и комбинации двух этих подходов.
Самым простым из алгоритмов является алгоритм по предоставлению ресурса при первом обращении к нему. Он состоит в следующем:
Независимо от места выдачи запроса система фиксирует первое упоминание имени запрашиваемого ресурса.
Распределяет конкретное физическое устройство, соответствующее имени источнику запроса.
Помечает ресурс в соответствующей таблице, как выделенный или занятый.
Выделенный ресурс не может быть выделен другим процессам, пока процесс, использующий его, не освободит ресурс или не прекратит свою работу.
//Данный алгоритм, несмотря на простоту реализации, порождает проблему тупиков.
Поэтому, наряду с использованием этого алгоритма необходимы алгоритмы предотвращения тупиков. Мы уже сформулировали 4 алгоритма тупиков и все их предотвращения базируются на нарушении этих условий. В частности известны следующие стратегии, предложенные Хавендером:
Каждый процесс должен запрашивать все требуемые ресурсы сразу и не может выполняться до тех пор, пока они не будут ему предоставлены.
Если процесс удерживающий определенные ресурсы получает отказ на запрос дополнительных ресурсов, то он должен освободить свои первоначальные ресурсы и запросить их вместе с дополнительными.
Введение линейной упорядоченности по типам ресурсов, для всех видов процессов. Если процессу выделены ресурсы данного типа, то в дальнейшем он может запросить только ресурсы более далекие по порядку типов.
Каждая из этих стратегий нарушает одно из необходимых условий существования тупика. И с каждой из них связан реализующий ее алгоритм.
Упомянем так же алгоритмы обхода тупиков, наиболее известными из которых являются: алгоритм Дейкстры, называемый так же алгоритмом банкира, и алгоритм Хабермана, называемый алгоритмом регулируемого распределения. Заметим, что для того чтобы использовать алгоритмы обхода тупиков, мы должны получить информацию о возможности их наступления до возникновения тупика. Это делает их весьма дорогостоящими вычислительном смысле, и мы не можем так же утверждать, что информация, которую мы получим, исключает все возможные тупиковые ситуации. В связи с чем, применение таких алгоритмов является ограниченным и можно сказать эвристическим.