- •Список вопросов для подготовки к экзамену по сппо (2013-2014 уч. Год)
- •Понятие программного обеспечения (по). Классификация программного обеспечения по выполняемым функциям, структура системного по. Основные свойства системного программного обеспечения.
- •1)Управление процессами (программ во время выполнения);
- •Классификация ос (по структуре и архитектурным принципам построения, по режимам работы). Примеры.
- •Программные методы реализации взаимного исключения: примеры на псевдокоде, анализ и сравнение вариантов. Примеры.
- •Понятие семафора, семафорные примитивы, бинарные и считающие семафоры. Примеры объектов диспетчеризации в ms Windows, которые могут использоваться как «семафоры».
- •Применение бинарных семафоров для реализации взаимного исключения и синхронизации процессов. Примеры.
- •Общие семафоры, решение задачи «писателей и читателей» при работе с циклическим буфером. Сравнить варианты решения.
- •Проблема тупика и задачи, связанные с решением проблемы тупика: формулировки задач и подходы к решению. Примеры.
- •Задача предотвращения тупика, подходы к решению, анализ Примеры.
- •Модель системы с повторно используемыми ресурсами (граф повторно используемых ресурсов). Примеры.
- •Модель системы с потребляемыми ресурсами (граф потребляемых ресурсов). Примеры.
- •Система с повторно используемыми и потребляемыми ресурсами (граф обобщённых ресурсов). Примеры.
- •Решение задачи распознавания тупика для систем с повторно используемыми ресурсами: основная теорема о тупике. Алгоритм редукции. Примеры редукции.
- •Распознавание тупиков в системах с повторно используемыми ресурсами с ограничениями на выполнение операций. Примеры.
- •Распознавание тупиков в системах с потребляемыми ресурсами и в системах с обобщёнными ресурсами: алгоритм редукции. Примеры.
- •Распознавание тупиков в системах с потребляемыми ресурсами и в системах с обобщёнными ресурсами: системы с ограничениями на выполнение операций. Примеры.
- •Вывод системы из тупика. Общий подход к решению задачи и частный случай.
- •Обходы тупиков. Алгоритм банкира. Примеры.
- •Иерархия запоминающих устройств вс, характеристики устройств и связь, механизмы создания иерархии. Примеры.
- •Способы распределения памяти: статическое и динамическое распределение, связные и несвязные распределения. Сравнение.
- •Сегментная организация памяти. Страничная организация памяти. Сегментно-страничная организация памяти. Аппаратная поддержка в процессорах Intel.
- •Общие принципы организации виртуальной памяти. Управление виртуальной памятью: стратегии загрузки, стратегии размещения, стратегии замещения. Пример реализации в Intel.
- •Средства защиты памяти: изоляция адресных пространств. Поддержка в Intel.
- •Средства защиты памяти: защита по уровням привилегий, привилегированные команды и команды, чувствительные к уровням привилегий). Поддержка в Intel.
- •Статическая и динамическая компоновка программ: определение, сравнение и примеры.
- •Упрощённая структура объектного модуля и принцип работы связывающего загрузчика, редактора связей (одно- и двухпроходовые). Упрощённая структура исполнимого файла.
- •Понятие прерывания, классификация прерываний. Примеры (Intel).
- •Общая схема обработки прерываний, программно-аппаратная реализация, аппаратная поддержка механизма прерываний в Intel.
- •Структурная схема обработки исключений в Windows (seh): обработка завершения и локальная раскрутка.
- •Структурная схема обработки исключений в Windows (seh): обработка исключений и глобальная раскрутка.
- •Определение файла, атрибуты файлов и именование файлов, понятие каталога (справочника, директории, папки). Примеры.
- •Понятие и функции файловой системы как подсистемы ос.
- •Логическая и физическая организация файлов. Буферизация ввода/вывода. Примеры.
- •Логическая организация файлов: файлы с последовательной организацией и индексированные файлы. Поиск на внешних устройствах, b-деревья: определение и построение, выполнение операций. Примеры.
- •Управление внешней памятью: карты памяти и списки. Примеры (fat, ntfs).
- •Управление вводом/выводом, понятие драйвера внешнего устройства, драйверы виртуальных устройств.
- •Понятие драйвера файловой системы. Иерархическая организация файловых систем. Примеры.
- •Понятие защищённой вс. Классификация угроз и вторжений. Структура системы защиты.
- •Контроль прав доступа и матрица прав доступа как математическая модель защиты объектов. Примеры: одноранговое разделение ресурсов и защита на уровне пользователей.
- •Криптографическая защита. Понятие ключа. Симметричное и асимметричное шифрование. Понятие криптографического протокола. Понятие цифровой подписи.
- •Примеры задач по обработке исключений
- •Задания по разработке командных файлов и изучение команд пакетной обработки
- •Задачи на использование программных методов решения проблемы взаимного исключения
- •Задачи на работу с семафорами
- •Решение:
- •Решение:
- •Задачи на понимание алгоритмов решения задач, связанных с тупиками
- •Задачи на анализ состояний системы для выявления тупиков
- •Задачи по теме «Хранение и поиск информации на взу»
- •Файлы для подготовки
Система с повторно используемыми и потребляемыми ресурсами (граф обобщённых ресурсов). Примеры.
Граф обобщенных ресурсов - это ориентированный двудольный граф
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 ;
ребра производителя являются постоянными и никогда не уничтожаются.
Решение задачи распознавания тупика для систем с повторно используемыми ресурсами: основная теорема о тупике. Алгоритм редукции. Примеры редукции.
Чтобы распознать состояние тупика в системе необходимо для каждого существующего в ней процесса определить сможет ли он выполняться сейчас или когда-либо. При этом по определению процесс находится в тупике только в том случае, когда он не сможет развиваться ни при каких условиях.
Наиболее общий способ распознавания тупика (моделирования благоприятного развития системы) основан на редукции (сокращении) графов ресурсов, представляющих исследуемое состояние системы.
Порядок действий при редукции графа ПИР процессом pi выглядит следующим образом:
удалить все ребра запросов (pi, Rj), исходящие из вершины, представляющей pi;
удалить все ребра (Rj, pi), показывающие распределение ресурсов процессу pi, причем для каждого ресурса Rj , для которого удаляется ребро (Rj, pi), изменить пометку соответствующей ему вершины: ti := ti + r, где r = |(Rj, pi)| - вес удаляемого ребра.
Освобождение ресурсов при выполнения редукции одним процессом может разблокировать другие процессы, запрашивающие эти ресурсы. Если это необходимо, то редукцию можно продолжить с помощью других процессов до получения несокращаемого графа повторно используемых ресурсов.
Граф ресурсов является несокращаемым, если он не может быть сокращен ни одним процессом (все процессы либо заблокированы, либо представляющие их вершины являются изолированными).
Граф ресурсов является полностью сокращаемым, если существует последовательность сокращений, которые удаляют все ребра графа.
Пример редукции графа ПИР приведен на рис.2.13.
Для графов ПИР порядок сокращений несущественен. Что доказывается следующей леммой:
Все последовательности сокращений данного графа ПИР приводят к одному и тому же несокращаемому графу.
(3, 0) (3, 2) (3, 3)
R
1
R1
R1
2 1 1
1 1
P
1
P2
P1 P2 P1 P2 P1 P2
1 1 1 1 1
R
2
R2
R2
(2, 1) (2, 1) (2, 2)
Рис.2.13. Последовательность сокращений графа ПИР
Состояние системы S есть состояние тупика тогда и только тогда, когда граф ПИР для состояния S не является полностью сокращаемым.
Данная теорема позволяет построить алгоритм распознавания тупика в системе: следует сократить граф ПИР, представляющий исследуемое состояние системы, если редукция приводит к вполне несвязному графу, то исходное состояние не было состоянием тупика, если же в результате сокращений будет получен несокращаемый граф, в котором останутся дуги, то исходное состояние является тупиковым, а несокращенные дуги показывают процессы, оказавшиеся в тупике, и его причину.
Алгоритм редукции для распознавания тупика может быть выполнен простым перебором всех вершин, соответствующих процессам, с выполнением редукции по незаблокированным процессам, имеющим запросы и/или владеющим ресурсами.
Более эффективный алгоритм может быть построен, если хранить дополнительную информацию о запросах, например, счетчики блокирующих запросов, и упорядочить запросы на ресурсы по их величинам.
Решение задачи распознавания тупика для систем с повторно используемыми ресурсами: частные случаи (системы с единичными ресурсами, системы с ограничениями на запросы, системы в выгодном состоянии).
Для систем с потребляемыми ресурсами алгоритм редукции выполняется иначе - сокращение графа процессом pi состоит из следующих операций:
удовлетворить все запросы процесса pi и удалить все ребра запросов (pi, Rj), исходящие из вершины, представляющей pi, уменьшив соответствующие пометки вершин (счетчики доступных единиц), представляющих выделенные ресурсы, на величины выполненных запросов;
для всех потребляемых ресурсов Rj таких, что процесс pi является их производителем, удалить все ребра (Rj, pi) производителей, освободив при этом достаточное количество ресурсов для удовлетворения всех имеющихся на них запросов от всех процессов в системе (для того чтобы не усложнять работы вычислением этого числа, введем специальное число такое, что для любого целого k выполняются условия: > k, + k = - k = ), пометку вершин, для которых данный процесс был производителем, заменяем на .
Для системы с потребляемыми ресурсами не выполняется приведенная выше лемма, то есть порядок сокращений при редукции графа потребляемых ресурсов в общем случае влияет на результат редукции (полученные после всех возможных сокращений несокращаемые графы потребляемых ресурсов могут быть различными). Пример результатов выполнения различных цепочек сокращений приведен на рис.2.14.
1
1
2
P
1
1 R1
P2
R2
P3
1 1
(а)
P1 R1 P2 R2 P3
(б)
1
P 1 1 R1 P2 R2 P3
0
(в)
Рис.2.14. Пример сокращений графа потребляемых ресурсов:
(а) исходный граф;
(б) результат редукции, начатой процессом p1;
(в) результат редукции, начатой процессом p2
Узел в ориентированном графе (N, E) есть подмножество вершин M N таких, что для всех вершин v M: P(v) = M (здесь P(v) - множество всех вершин, достижимых из вершины v).
Следующая теорема дает достаточное условие тупика для системы в выгодном состоянии.
Если состояние системы выгодное, то наличие узла в соответствующем графе повторно используемых ресурсов является достаточным условием тупика.
Приведенный ниже алгоритм дает возможность обнаружить узел в графе. Он основан на том, что узел по определению не может содержать вершину сток (сток - это вершина v, из которой не выходит ни одной дуги, то есть полустепень исхода такой вершины равна 0: od(v) = 0), а также вершины, из которых можно попасть в вершину-сток.
Sink := { v N | od(v) = 0 }
for all v Sink do
for all u : (u, v) E do
if u Sink then Sink := Sink { u } ;
if N Sink then write (‘В графе есть узел !’)
Алгоритм распознавания цикла в графе, время выполнения которого пропорционально числу дуг в графе (m n в худшем случае), основан на последовательном исключении дуг, направленных в стоки, его можно записать следующим образом (через w(v) обозначено число ребер, выходящих из вершины v):
Sink := { v N | od(v) = 0 }
for all v Sink do
begin
for all u : (u, v) E do
begin
w(u) := w(u) - 1 ;
if w(u) = 0 then Sink := Sink { u } ;
end
end
if Sink N then write (‘В графе есть цикл !’)
