- •Список вопросов для подготовки к экзамену по сппо (2013-2014 уч. Год)
- •Понятие программного обеспечения (по). Классификация программного обеспечения по выполняемым функциям, структура системного по. Основные свойства системного программного обеспечения.
- •1)Управление процессами (программ во время выполнения);
- •Классификация ос (по структуре и архитектурным принципам построения, по режимам работы). Примеры.
- •Программные методы реализации взаимного исключения: примеры на псевдокоде, анализ и сравнение вариантов. Примеры.
- •Понятие семафора, семафорные примитивы, бинарные и считающие семафоры. Примеры объектов диспетчеризации в ms Windows, которые могут использоваться как «семафоры».
- •Применение бинарных семафоров для реализации взаимного исключения и синхронизации процессов. Примеры.
- •Общие семафоры, решение задачи «писателей и читателей» при работе с циклическим буфером. Сравнить варианты решения.
- •Проблема тупика и задачи, связанные с решением проблемы тупика: формулировки задач и подходы к решению. Примеры.
- •Задача предотвращения тупика, подходы к решению, анализ Примеры.
- •Модель системы с повторно используемыми ресурсами (граф повторно используемых ресурсов). Примеры.
- •Модель системы с потребляемыми ресурсами (граф потребляемых ресурсов). Примеры.
- •Система с повторно используемыми и потребляемыми ресурсами (граф обобщённых ресурсов). Примеры.
- •Решение задачи распознавания тупика для систем с повторно используемыми ресурсами: основная теорема о тупике. Алгоритм редукции. Примеры редукции.
- •Распознавание тупиков в системах с повторно используемыми ресурсами с ограничениями на выполнение операций. Примеры.
- •Распознавание тупиков в системах с потребляемыми ресурсами и в системах с обобщёнными ресурсами: алгоритм редукции. Примеры.
- •Распознавание тупиков в системах с потребляемыми ресурсами и в системах с обобщёнными ресурсами: системы с ограничениями на выполнение операций. Примеры.
- •Вывод системы из тупика. Общий подход к решению задачи и частный случай.
- •Обходы тупиков. Алгоритм банкира. Примеры.
- •Иерархия запоминающих устройств вс, характеристики устройств и связь, механизмы создания иерархии. Примеры.
- •Способы распределения памяти: статическое и динамическое распределение, связные и несвязные распределения. Сравнение.
- •Сегментная организация памяти. Страничная организация памяти. Сегментно-страничная организация памяти. Аппаратная поддержка в процессорах Intel.
- •Общие принципы организации виртуальной памяти. Управление виртуальной памятью: стратегии загрузки, стратегии размещения, стратегии замещения. Пример реализации в Intel.
- •Средства защиты памяти: изоляция адресных пространств. Поддержка в Intel.
- •Средства защиты памяти: защита по уровням привилегий, привилегированные команды и команды, чувствительные к уровням привилегий). Поддержка в Intel.
- •Статическая и динамическая компоновка программ: определение, сравнение и примеры.
- •Упрощённая структура объектного модуля и принцип работы связывающего загрузчика, редактора связей (одно- и двухпроходовые). Упрощённая структура исполнимого файла.
- •Понятие прерывания, классификация прерываний. Примеры (Intel).
- •Общая схема обработки прерываний, программно-аппаратная реализация, аппаратная поддержка механизма прерываний в Intel.
- •Структурная схема обработки исключений в Windows (seh): обработка завершения и локальная раскрутка.
- •Структурная схема обработки исключений в Windows (seh): обработка исключений и глобальная раскрутка.
- •Определение файла, атрибуты файлов и именование файлов, понятие каталога (справочника, директории, папки). Примеры.
- •Понятие и функции файловой системы как подсистемы ос.
- •Логическая и физическая организация файлов. Буферизация ввода/вывода. Примеры.
- •Логическая организация файлов: файлы с последовательной организацией и индексированные файлы. Поиск на внешних устройствах, b-деревья: определение и построение, выполнение операций. Примеры.
- •Управление внешней памятью: карты памяти и списки. Примеры (fat, ntfs).
- •Управление вводом/выводом, понятие драйвера внешнего устройства, драйверы виртуальных устройств.
- •Понятие драйвера файловой системы. Иерархическая организация файловых систем. Примеры.
- •Понятие защищённой вс. Классификация угроз и вторжений. Структура системы защиты.
- •Контроль прав доступа и матрица прав доступа как математическая модель защиты объектов. Примеры: одноранговое разделение ресурсов и защита на уровне пользователей.
- •Криптографическая защита. Понятие ключа. Симметричное и асимметричное шифрование. Понятие криптографического протокола. Понятие цифровой подписи.
- •Примеры задач по обработке исключений
- •Задания по разработке командных файлов и изучение команд пакетной обработки
- •Задачи на использование программных методов решения проблемы взаимного исключения
- •Задачи на работу с семафорами
- •Решение:
- •Решение:
- •Задачи на понимание алгоритмов решения задач, связанных с тупиками
- •Задачи на анализ состояний системы для выявления тупиков
- •Задачи по теме «Хранение и поиск информации на взу»
- •Файлы для подготовки
Проблема тупика и задачи, связанные с решением проблемы тупика: формулировки задач и подходы к решению. Примеры.
Проблема тупика - одна из наиболее сложных проблем, решаемых при разработке программных систем в мультипрограммной среде.
Говорят, что процесс находится в состоянии тупика , если он ожидает некоторого события, которое не может произойти без вмешательства извне, то есть если не будут приняты “чрезвычайные меры” : процесс оказывается заблокированным в результате таких запросов на ресурсы, которые не могут быть удовлетворены, если не перераспределить принудительно ресурсы, “отобрав” их у других процессов, или не снять с выполнения эти процессы до нормального их завершения, процесс может быть также заблокирован в результате ожидания сигнала, который не может быть ему передан другим процессом.
Тупик может быть результатом ошибки при разработке программ для выполнения их в многопрограммной среде с динамическим распределением ресурсов.
Особенно большое значение решение проблемы тупика приобретает в системах реального времени, в вычислительных сетях.
Таким образом, проблема тупика - глобальная системная проблема, в рамках которой решаются следующие задачи:
предотвращение тупиков;
обход тупиков;
распознавание тупиков;
вывод системы из тупика и восстановление ее работоспособности.
Цель предотвращения тупика - создание таких условий функционирования системы, которые полностью исключают саму возможность возникновения тупика.
Задача обхода тупика решается в системах, где возможность возникновения тупика не исключается. Цель решения этой задачи - обход состояний, где вероятность возникновения тупика велика.
Цель задачи распознавания тупика - установить сам факт возникновения тупиковой ситуации и определить объекты системы (процессы и ресурсы), вовлеченные в нее, то есть определить причины, приведшие к тупику.
При возникновении тупиковой ситуации ставится следующая задача - вывод системы из тупика с возможно меньшими потерями и восстановление ее работоспособности.
Задача предотвращения тупика, подходы к решению, анализ Примеры.
Тупики могут возникнуть только в системах, где выполняются четыре необходимых условия их появления:
условие взаимоисключения (процессы требуют предоставления им права монопольного использования ресурсов, которые им выделяются);
условие ожидания ресурсов (процессы, запросившие ресурс, ожидают его выделения, не отказываясь от своих запросов);
условие неперераспределяемости ресурсов (ресурсы, выделенные процессам, не могут быть перераспределены, пока процессы не используют их до конца и не выполнят сами операцию освобождения, даже если процессы, удерживающие ресурсы, находятся в заблокированном состоянии);
условие циклического ожидания (существует кольцевая цепь процессов, в которой каждый процесс удерживает один или более ресурсов, необходимых следующему процессу в этой цепи).
Нарушение какого-либо из этих условий создает возможность предотвращения тупиков в системе.
Все методы предотвращения тупиков имеют одну цель - обеспечение условий, при которых все состояния в системе будут безопасными.
Соблюдение первых трех условий определяется режимом работы ОС, поэтому практически при разработке программных систем можно предотвратить тупики, только сделав невозможным выполнение последнего условия, которое и дает практический подход к решению задачи предотвращения тупиков.
Первый метод (самый простой для реализации) состоит в том, что все ресурсы в системе отдаются в распоряжение одного процесса. Фактически это означает организацию однопрограммного режима работы ВС, что означает неэффективное ее функционирование.
Второй подход состоит в том, чтоб определить все потребности процессов в ресурсах (максимальные потребности для всего времени выполнения процесса в ВС) сразу, при их порождении. Процесс вводится в систему только тогда, когда его максимальные запросы могут быть удовлетворены с учетом распределения ресурсов другим процессам, выполняющимся в системе. Таким образом, запрещается фактически динамическое распределение ресурсов. Тупиков не будет, так как процесс сможет получить ресурсы только тогда, когда все его запросы смогут быть удовлетворены. При этом при выполнении процесса заранее выделенные ему ресурсы могут и не потребоваться, то есть ресурсы ВС будут использоваться также неэффективно.
Третий подход к решению задачи предотвращения тупиков состоит в реализации стратегии упорядочения ресурсов.
Все ресурсы делятся на классы
K1, K2, ... , Kk
так, что ресурс из класса Ki может быть выделен процессу только тогда, когда этому процессу не распределены уже ресурсы из классов
Ki, Ki+1, ... , Kk
(при k=1 получается описанный выше вариант).
Классификация ресурсов выполняется в соответствии с их свойствами и естественным порядком запросов на них от выполняющихся процессов. Самые дорогие ресурсы выделяются обычно в старшие классы.
В операционной системе, в которой реализовано предотвращение тупиков, ресурсы могут быть классифицированы, например, следующим образом:
K1 - файлы, открываемые процессом, K2 - оперативная память ВС, запрашиваемая динамически, K3 - устройства ввода/вывода.
Математическая модель для формального определения тупика. Состояние системы и операции, влияющие на состояние системы. Определение заблокированных процессов, процессов, находящихся в тупике. Определение состояния тупика. Понятие выгодного состояния. Понятие безопасного состояния. Примеры.
Таким образом, были введены математические модели для систем с повторно используемыми и потребляемыми ресурсами. Однако обычно в ВС используются оба типа ресурсов. Для представления таких систем можно объединить введенные выше модели.
Граф обобщенных ресурсов - это ориентированный двудольный граф
RG = (N, E),
где N есть множество вершин:
N =
( = { p1 , p2 , ..., pn}- конечное множество вершин, представляющих процессы в ВС, = { R1 , R2 , ..., Rm} - множество вершин, соответствующих ресурсам ВС, причем = CR SR, где CR - множество вершин, представляющих потребляемые ресурсы, SR - множество вершин, представляющих повторно используемые ресурсы (CR SR = ); = ), а E - множество дуг графа:
E ( ) ( ),
причем элементы графа обладают следующими свойствами:
Ri
- вершина,
представляющая повторно используемый
ресурс RiSR,
имеет пометку - пару (ci,
ti
), где ci
- емкость данного ресурса, а ti
- количество единиц ресурса, доступных
для распределения (свободных) в данный
момент;Ri - вершина, представляющая потребляемый ресурс RiCR, имеет пометку - неотрицательное целое число ti, обозначающее число доступных для распределения в данный момент единиц этого ресурса;
pj
- вершина, представляющая процесс pj
в системе;
pj
k
Ri
- дуга (pj,
Ri)
с весом |(pj,
Ri)|=k,
представляющая вып
олненный
процессом pj
,
но пока не удовлетворенный запрос на
k
единиц повторно используемого ресурса
Ri
SR
;
каждый запрос, выполняемый процессом pj на ресурс Ri SR, должен удовлетворять ограничению:
| ( pj , Ri ) | ci, - | ( Ri, pj ) | , то есть сумма выполненных распределений и запросов конкретного повторно используемого ресурса относительно любого из процессов не может превышать общего количества единиц этого ресурса, имеющихся в системе, в противном случае запрос считается ошибочным и не может быть выполнен;
pj
k
Ri
- дуга (pj,
Ri)
с весом |(pj,
Ri)
|=k,
представляющая выполненный процессом
pj
,
но пока не удовлетворенный запрос на
k
единиц потребляемого ресурса Ri
CR
;R
i
k
pj
- ребро (Ri,
pj)
с весом |(Ri,
pj)|=k,
представляющее все распределения
ресурса Ri
SR
процессу pj
по его удовлетворенным запросам ; в
общей сложности в системе для каждого
ресурса Ri
SR
может быть сделано не более чем ci
назначений, то есть
n
| ( Ri, pj ) | ci ;
j = 1
для каждого ресурса Ri CR существует непустое множество процессов-производителей этого ресурса (Ri) и граф обобщенных ресурсов содержит дугу производителя (Ri, pj) для каждого pj (Ri) по всем RiCR;
Ri
pj
- обозначение ребра
(дуги) производителя ресурса Ri
;ребра производителя являются постоянными
и никогда не уничтожаются.
Процесс pj заблокирован, если он не способен выполнить ни одну из трех операций, изменяющих состояние системы. Эта ситуация может возникнуть только тогда, когда процесс выдал запросы, которые не могут быть удовлетворены за счет имеющихся в данном состоянии ресурсов, то есть процесс pj заблокирован, если существует по крайней мере один ресурс Ri такой, что
| ( pj , Ri ) | > ti .
Выгодное состояние - это такое состояние системы, в котором все процессы, имеющие запросы, заблокированы.
