- •Список вопросов для подготовки к экзамену по сппо (2013-2014 уч. Год)
- •Понятие программного обеспечения (по). Классификация программного обеспечения по выполняемым функциям, структура системного по. Основные свойства системного программного обеспечения.
- •1)Управление процессами (программ во время выполнения);
- •Классификация ос (по структуре и архитектурным принципам построения, по режимам работы). Примеры.
- •Программные методы реализации взаимного исключения: примеры на псевдокоде, анализ и сравнение вариантов. Примеры.
- •Понятие семафора, семафорные примитивы, бинарные и считающие семафоры. Примеры объектов диспетчеризации в ms Windows, которые могут использоваться как «семафоры».
- •Применение бинарных семафоров для реализации взаимного исключения и синхронизации процессов. Примеры.
- •Общие семафоры, решение задачи «писателей и читателей» при работе с циклическим буфером. Сравнить варианты решения.
- •Проблема тупика и задачи, связанные с решением проблемы тупика: формулировки задач и подходы к решению. Примеры.
- •Задача предотвращения тупика, подходы к решению, анализ Примеры.
- •Модель системы с повторно используемыми ресурсами (граф повторно используемых ресурсов). Примеры.
- •Модель системы с потребляемыми ресурсами (граф потребляемых ресурсов). Примеры.
- •Система с повторно используемыми и потребляемыми ресурсами (граф обобщённых ресурсов). Примеры.
- •Решение задачи распознавания тупика для систем с повторно используемыми ресурсами: основная теорема о тупике. Алгоритм редукции. Примеры редукции.
- •Распознавание тупиков в системах с повторно используемыми ресурсами с ограничениями на выполнение операций. Примеры.
- •Распознавание тупиков в системах с потребляемыми ресурсами и в системах с обобщёнными ресурсами: алгоритм редукции. Примеры.
- •Распознавание тупиков в системах с потребляемыми ресурсами и в системах с обобщёнными ресурсами: системы с ограничениями на выполнение операций. Примеры.
- •Вывод системы из тупика. Общий подход к решению задачи и частный случай.
- •Обходы тупиков. Алгоритм банкира. Примеры.
- •Иерархия запоминающих устройств вс, характеристики устройств и связь, механизмы создания иерархии. Примеры.
- •Способы распределения памяти: статическое и динамическое распределение, связные и несвязные распределения. Сравнение.
- •Сегментная организация памяти. Страничная организация памяти. Сегментно-страничная организация памяти. Аппаратная поддержка в процессорах Intel.
- •Общие принципы организации виртуальной памяти. Управление виртуальной памятью: стратегии загрузки, стратегии размещения, стратегии замещения. Пример реализации в Intel.
- •Средства защиты памяти: изоляция адресных пространств. Поддержка в Intel.
- •Средства защиты памяти: защита по уровням привилегий, привилегированные команды и команды, чувствительные к уровням привилегий). Поддержка в Intel.
- •Статическая и динамическая компоновка программ: определение, сравнение и примеры.
- •Упрощённая структура объектного модуля и принцип работы связывающего загрузчика, редактора связей (одно- и двухпроходовые). Упрощённая структура исполнимого файла.
- •Понятие прерывания, классификация прерываний. Примеры (Intel).
- •Общая схема обработки прерываний, программно-аппаратная реализация, аппаратная поддержка механизма прерываний в Intel.
- •Структурная схема обработки исключений в Windows (seh): обработка завершения и локальная раскрутка.
- •Структурная схема обработки исключений в Windows (seh): обработка исключений и глобальная раскрутка.
- •Определение файла, атрибуты файлов и именование файлов, понятие каталога (справочника, директории, папки). Примеры.
- •Понятие и функции файловой системы как подсистемы ос.
- •Логическая и физическая организация файлов. Буферизация ввода/вывода. Примеры.
- •Логическая организация файлов: файлы с последовательной организацией и индексированные файлы. Поиск на внешних устройствах, b-деревья: определение и построение, выполнение операций. Примеры.
- •Управление внешней памятью: карты памяти и списки. Примеры (fat, ntfs).
- •Управление вводом/выводом, понятие драйвера внешнего устройства, драйверы виртуальных устройств.
- •Понятие драйвера файловой системы. Иерархическая организация файловых систем. Примеры.
- •Понятие защищённой вс. Классификация угроз и вторжений. Структура системы защиты.
- •Контроль прав доступа и матрица прав доступа как математическая модель защиты объектов. Примеры: одноранговое разделение ресурсов и защита на уровне пользователей.
- •Криптографическая защита. Понятие ключа. Симметричное и асимметричное шифрование. Понятие криптографического протокола. Понятие цифровой подписи.
- •Примеры задач по обработке исключений
- •Задания по разработке командных файлов и изучение команд пакетной обработки
- •Задачи на использование программных методов решения проблемы взаимного исключения
- •Задачи на работу с семафорами
- •Решение:
- •Решение:
- •Задачи на понимание алгоритмов решения задач, связанных с тупиками
- •Задачи на анализ состояний системы для выявления тупиков
- •Задачи по теме «Хранение и поиск информации на взу»
- •Файлы для подготовки
Примеры задач по обработке исключений
1. Какое значение возвращает функция:
DWORD FuncCounter(void)
{ DWORD dwTemp = 0;
while (dwTemp < 10)
{
__try
{ if (dwTemp == 2)
continue;
if (dwTemp == 3)
break;
}
__finally
{ dwTemp ++; }
dwTemp ++;
}
dwTemp +=10;
return (dwTemp);
}
2. Какое значение возвращает функция:
DWORD FuncExm (void)
{ DWORD dwTemp = 0;
.......................................
__try
{
WaitForSingleObject (g_hSem, INFINITE) ;
g_dwProtectedData = 5 ;
dwTemp = g_dwProtectedData ;
return (dwTemp);
}
__finally
{
dwTemp = g_dwProtectedData + 100 ;
ReleaseSemaphore (g_hSem, 1, NULL) ;
return (dwTemp) ;
}
dwTemp = 100 ;
return (dwTemp);
}
3. Что явится результатом выполнения этой функции:
void ExceptFun (void)
{ int x = 0;
char * lpBuffer = NULL ;
__try {
* lpBuffer = ‘A’ ;
x = 100 / x ;
}
__except (ExceptFilter(&lpBuffer)) {
MessageBox(NULL, “An Exception occurred”, NULL, MB_OK) ;
}
MessageBox(NULL, “Function completed”, NULL, MB_OK) ;
}
LONG ExceptFilter (char **lplpBuffer) {
if (* lplpBuffer == NULL)
{ * lplpBuffer = g_szBuffer ; // Global buffer pointer
return (EXCEPTION_CONTINUE_EXECUTION) ;
}
return (EXCEPTION_EXECUTE_HANDLER) ;
}
4. Что явится результатом выполнения этой функции:
void ExceptFun (void)
{ int x = 0;
char * lpBuffer = NULL ;
__try {
* lpBuffer = ‘A’ ;
x = 100 / x ;
}
__except (ExceptFilter(&lpBuffer)) {
MessageBox(NULL, “An Exception occurred”, NULL, MB_OK) ;
}
MessageBox(NULL, “Function completed”, NULL, MB_OK) ;
}
LONG ExceptFilter (char **lplpBuffer) {
if (* lplpBuffer == NULL)
{ * lplpBuffer = g_szBuffer ; // Global buffer pointer
}
return (EXCEPTION_EXECUTE_HANDLER) ;
}
5. При выполнении программы произошло исключение. Какое значение получит переменная I после выполнения данного фрагмента программы при условии, что I изменяется только в указанных операторах, и для данного исключения (покажите порядок вычисления по шагам):
1. Значение выражения Filter1 = EXCEPTION_CONTINUE_SEARCH
Значение выражения Filter2 = EXCEPTION_CONTINUE_SEARCH
Значение выражения Filter3 = EXCEPTION_EXECUTE_HANDLE
2. Значение выражения Filter1 = EXCEPTION_CONTINUE_SEARCH
Значение выражения Filter2 = EXCEPTION_CONTINUE_SEARCH
Значение выражения Filter3 = EXCEPTION_CONTINUE_EXECUTION
3. Значение выражения Filter1 = EXCEPTION_CONTINUE_SEARCH
Значение выражения Filter2 = EXCEPTION_CONTINUE_EXECUTION
Значение выражения Filter3 = EXCEPTION_EXECUTE_HANDLE
(Символом отмечено место в программе, где произошло исключение)
Пример 1.
__try { ........ I = 0 ; ............
__try { ........ I = I + 1 ; ............
__try { ........ I = I + 2 ; ............
__try { ........ I = I + 3 ; ............
__try { .... .... I = I + 4 ; ............ }
__except ( Filter1 ){ .... I = 0; ..... }
__finally { ..... I = I - 3 ; ..... }
__except (Filter2 ) { .... I = 100; .... }
__finally { ..... I = I - 1 ; ..... }
__except (Filter3 ) { .... I = 200; .... }
....... I = ?
Пример 2.
__try { ........ I = 0 ; ............
__try { ........ I = I + 1 ; ............
__try { ........ I = I + 2 ; ............
__try { ........ I = I + 3 ; ..... .....
__try { .... I = I + 4 ; ......
__try {…}
__finally { … I= 1000; }
}
__except ( Filter1 ){ .... I = 0; ..... }
__finally { ..... I = I – 3 ; ..... }
__except (Filter2 ) { .... I = 100; .... }
__finally { ..... I = I – 1 ; ..... }
__except (Filter3 ) { .... I = 200; .... }
....... I = ?
