- •Список вопросов для подготовки к экзамену по сппо (2013-2014 уч. Год)
- •Понятие программного обеспечения (по). Классификация программного обеспечения по выполняемым функциям, структура системного по. Основные свойства системного программного обеспечения.
- •1)Управление процессами (программ во время выполнения);
- •Классификация ос (по структуре и архитектурным принципам построения, по режимам работы). Примеры.
- •Программные методы реализации взаимного исключения: примеры на псевдокоде, анализ и сравнение вариантов. Примеры.
- •Понятие семафора, семафорные примитивы, бинарные и считающие семафоры. Примеры объектов диспетчеризации в ms Windows, которые могут использоваться как «семафоры».
- •Применение бинарных семафоров для реализации взаимного исключения и синхронизации процессов. Примеры.
- •Общие семафоры, решение задачи «писателей и читателей» при работе с циклическим буфером. Сравнить варианты решения.
- •Проблема тупика и задачи, связанные с решением проблемы тупика: формулировки задач и подходы к решению. Примеры.
- •Задача предотвращения тупика, подходы к решению, анализ Примеры.
- •Модель системы с повторно используемыми ресурсами (граф повторно используемых ресурсов). Примеры.
- •Модель системы с потребляемыми ресурсами (граф потребляемых ресурсов). Примеры.
- •Система с повторно используемыми и потребляемыми ресурсами (граф обобщённых ресурсов). Примеры.
- •Решение задачи распознавания тупика для систем с повторно используемыми ресурсами: основная теорема о тупике. Алгоритм редукции. Примеры редукции.
- •Распознавание тупиков в системах с повторно используемыми ресурсами с ограничениями на выполнение операций. Примеры.
- •Распознавание тупиков в системах с потребляемыми ресурсами и в системах с обобщёнными ресурсами: алгоритм редукции. Примеры.
- •Распознавание тупиков в системах с потребляемыми ресурсами и в системах с обобщёнными ресурсами: системы с ограничениями на выполнение операций. Примеры.
- •Вывод системы из тупика. Общий подход к решению задачи и частный случай.
- •Обходы тупиков. Алгоритм банкира. Примеры.
- •Иерархия запоминающих устройств вс, характеристики устройств и связь, механизмы создания иерархии. Примеры.
- •Способы распределения памяти: статическое и динамическое распределение, связные и несвязные распределения. Сравнение.
- •Сегментная организация памяти. Страничная организация памяти. Сегментно-страничная организация памяти. Аппаратная поддержка в процессорах Intel.
- •Общие принципы организации виртуальной памяти. Управление виртуальной памятью: стратегии загрузки, стратегии размещения, стратегии замещения. Пример реализации в Intel.
- •Средства защиты памяти: изоляция адресных пространств. Поддержка в Intel.
- •Средства защиты памяти: защита по уровням привилегий, привилегированные команды и команды, чувствительные к уровням привилегий). Поддержка в Intel.
- •Статическая и динамическая компоновка программ: определение, сравнение и примеры.
- •Упрощённая структура объектного модуля и принцип работы связывающего загрузчика, редактора связей (одно- и двухпроходовые). Упрощённая структура исполнимого файла.
- •Понятие прерывания, классификация прерываний. Примеры (Intel).
- •Общая схема обработки прерываний, программно-аппаратная реализация, аппаратная поддержка механизма прерываний в Intel.
- •Структурная схема обработки исключений в Windows (seh): обработка завершения и локальная раскрутка.
- •Структурная схема обработки исключений в Windows (seh): обработка исключений и глобальная раскрутка.
- •Определение файла, атрибуты файлов и именование файлов, понятие каталога (справочника, директории, папки). Примеры.
- •Понятие и функции файловой системы как подсистемы ос.
- •Логическая и физическая организация файлов. Буферизация ввода/вывода. Примеры.
- •Логическая организация файлов: файлы с последовательной организацией и индексированные файлы. Поиск на внешних устройствах, b-деревья: определение и построение, выполнение операций. Примеры.
- •Управление внешней памятью: карты памяти и списки. Примеры (fat, ntfs).
- •Управление вводом/выводом, понятие драйвера внешнего устройства, драйверы виртуальных устройств.
- •Понятие драйвера файловой системы. Иерархическая организация файловых систем. Примеры.
- •Понятие защищённой вс. Классификация угроз и вторжений. Структура системы защиты.
- •Контроль прав доступа и матрица прав доступа как математическая модель защиты объектов. Примеры: одноранговое разделение ресурсов и защита на уровне пользователей.
- •Криптографическая защита. Понятие ключа. Симметричное и асимметричное шифрование. Понятие криптографического протокола. Понятие цифровой подписи.
- •Примеры задач по обработке исключений
- •Задания по разработке командных файлов и изучение команд пакетной обработки
- •Задачи на использование программных методов решения проблемы взаимного исключения
- •Задачи на работу с семафорами
- •Решение:
- •Решение:
- •Задачи на понимание алгоритмов решения задач, связанных с тупиками
- •Задачи на анализ состояний системы для выявления тупиков
- •Задачи по теме «Хранение и поиск информации на взу»
- •Файлы для подготовки
Сегментная организация памяти. Страничная организация памяти. Сегментно-страничная организация памяти. Аппаратная поддержка в процессорах Intel.
Страничная организация памяти
C
R3
= PDBR (page
Directory Base
Register) – 20-ти разрядный
регистр, в котором хранится корневая
таблица страниц (каталог
страниц/таблица страниц первого уровня).
В этой таблице хранится 1024 записи
(каталог страниц занимает 1 страницу).
Каждая запись содержит ссылку на таблицу
страниц, где хранятся адреса
физических страниц.
Основное применение страничной организации памяти связано с организацией виртуальной памяти. Независимо от того, содержит ли логическое адресное пространство задачи один или несколько сегментов, операционная система может разделить линейное адресное пространство на страницы. Для операционной системы страницы являются удобными элементами распределения и перераспределения памяти, поскольку все они имеют одинаковый размер. Они обеспечивают традиционный и удобный способ реализации виртуальной памяти. Как и сегментация, страничная организация памяти связана с преобразованием виртуального адреса в физический адрес, выдаваемый на шину адреса. Но в страничном преобразовании базовым объектом памяти служит блок фиксированного размера 4 Кбайта, называемый страницей. При разрешенном страничном преобразовании адреса линейное адресное пространство в 4 Гбайт, которые может адресовать процессор при использовании 32-разрядных адресов, подразделяется на 1 Мбайт страниц по 4 Кбайта каждая. Физическая память также разделяется на страницы соответствующего размера (их иногда называют страничными кадрами). Пространство виртуальных адресов практически всегда много больше пространства физически реализованной памяти, которая составляет, например, от 1 до 16 Мбайт. При организации виртуальной памяти отсутствующие в физической памяти страницы хранятся обычно во внешней памяти (для этого чаще всего служат накопители на жестких магнитных дисках). Фиксированный размер страниц позволяет в любой момент времени загрузить недостающую виртуальную страницу в любой страничный кадр физической памяти. Формат элемента таблицы страниц(32-хразрядный):
Сегментная организация памяти
Организация дескрипторных таблиц в ОП
Дескрипторные таблицы. 1) GDT (Global Descriptor Table) – общесистемная дескрипторная таблица – к ней могут обратиться все программы. Размер таблицы – количество дескрипторов*8 2) IDT (Interrupt Descriptor Table) – дескрипторная таблица прерываний (заменяет вектор прерываний). В ней последовательно хранятся дескрипторы прерываний. Элементы таблицы прерываний называются шлюзами – gate. 3) LDT (Local Descriptor Table) – локальная дескрипторная таблица – принадлежит задаче. Ей может распоряжаться только 1 задача.
В сегментных регистрах хранятся индексы дескрипторов в таблице (селекторы сегментов)
15 |
3 |
2 |
1 |
0 |
Index |
TI |
RPL |
||
Сегментно-страничная организация памяти
Адрес должен включать:S (сегмент), P (страница), d (смещение) (S, P, d)-виртуальный адрес. Имеются 2 типа таблиц – таблицы сегментов и таблицы страниц. Для минимизации кол-ва обращений к памяти те строки таблиц, к которым постоянно происходит обращение, загружаются в специальную кэш-память.
Трансляция адреса. Seg (дескриптор сегмента): Offset (смещение) – сегментная трансляция адреса (переходит от многосегментного адресного пространства к линейным адресам) – есть страницы?
– нет – данный 32-х разрядный линейный адрес и есть физический, отправленный на шину адреса
- есть страничная трансляция – через каталог таблица строится, опять же получаем физический адрес. Управление виртуальной памятью. При организации виртуальной памяти ОС решает несколько задач: 1) Выполнять начальную загрузку информации в ОС (подкачку) определяет, когда следует “втолкнуть” очередной блок кода или данных в основную память (то есть в какой момент времени выполнения программы страница или сегмент должны быть переписаны из вспомогательной памяти в первичную).
- стратегия по максимуму загружает все, что можно, в ОП. Возникает проблема, какие блоки должны быть загружены (нужно спрогнозировать). В первую очередь загружается фрагмент
кода, содержащий точку входа в программу. Система может основываться на принципе локальности ссылок: следующими загружаются соседние сегменты. Такая стратегия возникает при страничной организации.
- Не использовать опережающую загрузку (вообще ничего не загружать в память. Это загрузка по требованию. Обращение-прерывание - обработчик прерывания (загрузка)).
2) Стратегии размещения ставят целью определить, в какое место оперативной памяти следует поместить при подкачке из вторичной памяти выбранный блок.
В системах со страничной организацией памяти (память распределяется блоками фиксированных размеров) задача размещения (выбора свободной страницы) решается тривиально. В системах с сегментной организацией памяти, в которых память распределяется блоками переменных размеров, могут быть использованы различные стратегии (выбор первого подходящего блока, выбор наиболее подходящего блока или выбор наименее подходящего блока), они рассматриваются в разделе, в котором описывается организация памяти в виде кучи.
3) Стратегии замещения ставят целью определить, какой блок следует вытолкнуть во вспомогательную память из основной, чтобы освободить место для загрузки следующего выбранного блока, если свободной памяти оказалось недостаточно.
При выталкивании случайной страницы (блока) все страницы могут использоваться для замещения с равной вероятностью. Эта стратегия не требует никаких дополнительных расходов для своей реализации, но в реальных системах она применяется редко, так как не может обеспечить эффективное управление памятью. Дисциплина выталкивания FIFO (First In First Out) также не может обеспечить эффективное использование памяти, так как долгое присутствие блока (страницы) в памяти может означать его постоянное использование, следовательно, замещенную страницу снова придется загрузить в память, затратив время на ее выгрузку и повторную подкачку. Стратегии LRU (Least Recently Used), LFU (Least Frequently Used), NUR (Non Used Recently) приближаются к оптимальной стратегии. Для их реализации также нужны дополнительные средства: для каждого блока необходимо хранить информацию или о времени последнего обращения к нему, или о количестве обращений, выполненных за единицу времени, или о длительности промежутка времени, в течение которого к блоку не было обращений со стороны процесса. Эта информация может находиться в строке таблицы, описывающей блок. Кроме того, при прочих равных условиях первыми кандидатами на замещение в памяти являются блоки, информация в которых не модифицировалась при обращении к ним, так как в этом случае нет необходимости их сохранения во внешней памяти (при последующем обращении к такому блоку можно использовать существующую копию из вспомогательной памяти). Следовательно, каждая строка таблицы, описывающая блок, должна содержать признак модификации соответствующего блока.
Сегментация памяти в реальном режиме
При работе процессоров Intel в реальном режиме вся память разбивается на блоки фиксированной (16 байтов) длины, называемые параграфами. Все параграфы нумеруются от начала (от меньших адресов) оперативной памяти, получая номера 0, 1, 2, ... Логические адреса, используемые в программе, являются двухкомпонентными: первый компонент представляет собой номер параграфа, с которого начинается сегмент, которому принадлежит адресуемый объект, второй компонент - это смещение внутри сегмента. Эти два компонента адреса представляют собой сегментный адрес (или просто сегмент) и смещение. В этом случае для получения 20-разрядного линейного адреса к сегментному адресу приписывается справа четыре нуля (то есть номер параграфа умножается на 16 - его длину). Полученный таким образом 20-разрядный адрес представляет собой абсолютный адрес начала сегмента. Для получения физического адреса нужной ячейки памяти к этому адресу прибавляется смещение внутри сегмента. Логический адрес = <Сегмент: Смещение> Начало сегмента в физической памяти всегда выравнивается на начало параграфа, то есть сегментный адрес всегда кратен 16. При работе в реальном режиме вся оперативная память доступна программе, не существует средств ее защиты и каких-либо ограничений на диапазон используемых адресов. Поэтому в программе может быть установлено любое значение сегмента адреса. Следовательно, одному и тому же физическому адресу памяти может соответствовать несколько логических адресов в программе. Архитектура процессоров i80x86, работающих в реальном режиме, предполагает хранение сегментного компонента адреса в сегментных регистрах: CS - сегмент кода; DS - сегмент данных; ES - дополнительный сегмент данных; SS - сегмент стека. Простая сегментация памяти в реальном режиме обладает следующими особенностями: - сегменты, определяемые одними лишь сегментными регистрами, имеют всего два атрибута: начальный адрес и максимально допустимый размер; - размещение сегментов в памяти произвольно, они даже могут перекрывать друг друга; - программа может обращаться по любому адресу памяти для выполнения любой операции, нет защиты от несанкционированного доступа; нет никаких аппаратных средств контроля правильности использования адресов, нет никаких препятствий даже для обращения к несуществующей памяти. Основными недостатками адресации памяти в реальном режиме являются следующие: - ограниченное адресное пространство; - свободный доступ любых программ к любым областям памяти, что представляет потенциальную опасность (в случае ошибки адресации) не только для самой программы, но и для целостности операционной системы. Эти недостатки устранены в схеме адресации в защищенном режиме.
Сегментация в защищенном режиме
В защищенном режиме используется более сложная схема преобразования адресов. Логический адрес также является двухкомпонентным, первый компонент адресует начало сегмента, а второй представляет собой смещение внутри сегмента. Однако преобразование логического адреса в физический выполняется по более сложной схеме с использованием таблиц, а доступ к таблицам осуществляется с помощью тех же сегментных регистров, что и в реальном режиме. Кроме того, "ниже" сегментации действует внутренний механизм страничной организации памяти, который позволяет более гибко управлять оперативной памятью компьютера. При работе в защищенном режиме для передачи адреса используются все линии для передачи 32 разрядов адреса. В модели сегментации памяти, используемой в защищенном режиме, невозможно представить всю определяющую сегмент информацию в одном лишь 16-разрядном сегментном регистре. Реализация механизмов защиты и нескольких уровней привилегий, поддержка виртуальной памяти, возможность использования страничной организации памяти - все это требует хранить большую информацию о каждом сегменте. При работе в защищенном режиме каждая программа может обращаться только к сегментам, которые для нее "описаны". Вместо простого определения сегмента путем загрузки его базового адреса в сегментный регистр для каждого используемого сегмента требуется сформировать дополнительную информацию, полностью описывающую этот сегмент, для организации доступа к нему и защиты: его базовый адрес, длина (размер), назначение (для хранения кода, данных или стека) и другие атрибуты. При этом базовый адрес может быть любым (не требуется выравнивать его на границу параграфа), а размер может измеряться либо в количестве страниц, на которые разбивается сегмент при использовании страничной памяти, либо (если страничная организация памяти не используется) в байтах. Кроме того, при реализации виртуальной памяти необходимо хранить дополнительную информацию. Все эти данные, описывающие сегмент, хранятся в специальных дескрипторах, формируемых в оперативной памяти и объединяемых в дескрипторные таблицы.
Аппаратная поддержка виртуальной памяти
Виртуальная память позволяет очень большим программам или группам программ работать в сравнительно малом объеме физической оперативной памяти без использования техники оверлеев или своппинга. Организация виртуальной памяти может строиться на основе сегментации или страничной организации памяти, когда все страницы или сегменты "загруженные" в виртуальную память запоминаются в специальной области дисковой памяти, называемой "областью обмена" (Swapping Area). Физическая же оперативная память содержит только наиболее используемые сегменты или страницы - в зависимости от способа организации. Создание виртуальной памяти может быть эффективным только при наличии аппаратной поддержки для реализации ее механизмов (средств отображения виртуальных адресов на физические, отслеживания текущего состояния страниц или сегментов для реализации подкачки и замещения). Ключевые архитектурные средства включают: 1) блок управления памятью процессора, реализующий сегментную и страничную организацию памяти на основе использования дескрипторов; 2) включение бита присутствия, показывающего находится ли блок в оперативной памяти или требуется его подкачка с диска, в дескрипторы сегментов и страниц; 3) механизм особого прерывания при необходимости загрузки блока; (сегмента или страницы); 4) наличие в дескрипторах битов, показывающих использование блока: бита обращения, устанавливаемого автоматически при каждом обращении к блоку, и бита изменения (модификации), а также свободных битов, которые могут использоваться для подсчета частоты обращений к странице или фиксации времени последнего обращения; эта информация может использоваться операционной системой для реализации стратегии замещения при подкачке с диска; 5) возможность рестарта команд, вызвавших ошибку обращения к несуществующему блоку (сегменту или странице). К средствам повышения эффективности оперативной памяти относятся и средства кэширования дескрипторов, таблиц и страниц.
