- •Список вопросов для подготовки к экзамену по сппо (2013-2014 уч. Год)
- •Понятие программного обеспечения (по). Классификация программного обеспечения по выполняемым функциям, структура системного по. Основные свойства системного программного обеспечения.
- •1)Управление процессами (программ во время выполнения);
- •Классификация ос (по структуре и архитектурным принципам построения, по режимам работы). Примеры.
- •Программные методы реализации взаимного исключения: примеры на псевдокоде, анализ и сравнение вариантов. Примеры.
- •Понятие семафора, семафорные примитивы, бинарные и считающие семафоры. Примеры объектов диспетчеризации в ms Windows, которые могут использоваться как «семафоры».
- •Применение бинарных семафоров для реализации взаимного исключения и синхронизации процессов. Примеры.
- •Общие семафоры, решение задачи «писателей и читателей» при работе с циклическим буфером. Сравнить варианты решения.
- •Задача предотвращения тупика, подходы к решению, анализ Примеры.
- •Проблема тупика и задачи, связанные с решением проблемы тупика: формулировки задач и подходы к решению. Примеры.
- •Модель системы с повторно используемыми ресурсами (граф повторно используемых ресурсов). Примеры.
- •Модель системы с потребляемыми ресурсами (граф потребляемых ресурсов). Примеры.
- •Система с повторно используемыми и потребляемыми ресурсами (граф обобщённых ресурсов). Примеры.
- •Решение задачи распознавания тупика для систем с повторно используемыми ресурсами: основная теорема о тупике. Алгоритм редукции. Примеры редукции.
- •Распознавание тупиков в системах с повторно используемыми ресурсами с ограничениями на выполнение операций. Примеры.
- •Распознавание тупиков в системах с потребляемыми ресурсами и в системах с обобщёнными ресурсами: алгоритм редукции. Примеры.
- •Распознавание тупиков в системах с потребляемыми ресурсами и в системах с обобщёнными ресурсами: системы с ограничениями на выполнение операций. Примеры.
- •Вывод системы из тупика. Общий подход к решению задачи и частный случай.
- •Обходы тупиков. Алгоритм банкира. Примеры.
- •Иерархия запоминающих устройств вс, характеристики устройств и связь, механизмы создания иерархии. Примеры.
- •Способы распределения памяти: статическое и динамическое распределение, связные и несвязные распределения. Сравнение.
- •Сегментная организация памяти. Страничная организация памяти. Сегментно-страничная организация памяти. Аппаратная поддержка в процессорах Intel.
- •Общие принципы организации виртуальной памяти. Управление виртуальной памятью: стратегии загрузки, стратегии размещения, стратегии замещения. Пример реализации в Intel.
- •Средства защиты памяти: изоляция адресных пространств. Поддержка в Intel.
- •Средства защиты памяти: защита по уровням привилегий, привилегированные команды и команды, чувствительные к уровням привилегий). Поддержка в Intel.
- •Статическая и динамическая компоновка программ: определение, сравнение и примеры.
- •Упрощённая структура объектного модуля и принцип работы связывающего загрузчика, редактора связей (одно- и двухпроходовые). Упрощённая структура исполнимого файла.
- •Понятие прерывания, классификация прерываний. Примеры (Intel).
- •Общая схема обработки прерываний, программно-аппаратная реализация, аппаратная поддержка механизма прерываний в Intel.
- •Структурная схема обработки исключений в Windows (seh): обработка завершения и локальная раскрутка.
- •Структурная схема обработки исключений в Windows (seh): обработка исключений и глобальная раскрутка.
- •Определение файла, атрибуты файлов и именование файлов, понятие каталога (справочника, директории, папки). Примеры.
- •Понятие и функции файловой системы как подсистемы ос.
- •Логическая и физическая организация файлов. Буферизация ввода/вывода. Примеры.
- •Логическая организация файлов: файлы с последовательной организацией и индексированные файлы. Поиск на внешних устройствах, b-деревья: определение и построение, выполнение операций. Примеры.
- •Управление внешней памятью: карты памяти и списки. Примеры (fat, ntfs).
- •Управление вводом/выводом, понятие драйвера внешнего устройства, драйверы виртуальных устройств.
- •Понятие драйвера файловой системы. Иерархическая организация файловых систем. Примеры.
- •Понятие защищённой вс. Классификация угроз и вторжений. Структура системы защиты.
- •Контроль прав доступа и матрица прав доступа как математическая модель защиты объектов. Примеры: одноранговое разделение ресурсов и защита на уровне пользователей.
- •Криптографическая защита. Понятие ключа. Симметричное и асимметричное шифрование. Понятие криптографического протокола. Понятие цифровой подписи.
- •Примеры задач по обработке исключений
- •Задания по разработке командных файлов и изучение команд пакетной обработки
- •Задачи на использование программных методов решения проблемы взаимного исключения
- •Задачи на работу с семафорами
- •Решение:
- •Решение:
- •Задачи на понимание алгоритмов решения задач, связанных с тупиками
- •Задачи на анализ состояний системы для выявления тупиков
- •Задачи по теме «Хранение и поиск информации на взу»
- •Файлы для подготовки
Понятие семафора, семафорные примитивы, бинарные и считающие семафоры. Примеры объектов диспетчеризации в ms Windows, которые могут использоваться как «семафоры».
Семафор - это защищенная переменная, значение которой можно опрашивать и менять только при помощи специальных операций (семафорных примитивов) P и V и операции инициализации.
Двоичные (бинарные) семафоры -только значения 0 или 1 ( закрыт и открыт)
Считающие семафоры (семафоры со счетчиками) - целые значения. Считающий семафор открыт, если значение счетчика больше 0.
Примитив P - процедура, сбрасывающая или уменьшающая значение семафора на 1, эта процедура заключает в себе потенциальное ожидание вызывающих процессов в том случае, если к моменту выполнения этой процедуры процессом соответствующий семафор закрыт. Если s > 0 то s:=s-1 иначе (ожидать на s).Процедура V отрывает семафор или увеличивает значение счетчика на 1. Таким образом, вызов этой процедуры может активизировать некоторый ожидающий открытия семафора процесс. если (имеются процессы, которые ожидают на s), то (разрешить одному из них продолжить работу), иначе s:=s+1
Если для счетчика допускаются только целые неотрицательные значения, то смысл его значения - счетчик количества некоторого ресурса. Процедура P - процедура запроса единицы этого ресурса, запрос может быть удовлетворен или может заблокировать процесс, выполнивший его, если количество ресурса равно 0. Процедура V - процедура освобождения единицы ресурса.
Если счетчик может принимать и отрицательные целые значения, то отрицательное значение семафора означает длину очереди процессов, попытавшихся пройти через семафор (запросивших соответствующий ему ресурс).
Семафор |
Применение |
Mutex |
Используется как классические семафоры с примитивами P() и V() для реализации взаимного исключения и синхронизации задач |
Событие |
Применяется для передачи управляющих сигналов между процессами о выполнении той или иной активности |
MuxWait |
Используются для того, чтобы процесс или нить могли ожидать на нескольких семафорах сразу |
Применение бинарных семафоров для реализации взаимного исключения и синхронизации процессов. Примеры.
Двоичные (бинарные) семафоры могут принимать значения 0 или 1 (могут находиться в двух состояниях: закрыт и открыт).
Операции выборки значения семафорной переменной S, ее изменения и сохранения не могут быть прерваны. Во время выполнения последовательности этих операций в процедурах P и V, вызванных одним процессом, над каким-либо семафором он недоступен для других процессов. hold(S) - означает перевод процесса в состояние ожидания на семафоре S и выход из P. Это ожидание не должно быть “занятым” (то есть нельзя зациклить процедуру P на проверке состояния семафора, так как в этом случае ни один другой процесс не смог бы получить доступ к этой защищенной переменной даже для выполнения операции открытия этого семафора). Для устранения занятого ожидания с каждым семафором связывается список блокирования (список процессов, ожидающих открытия семафора). Процесс, который не может продолжиться после выполнения P(S), будет заблокирован с сохранением его состояния в соответствующем S списке блокирования.
release(S) - выполняет проверку списка блокирования, связанного с семафором S, если этот список не пуст, то активизируется некоторый процесс из этого списка, пропускается через семафор, а значение семафора изменяется при этом соответствующим образом (бинарный семафор снова закрывается, а для семафора со счетчиком возвращенная процессом, выполнившем операцию V(S), единица ресурса передается очередному процессу из списка).
Ниже приведено описание семафорных примитивов для бинарных и считающих семафоров. Алгоритмы выполнения семафорных операций можно представить так:
|
S |
Бинарный семафор |
Считающий семафор с неотрицательными значениями счетчика |
Общий считающий семафор
|
||
|---|---|---|---|---|---|---|
|
P(S) |
if S = 0 then Hold(S) else S := 0 |
if S = 0 then Hold(S) else S := S - 1 |
S := S - 1; if S < 0 then Hold(S) |
||
|
V(S) |
if not Empty(S) then Release (S) else S := 1 ; |
if not Empty(S) then Release (S) else S := S + 1 ; |
S := S + 1 ; if S<= 0 then Release (S) |
||
Процедура инициализации |
Первый процесс |
Второй процесс |
||||
procedure INIT; binary semaphore B ; begin B := 1 ; {Открыт} start(P1) ; start(P2) end INIT .
|
process P1; binary semaphore B ; begin while true do begin BEFORE1 ; P(B) ; CS1 ; V(B) ; AFTER1 ; end end P1 . |
process P2; binary semaphore B ; begin while true do begin BEFORE2 ; P(B) ; CS2 ; V(B) ; AFTER2 ; end end P2 . |
||||
Когда какой-либо процесс подходит к выполнению своей критической секции, он пытается пройти через семафор. Процедура P позволяет продолжить выполнение процесса только в том случае, когда семафор открыт. Причем до выполнения процедуры V семафор оказывается закрытым. Любой процесс, пытающийся выполнить P в то время, как семафор закрыт, будет заблокирован и не сможет продолжить выполнение и попасть в свою критическую секцию. Открыть же семафор может только тот процесс, который выходит из своей критической секции, освобождая разделяемые ресурсы.
Семафоры могут использоваться не только для решения проблемы взаимного исключения, но и как средство синхронизации выполнения процессов, определенные функции которых должны быть согласованы, упорядочены во времени. Например, существуют два процесса P1 и P2.. Первый процесс должен выполнить процедуру BEFORE до того как второй процесс сможет выполнить процедуру AFTER. Если второй процесс подойдет к выполнению процедуры AFTER раньше, чем первый процесс завершит выполнение процедуры BEFORE, он должен ждать ее завершения.
В качестве синхронизирующего сигнала, позволяющего согласовать порядок выполнения процедур, может использоваться сброс/установка значения бинарного семафора.
В процедуре инициализации устанавливается признак того, что процедура BEFORE еще не выполнена первым процессом - закрывается двоичный семафор. Этот семафор проверяется вторым процессом перед выполнением им своей процедуры AFTER. Если при подходе процесса к выполнению этой процедуры семафор оказывается закрытым, первый процесс еще не выполнил свою процедуру BEFORE, выполнение которой должно предшествовать вызову AFTER. Первый процесс, выполнив свою процедуру BEFORE, открывает семафор, передавая таки образом сигнал разрешения выполнения процедуры AFTER во втором процессе.
Процедура инициализации |
Первый процесс |
Второй процесс |
procedure INIT; binary semaphore B ; begin B := 0 ; {Закрыт} start(P1) ; start(P2) end INIT .
|
process P1; binary semaphore B ; begin ... BEFORE ; V(B); {Разрешение для P2 } {выполнить AFTER} ... end P1 . |
process P2; binary semaphore B ; begin ... P(B) ; {Ожидание от P1} {разрешения на выполнение} AFTER ; ... end P2 . |
