
- •Список вопросов для подготовки к экзамену по сппо (2013-2014 уч. Год)
- •Понятие программного обеспечения (по). Классификация программного обеспечения по выполняемым функциям, структура системного по. Основные свойства системного программного обеспечения.
- •1)Управление процессами (программ во время выполнения);
- •Классификация ос (по структуре и архитектурным принципам построения, по режимам работы). Примеры.
- •Программные методы реализации взаимного исключения: примеры на псевдокоде, анализ и сравнение вариантов. Примеры.
- •Понятие семафора, семафорные примитивы, бинарные и считающие семафоры. Примеры объектов диспетчеризации в ms Windows, которые могут использоваться как «семафоры».
- •Применение бинарных семафоров для реализации взаимного исключения и синхронизации процессов. Примеры.
- •Общие семафоры, решение задачи «писателей и читателей» при работе с циклическим буфером. Сравнить варианты решения.
- •Проблема тупика и задачи, связанные с решением проблемы тупика: формулировки задач и подходы к решению. Примеры.
- •Задача предотвращения тупика, подходы к решению, анализ Примеры.
- •Модель системы с повторно используемыми ресурсами (граф повторно используемых ресурсов). Примеры.
- •Модель системы с потребляемыми ресурсами (граф потребляемых ресурсов). Примеры.
- •Система с повторно используемыми и потребляемыми ресурсами (граф обобщённых ресурсов). Примеры.
- •Решение задачи распознавания тупика для систем с повторно используемыми ресурсами: основная теорема о тупике. Алгоритм редукции. Примеры редукции.
- •Распознавание тупиков в системах с повторно используемыми ресурсами с ограничениями на выполнение операций. Примеры.
- •Распознавание тупиков в системах с потребляемыми ресурсами и в системах с обобщёнными ресурсами: алгоритм редукции. Примеры.
- •Распознавание тупиков в системах с потребляемыми ресурсами и в системах с обобщёнными ресурсами: системы с ограничениями на выполнение операций. Примеры.
- •Вывод системы из тупика. Общий подход к решению задачи и частный случай.
- •Обходы тупиков. Алгоритм банкира. Примеры.
- •Иерархия запоминающих устройств вс, характеристики устройств и связь, механизмы создания иерархии. Примеры.
- •Способы распределения памяти: статическое и динамическое распределение, связные и несвязные распределения. Сравнение.
- •Сегментная организация памяти. Страничная организация памяти. Сегментно-страничная организация памяти. Аппаратная поддержка в процессорах Intel.
- •Общие принципы организации виртуальной памяти. Управление виртуальной памятью: стратегии загрузки, стратегии размещения, стратегии замещения. Пример реализации в Intel.
- •Средства защиты памяти: изоляция адресных пространств. Поддержка в Intel.
- •Средства защиты памяти: защита по уровням привилегий, привилегированные команды и команды, чувствительные к уровням привилегий). Поддержка в Intel.
- •Статическая и динамическая компоновка программ: определение, сравнение и примеры.
- •Упрощённая структура объектного модуля и принцип работы связывающего загрузчика, редактора связей (одно- и двухпроходовые). Упрощённая структура исполнимого файла.
- •Понятие прерывания, классификация прерываний. Примеры (Intel).
- •Общая схема обработки прерываний, программно-аппаратная реализация, аппаратная поддержка механизма прерываний в Intel.
- •Структурная схема обработки исключений в Windows (seh): обработка завершения и локальная раскрутка.
- •Структурная схема обработки исключений в Windows (seh): обработка исключений и глобальная раскрутка.
- •Определение файла, атрибуты файлов и именование файлов, понятие каталога (справочника, директории, папки). Примеры.
- •Понятие и функции файловой системы как подсистемы ос.
- •Логическая и физическая организация файлов. Буферизация ввода/вывода. Примеры.
- •Логическая организация файлов: файлы с последовательной организацией и индексированные файлы. Поиск на внешних устройствах, b-деревья: определение и построение, выполнение операций. Примеры.
- •Управление внешней памятью: карты памяти и списки. Примеры (fat, ntfs).
- •Управление вводом/выводом, понятие драйвера внешнего устройства, драйверы виртуальных устройств.
- •Понятие драйвера файловой системы. Иерархическая организация файловых систем. Примеры.
- •Понятие защищённой вс. Классификация угроз и вторжений. Структура системы защиты.
- •Контроль прав доступа и матрица прав доступа как математическая модель защиты объектов. Примеры: одноранговое разделение ресурсов и защита на уровне пользователей.
- •Криптографическая защита. Понятие ключа. Симметричное и асимметричное шифрование. Понятие криптографического протокола. Понятие цифровой подписи.
- •Примеры задач по обработке исключений
- •Задания по разработке командных файлов и изучение команд пакетной обработки
- •Задачи на использование программных методов решения проблемы взаимного исключения
- •Задачи на работу с семафорами
- •Решение:
- •Решение:
- •Задачи на понимание алгоритмов решения задач, связанных с тупиками
- •Задачи на анализ состояний системы для выявления тупиков
- •Задачи по теме «Хранение и поиск информации на взу»
- •Файлы для подготовки
Структурная схема обработки исключений в Windows (seh): обработка завершения и локальная раскрутка.
Структурная схема обработки исключений в Win32: Схема обработки прерываний в среде Windows, т.е. сервис, предоставляемый в распоряжение программиста для обеспечения своей собственной обработки прерываний SEH (Structured Exception Handling) состоит из 2-х конструкций: 1) обработка завершения; 2) обработка исключения. {Более ранней схемой обработки исключений было использование конструкции on error (вложить их друг в друга нельзя)} Реализация SEH зависит от особенностей системы программирования, т.к. в распоряжении программиста, работающего в конкретной системе программирования, должны быть средства для описания обработчиков исключений и их подключения. Это средство стало частью Win32 API. При описании конструкций SEH буду использовать примеры на языке C.
Обработка завершения: Назначение этой конструкции состоит в том, чтобы обязательно был выполнен фрагмент кода, завершающий выполнение блока операторов в программе, независимо от условий, которые могут возникнуть при выполнении этих операторов. Конструкция __try {/*защищенный блок*/} __finally {/*обработчик завершения*/} позволяет выполнить обработчик завершения независимо от того, произошла ли ошибка при выполнении операторов защищенного блока: осуществляется корректный выход из любой ситуации, которая может произойти при выполнении операторов защищенного блока.
Пример!: DWORD ProcEx1() {DWORD dwTemp; __try{WaitForSingleObject (hSem, INFINITE); dwTemp=5; return dwTemp} __finally{ReleaseSemaphore (hSem, 1, NULL)}; dwTemp=9;/*никогда не будет выполняется*/ return dwtemp;/*никогда не будет выполняется*/} //всегда возвращает 5.
Пример»: DWORD ProcEx2() {DWORD dwTemp=0; while(dwTemp<10) {__try{if(dwTemp==2) continue; if(dwTemp==3) break;} __finally{dwTemp++;} dwTemp++;} dwTemp+=10; return dwTemp;} //возвращает 14 [!] finally выполняется всегда
Обработка исключений: Конструкция: __try{/*защищенный код*/} __except(фильтр исключений) {/*обработчик исключений*/}
Если при выполнении кода из блока __try {...}, возникает ИС, то ОС перехватит его и приступит к поиску блока __except. Найдя его, она передаст управление фильтру ИС. Фильтр ИС м. получить код ИС и на основе этого кода принять решение, передать управление обработчику или же сказать системе, чтобы она искала предыдущий по вложенности блок __except. Фильтры: 1) EXCEPTION_EXECUTE_HANDLER=1 (говорит системе, что для этого блока __try есть обработчик исключения и он готов обработать это исключение); 2) EXCEPTION_CONTINUE_SEARCH=0 (говорит системе, чтобы она искала предыдущий по вложенности блок __except); 3) EXCEPTION_CONTINUE_EXECUTION=-1 (говорит системе, чтобы она снова продолжала выполнение с того места кода, который вызвал ИС)
Пример3: PBYTE MemDup(PBYTE pbSrc, int cb){PBYTE pbDup=NULL; __try{ pbDup=(PBYTE)malloc(cb); memcpy(pbDup,pbSrc,cb);}/*копируем блок памяти длиной cb байт из pbSrc в pbDup*/ __except(EXCEPTION_EXECUTE_HANDLER) {free(pbDup); pbDup=NULL;} return(pbDup);} //используем EXCEPTION_EXECUTE_HANDLER, чтобы перехватить все исключения, какие могут возникнуть при выполнении кода из блока _try {...}.
Глобальная раскрутка (ГР): Если фильтр ИС возвращает EXCEPTION_EXECUTE_HANDLER, то дальше происходит ГР. ГР приводит к продолжению обработки всех вложенных блоков try-finally, выполнение которой началось вслед за блоком try-except, и только после этого управление получает сам обработчик исключений. Алгоритм работы ГР: 1) Запомнить место нахождения try; 2) Найти самый «нижний» try; 3) WHILE (try не достигнут) DO BEGIN IF (у текущего блока есть finally) THEN (выполнить finally); (найти предыдущий вложенный try) END; 4) Выполнить except.