- •1) Определение операционной системы и ее функции. (виртуальная машина, управление ресурсами, задачи управления ресурсами)
- •1. Назначение и функции операционных систем
- •1.1.Основные понятия и определения
- •1.2.Управление ресурсами
- •3) Функциональные требования, предъявляемые к операционным системам и способы их реализации (расширяемость, переносимость, надежность, совместимость, безопасность, производительность).
- •5) Основные архитектуры операционных систем. (монолитные, многоуровневые, микроядерные, объектно-ориентированные, виртуальные машины)
- •Монолитные системы
- •Многоуровневые системы
- •Клиент – сервер (микроядро)
- •Объектно-ориентированный подход в проектировании ос.
- •Виртуальная машина (вм), Экзоядро
- •6) Абстракция процесса, управление процессами в многозадачной операционной системе. (определение процесса, диаграмма состояния, контекст, дескриптор, квантование, приоритетное планирование, нити)
- •7) Функциональные возможности многозадачности в ос Windows. (способы использования многозадачности, решаемые задачи)
- •8) Планировщик ос Windows. (класс и уровень приоритета, переключение контекста, «неготовые» потоки, динамический приоритет)
- •9) Эффект инверсии приоритетов. (пример, способы преодоления)
- •10) Мультипроцессорная обработка в ос Windows. (термины, вызовы api, назначение)
- •11) Эффект гонки. (пример, способ преодоления)
- •12) Средства синхронизации в режиме пользователя в ос Windows. (interlocked-функции, объект «критическая секция»)
- •13) Задача о критической секции. Алгоритм Петерсона для двух процессов. (условия задачи, объяснение принципа алгоритма)
- •14) Эффект отталкивания (голодания). (пример, модификатор volatile)
- •15) Эффект ложного разделения переменных (влияния кэш линий). (пример)
- •16) Управление объектами ядра в ос Windows. (описатель объекта, таблица описателей объектов процесса, создание, наследование, именование, дублирование)
- •17) Средства синхронизации в режиме ядра в ос Windows. (события, семафоры, мьютексы)
- •18) Эффект взаимоблокировки (возникновение тупика). (определение, условия возникновения, моделирование)
- •19) Стратегия «обнаружение-устранение» для борьбы с взаимоблокировками. (с использованием графов Холта, матриц распределения ресурсов)
- •20) Стратегия избегания блокировок. Алгоритм банкира. (диаграмма траекторий ресурсов, алгоритм банкира для одного вида ресурсов)
- •21) Стратегии предотвращения блокировок. (исключение условий в определении блокировок)
- •22) Методы управления памятью без использования внешней памяти. (фиксированные, динамические и перемещаемые разделы)
- •23) Методы управления памятью с использованием внешней памяти. (сегментный, страничный, сегментно-страничный способ)
- •24) Свопинг. Кэширование. (назначение, принцип работы механизма)
- •25) *Реализация сегментного механизма управления памятью в процессорах семейства x86.
- •26) *Реализация страничного механизма управления памятью в процессорах семейства x86. (размер и основные поля структур данных, особенности реализации)
- •27) *Средства ос Windows для управления виртуальной памятью процесса. (VirtualAlloc, структурированная обработка исключений, файлы, отображаемые в память)
24) Свопинг. Кэширование. (назначение, принцип работы механизма)
Свопинг
Виртуализация памяти может быть осуществлена на основе двух подходов – это виртуальная память и свопинг. Свопинг (swapping) – способ управления памятью, при котором образы процессов выгружаются на диск и возвращаются в оперативную память целиком. Свопинг представляет собой частный случай виртуальной памяти и, следовательно, более простой в реализации способ совместного использования оперативной памяти и диска. Однако подкачке свойственна избыточность.
Чтобы загрузить процессор вычислительными задачами, задачи ввода/вывода целесообразно сбросить на диск.
Кэш-память
Кэш-память – способ организации совместной работы устройств хранения, различающихся стоимостью хранения единицы информации и скоростью доступа.
Цель: увеличить скорость, понизить стоимость за счет размещения часто используемой информации в более быстром ЗУ.
Механизм кэша прозрачен для пользователя.
Кэш одновременно с памятью «прослушивает» запрос ЦП, но ответить (если данные есть) успевает быстрее.
Тег – адрес нескольких последовательно расположенных ячеек.
Последствия такой организации памяти для программиста: память разбивается на кэш-линии (несколько последовательных ячеек), следовательно, требуется выравнивание по границе кэш-линии.
Работа кэша основана на принципах пространственной и временной локальности, обеспечивающих высокий процент «попадания» в кэш.
tдоступа =p·tкэш + (1-p)·tпамяти; p~90%
Пространственная локальность: если обращение происходит по адресу At , то с большой долей вероятности в момент времени (t+1) происходит обращение по адресу (А±1).
Временная локальность: существует большая вероятность того, что в следующий момент времени (t+τ) произойдет обращение к этой же области с адресом А: Аt→A t+τ.
25) *Реализация сегментного механизма управления памятью в процессорах семейства x86.
Средства аппаратной поддержки управления памятью Intel i386
Микропроцессоры семейства i386 имеют два режима работы: реальный (real mode) и защищенный (protected mode).
В защищенном режиме доступны сегментный и страничный механизмы виртуальной памяти.
В реальном режиме процессор работает, как и 8086, с расширенным набором команд.
Для работы в адресном пространстве 1МБ надо сформировать адрес определенным образом:
Этот режим (реальный) устанавливается по сбросу и используется для начальной инициализации системы. Путем записи управляющих битов в регистры командой MOV процессор переводится в защищенный режим. В защищенном режиме всегда включен сегментный механизм, и может быть установлен режим v86 (virtual 86), при котором процессор работает как несколько процессоров 8086 с общей памятью. Кроме того, в защищенном режиме может быть включен режим страничной адресации.
Лекция №14
Сегментный механизм
Структуры данных
а) Селектор
GDT – глобальная дескрипторная таблица
LDT – локальная дескрипторная таблица
б) Регистр GDTR
в) Дескриптор сегмента (данных/кода)
Регистр GDTR описывает положение глобальной дескрипторной таблицы в физической памяти. В нем указывается размер таблицы в байтах.
Поскольку в сегментном регистре на указание индекса дескриптора сегмента отводится 13 бит, всего сегментов 213 = 8192.
Размер дескриптора 8 байт; с учетом 8192 возможных сегментов, размер дескрипторной таблицы составит 8·8192 = 216 = 64 КБ.
Бит G определяет способ изменения размера сегмента (в байтах – G=0, или в страницах – G=1).
Если G=0, то размер сегмента 220 = 1 МБ (совместимость с 8086, используется в режиме v86).
Если G=1, то при 4КБ страницах, 4КБ·220 = 4 ГБ.
Бит D определяет выравнивание сегментов по 32-битной (D=1) или 16-битной границе (D=0).
Бит P – бит присутствия сегмента в физической памяти.
Бит DPL – уровень привилегий дескриптора, определяет, можем ли мы пользоваться дескриптором. Если CPL≤DPL – доступ разрешен.
Тип сегмента:
·S=0 – системные сегменты (LDT – локальная дескрипторная таблица; TSS – сегмент состояния задачи, в который отображается содержимое контекста при переключении задач; ловушки (шлюзы) вызова – специальные регистры, предназначенные для вызова высшего уровня привилегий с низшего, и т. д.).
·S=1 – пользовательские сегменты:
E=0 – сегмент данных;
Е=1 – сегмент кода;
ED – бит распространения сегмента:
ED=0 – в сторону старших адресов,
ED=1 – в сторону младших адресов (стек);
W – бит, указывающий, была ли запись в сегмент с момента последней очистки (устанавливается аппаратно, сбрасывается программно);
А – бит доступа к сегменту (А=1 – произошел доступ с момента загрузки);
С – бит подчинения (если C=1, то проверка CPL≤DPL игнорируется, и мы можем вызвать более привилегированный код);
R – возможность чтения кодового сегмента.
Если используется адресация из таблицы GDT, то индекс сдвигается влево на 3 разряда (т.к. дескриптор имеет размер 8 Б = 23), получается смещение в таблице GDT. Проверяем, не выходит ли смещение за границы таблицы (смотрим на младшие 16 разрядов GDTR, хранящих ее размер). Далее берем 32-битный адрес GDT и складываем с этими смещением. В итоге получается 32-битный адрес дескриптора в физической памяти. При этом определяется, присутствует ли сегмент в физической памяти и разрешен ли доступ к нему. Если доступ разрешен, то берется базовый адрес сегмента из дескриптора (“база”) и складывается со смещением из команды. Также на этой стадии производится контроль выхода за границу сегмента. Результатом является 32-битный адрес в физической памяти.
Если обращение идет через локальную дескрипторную таблицу LDT (см. соответствующий признак в селекторе), то используется регистр LDTR, который указывает на дескриптор LDT в глобальной дескрипторной таблице GDT. С использованием этого дескриптора вычисляется базовый адрес LDT в физической памяти. Далее преобразование происходит аналогичным способом.
Для увеличения скорости преобразования адреса каждому (из 6) сегментному регистру соответствует теневой 8-байтный (64 бита) регистр, хранящий дескриптор, соответствующий значению сегментного регистра.
Таким образом, для инициализации системы в защищенном режиме необходимо как минимум создать дескрипторную таблицу с одним входом и проинициализировать GDTR.
Если включен страничный механизм, то вычисленный 32-битный адрес подвергается дальнейшему преобразованию блоком управления страничной памятью.