- •Классификация эвм, краткие характеристики суперЭвм, мейнфреймов и мини-эвм
- •Настольная вычислительная система.
- •Классификация процессоров.
- •Регистровая модель процессора x86.
- •Режимы работы процессора 80386.
- •1.Реальный режим
- •2. Защищенный режим
- •Процессор х86: непосредственная и регистровая адресация.
- •Процессор х86: прямая адресация и прямая со сдвигом.
- •Процессор х86: косвенная адресация и косвенная со сдвигом.
- •Процессор х86: регистровая адресация и регистровая с масштабированием.
- •Адресация с масштабированием
- •Размещение в памяти многомерных статических массивов и доступ к их элементам.
- •Размещение в памяти многомерных динамических массивов и доступ к их элементам.
- •Формирование исполнительного адреса из трех и четырех составляющих.
- •Процессор х86: инструкции копирования данных.
- •Процессор х86: инструкции ввода-вывода.
- •Представление целых чисел: прямой код, дополнительный код, bsd.
- •Процессор х86: инструкции сложения, сложения с переносом и сложение чисел в формате bcd.
- •Процессор х86: инструкции вычитания, вычитания с заемом и вычитание чисел в формате bcd.
- •Процессор х86: инструкции умножения.
- •Процессор х86: инструкция деления и операции расширения знакового бита.
- •Процессор х86: поразрядные логические инструкции, использование масок.
- •Процессор х86: инструкции сдвига. Умножение и деление на константы.
- •Процессор х86: инструкции цикла. Ожидание готовности пу с тайм-аутом.
- •Процессор х86: безусловный переход и виды меток.
- •Процессор х86: вызов процедуры; рамка стека функции в с.
- •Процессор х86: инструкции условного перехода.
- •Процессор х86: строковый примитив копирования данных.
- •Процессор х86: строковые примитивы сравнения данных, сканирования данных и заполнения данных.
- •Сегменты реального и защищенного режима. Глобальная и локальная таблицы дескрипторов.
- •Селектор сегмента. Механизм получения линейного адреса в защищенном режиме процессора x86.
- •Механизм преобразования линейного адреса в физический в процессоре x86.
- •Преимущества виртуального отображения страниц и адресное пространство процесса.
- •Формат дескриптора сегмента в процессорах x86. Прикладные сегменты.
- •Формат вентиля вызова и исключения. Область применения вентилей вызова.
- •Основные исключения защиты; обработка исключения отсутствие страницы в памяти.
- •Уровни привилегий и кольца защиты защищенного режима.
- •Аппаратная поддержка многозадачности, формат сегмента состояния задачи - tss.
- •Карта ввода/вывода. Прямой доступ к портам ввода/вывода в Windows и Linux.
- •Методы управления пу
- •Использование буферов при проведении обменов
- •Принципы, заложенные в подсистему управления вводом-выводом в ос unix
- •Система управления данными (файловая система)
- •Логическая организация файлов
- •1. Последовательная организация.
- •2. Библиотечная организация.
- •Физическая организация файлов
- •1. Распределение при помощи цепочек блоков.
- •2. Распределение при помощи цепочек индексов
- •Дескриптор файла (дф)
- •Матрица управления доступом (МтУд)
- •Управление доступом в зависимости от класса пользователей
- •Копирование и восстановление информации
- •Свопинг и пейджинг
- •2. Стратегии подкачки страниц
- •3. Стратегии размещения
Механизм преобразования линейного адреса в физический в процессоре x86.
Рисунок 1.4 – Схема преобразования виртуального адреса в физический
Схема формирования линейного адреса и преобразования его в физический показана на рисунке 1.4. После формирования линейного адреса задействуется механизм страничной организации памяти. Здесь следует отметить следующее:
− каждый контекст памяти (адресное пространство процесса)
представлено собственной таблицей трансляции линейного адреса
в физический (адрес соответствующей таблицы загружается в
управляющий регистр CR3),
− каждый элемент таблицы страниц содержит бит, указывающий на
возможность доступа к странице из пользовательского режима
(все страницы доступны из режима ядра),10
− каждый элемент таблицы страниц содержит бит, указывающий на
возможность записи в соответствующую страницу памяти.
Не надо забывать, что каждый элемент таблицы страниц содержит
также бит, указывающий, представлена ли данная страница в оперативной
памяти.
Преимущества виртуального отображения страниц и адресное пространство процесса.
Для защиты и виртуализации памяти в процессорах х86 предусмотрены два основных механизма: сегментация и страничная трансляция адресов.
При сегментации операционная система выделяет каждому процессу сегменты — области памяти различного назначения, с разными правами доступа и разного размера. Из одних сегментов можно только читать данные, в другие возможна и запись. Для программного кода выделяются специальные сегменты, инструкции могут выбираться и исполняться только из них. По отношению к принципу хранимости программы это является искусственным ограничением для фон-неймановской машины, но целесообразность такого ограничения очевидна. Процессору «безразлично» содержимое ячейки памяти, на которую передалось управление, — он всегда пытается трактовать ее как код инструкции (или префикс). Если ошибочно передать управление на область данных, то дальнейшее поведение процессора непредсказуемо — это так называемый «вылет». Защита не позволяет передать управление на сегмент данных: сработает исключение защиты, которое обрабатывается операционной системой, и ошибочный процесс принудительно завершится. Таким образом, вероятность вылета снижается. Чтобы выдержать принцип хранимости программы, на время ее загрузки в память или программной модификации ту же область объявляют сегментом данных, в который разрешена запись. Система защиты может полностью контролировать распределение памяти, генерируя исключения в случаях различных нарушений.
При страничной трансляции адресов (paging) виртуальная логическая память (для каждой виртуальной машины) делится на страницы одинакового (фиксированного) размера. Любая страница виртуальной логической памяти (адресуемой программой в пределах выделенных ей сегментов) может отображаться на любую область физической памяти (реально установленной оперативной). Отображение поддерживается с помощью специальных таблиц страничной трансляции адресов, в которых помимо записей, описывающих связи адресов, есть указания на присутствие/отсутствие страницы в физической памяти. Благодаря этому страница памяти, не нужная процессору в данный момент времени, может быть выгружена на устройство хранения (диск). На ее место можно загрузить нужную страницу. Заявку на загрузку нужной страницы делает сам процессор без каких-либо усилий со стороны выполняемой программы: если программе потребовалась ячейка виртуальной памяти из страницы, образа которой нет в физической памяти, вырабатывается специальное исключение. Обработчик этого исключения (это часть ОС) находит свободную физическую страницу (возможно, выгрузив на диск ту, которая, по его мнению, пока не нужна), «подкачивает» на нее с диска требуемую информацию и возвращает управление процессу, прерванному исключением. Этот процесс ничего «не заметит» (кроме некоторой задержки выполнения инструкций). Таким образом, в распоряжение всех процессов, исполняемых на компьютере псевдопараллельно, предоставляется виртуальная оперативная память, размер которой ограничен суммой объема физической оперативной памяти и области дисковой памяти, выделенной для подкачки страниц.
В большинстве современных ОС механизм сегментации не используется из-за чрезмерной сложности. В них применяется плоская модель памяти (формально для всех целей определен один и тот же сегмент), а для организации виртуальной памяти и ее защиты (но не такой строгой) задействован механизм страничной трансляции адресов.
………………………………..
2.2 Страничное управление памятью, виртуальная память.
Сраничное управление (Paging) является средством организации виртуальной памяти с подкачкой страниц по запросу (Demand-Paged Virtual Memory). В отличие от сегментации, которая организует программы и данные в модули различного размера, страничная организация оперирует с памятью, как с набором страниц одинакового размера. В момент обращения страница может присутствовать в физической оперативной памяти, а может быть выгруженной на внешнюю (дисковую) память. При обращении к выгруженной странице памяти процессор вырабатывает исключение #PF — отказ страницы, а программный обработчик исключения (часть ОС) получит необходимую информацию для свопинга — «подкачки» отсутствующей страницы с диска. Страницы не имеют прямой связи с логической структурой данных или программ. В то время как селекторы можно рассматривать как логические имена модулей кодов и данных, страницы представляют части этих модулей. Учитывая обычное свойство локальности (близкого расположения требуемых ячеек памяти) кода и ссылок на данные, в оперативной памяти в каждый момент времени следует хранить только небольшие области сегментов, необходимые активным задачам. Эту возможность (а следовательно, и увеличение допустимого числа одновременно выполняемых задач при ограниченном объеме оперативной памяти) как раз и обеспечивает страничное управление памятью. В первых 32-разрядных процессорах (начиная с i80386) размер страницы составлял 4 Кбайт. Начиная с Pentium, появилась возможность увеличения размера страницы до 4 Мбайт, одновременно с использованием страниц размером 4 Кбайт. В Р6 имеется возможность расширения физического адреса до 36 бит (64 Гбайт), при котором могут использоваться страницы размером 4 Кбайт и 2 Мбайт.
Базовый механизм страничного управления использует двухуровневую табличную трансляцию линейного адреса в физический.
Механизм имеет три части: каталог страниц (Page Directory), таблицы страниц (Page Table) и собственно страницы (Page Frame). Механизм включается установкой бита PG=1 в регистре CRO. Регистр CR2 хранит линейный адрес отказа (Page Fault Linear Address) — адрес памяти, по которому был обнаружен последний отказ страницы. Регистр CR3 хранит физический адрес каталога страниц (Page Directory Physical Base Address). Его младшие 12 бит всегда нулевые (каталог выравнивается по границе страницы).
Адресное пространство х86
х86 может работать с двумя типами адресов:
32-разрядным адресом, в котором 16 бит задают смещение в сегменте, 14 бит— номер сегмента и 2 бита используются для разных загадочных целей. При этом размер сегмента не более 64 Кбайт, а общий объем виртуальной памяти не превышает 1 Гбайта.
48-разрядным адресом, в котором смещение в сегменте занимает 32 бита. В этом случае размер сегмента может быть до 4 Гбайт, а общий объем виртуальной памяти до 244 байт. В обоих случаях сегмент может быть разбит на страницы по 4 Кбайт.
При этом сегментная часть адреса и его смещение лежат в разных регистрах, и с ними можно работать раздельно. В реальном режиме возможность такой работы порождает весь "зоопарк моделей памяти", с которыми знакомы те, кто писал на С для MS DOS. В защищенном режиме х86 большинство систем программирования выделяют программе один сегмент с 32-разрядным смещением, и программа живет там так, будто это обычная машина с 32-разрядным линейным адресным пространством.