- •5 Задача 44
- •1. Відкрита архітектура пеом
- •2. Функціональна схема базової моделі мікропроцесора. Схеми напівсуматора і суматора. Дії над двійковими та двійково-десятковими числами.
- •Додавання
- •Віднімання
- •3. Логічна структура мікропроцесора
- •Сегментные регистры
- •Регистры общего назначения
- •Флаги состояния
- •Флаг направления
- •Системные флаги
- •Регистр управления
- •4. Адресація пам’яті
- •Сегментная адресация памяти
- •Параграфы
- •Понятия команды и формата команды
- •5. Сторінкова організ оп пам’яті. Таблиці, дескриптори
- •Понятие о страничной модели памяти
- •6. Структура таблиц idt. Дескриптор шлюза.
- •Дескриптор шлюза
- •7. Формування фізичної адреси з логічної адреси для сегментної та сторінкової схем організації пам’яті Страничная организация
- •8. Принципи роботи vmm
- •Обзор Администратора виртуальной памяти (vmm)
- •9. Використання регістрів загального призначення
- •10. Організація стеку. Адресація стекової пам’яті
- •11. Архітектура регістру ознак (flags)
- •12. Апаратно-програмні засоби певм.
- •13. Механізм переривань
- •14. Апаратні переривання, їх призначення. Архітектура мікросхеми 8859. Обробка апаратних переривань.
- •15. Контролер apic
- •16. Принцип роботи сопроцесора
- •17. Загальні поняття про канали та порти
- •18. Мікросхема паралельного інтерфейсу
- •19. Структура cmos-memory
- •20. Архітектура мікросхеми таймера
- •1 Задача
- •2 Задача
- •Програма може бути якась така:
- •5 Задача
- •6 Задача
Понятия команды и формата команды
Информация, поступающая на вход ЭВМ, - числа, логические переменные, текст, графика и др. в том числе и команды (рис.1) вводятся в компьютер в виде последовательности нулей и единиц и далее представляются и хранятся в виде двоичных слов фиксированной длины:8,16,32 бита.
Смысл двоичных слов может быть различным - либо число, либо адрес, либо команда.
Команда в ЭВМ или машинная команда - это упорядоченная последовательность бит (двоичное слово), с помощью которой указывают:
· наименование операции, инициируемой командой (код операции КОП хранится в ОЧ);
· адреса A1, А2 операндов, участвующих в операции (хранятся в АЧ).
Формат команды (представление) изображен на рис. 2
Рис. 2. Формат команды
Формат команды задает длину команды в байтах или словах, количество полей для указания адреса, т.е. адресность команды, расположение полей в команде и т.д.
Требования к форматам команд:
Краткость, т.к. длина команды влияет на объем памяти, отводимой для хранения команд.
Минимальное время выполнения.
Возможность обращения ко всей области памяти данных.
5. Сторінкова організ оп пам’яті. Таблиці, дескриптори
http://mf.grsu.by/UchProc/livak/en/po/lections/lec11prod.htm
Понятие о страничной модели памяти
Это надстройка над сегментной моделью.
ОП делится на блоки фиксированного размера 4 Кб (должно быть число, кратное степени двойки, чтобы операции сложения можно было бы заменить на операции конкатенации).
Каждый такой блок называется страницей.
Их число 1.048.576 ⇒ 4 Гб адресуемой памяти.
Основное применение этой модели связано с организацией виртуальной памяти.
Для того, чтобы использовать для работы программ пространство памяти большее, чем объем физической памяти используется механизм виртуальной памяти.
Суть его заключается в том, что у микропроцессора существует возможность по обмену страницами памяти с жестким диском. В случае, если программа требует памяти больше, чем объем физической памяти, редко используемые страницы памяти записываются на жесткий диск в специальный файл виртуальной памяти (файл обмена, или страничный файл, или файл подкачки, чаще swap-файлом, подчеркивая, что страницы этого файла замещают друг друга в ОП).
В настоящее время файл подкачки может динамически изменять свой размер в зависимости от потребностей системы.
Обратим внимание на то, что программа также разбивается на фрагменты - страницы. Все фрагменты программы одинаковой длины, кроме последней страницы.
Говорят, что память разбивается на физические страницы, а программа - на виртуальные страницы.
Трансляция (отображение) виртуального адресного пространства задачи на физическую память осуществляется с помощью таблицы страниц.
Для каждой текущей задачи создается таблица страниц.
Диспетчер памяти для каждой страницы формирует соответствующий дескриптор. Дескриптор содержит так называемый бит присутствия.
Если он = 1, это означает, что данная страница сейчас размещена в ОП.
Если он = 0, то страница расположена во внешней памяти.
Защита страничной памяти основана на контроле уровня доступа к каждой странице.
Каждая страница снабжается кодом уровня доступа (только чтение; чтение и запись; только выполнение). При работе со страницей сравнивается значение кода разрешенного уровня доступа с фактически требуемым. При несовпадении работа программы прерывается. Страничная модель памяти поддерживается только в защищенном режиме работы микропроцессора.
Основное достоинство страничного способа распределения памяти -
минимально возможная фрагментация (эффективное распределение памяти).
Недостатки:
потери памяти на размещение таблиц страниц
потери процессорного времени на обработку таблиц страниц (диспетчер памяти).
Программы разбиваются на страницы случайно, без учета логических взаимосвязей, имеющихся в коде ⇒ межстраничные переходы осуществляются чаще, чем межсегментные + трудности в организации разделения программных модулей между выполняющими процессами
Чтобы избежать недостатка №3 был предложен сегментно-страничный способ распределения памяти.
Таблицы GDT, LDT. Дескрипторы оперативниой памяти
http://www.e-zine.excode.ru/online/3/syscall.html
Микропроцессор аппаратно поддерживает три типа дескрипторных таблиц:
глобальная дескрипторная таблица (GDT);
локальная дескрипторная таблица (LDT);
таблица дескрипторов прерываний (IDT).
1. Таблица GDT (Global Descriptor Table) — глобальная дескрипторная таблица. Это основная общесистемная таблица, к которой допускается обращение со стороны программ, обладающих достаточными привилегиями. Расположение таблицы GDT в памяти произвольно; оно локализуется с помощью специального регистра gdtr (48 бит). В таблице GDT могут содержаться следующие типы дескрипторов:
дескрипторы сегментов кодов программ;
дескрипторы сегментов данных программ;
дескрипторы стековых сегментов программ;
дескрипторы TSS (Task Segment Status) — специальные системные объекты, называемые сегментами состояния задач;
дескрипторы для таблиц LDT;
шлюзы вызова;
шлюзы задач.
2. Таблица LDT (Local Descriptor Table) — локальная дескрипторная таблица. Для любой задачи в системе может быть создана своя дескрипторная таблица подобно общесистемнойGDT. Для связи между таблицами GDT и LDT в таблице GDT создается дескриптор, описывающий область памяти, в которой находится LDT. Расположение таблицы LDT в памяти также произвольно и локализуется с помощью специального регистра ldtr (16 бит). В таблице LDT могут содержаться следующие типы дескрипторов:
дескрипторы сегментов кодов программ;
дескрипторы сегментов данных программ;
дескрипторы стековых сегментов программ;
шлюзы вызова;
шлюзы задач.
Рассмотрим структуру сегментного дескриптора:
Рисунок 12. Формат сегментного дескриптора
Теперь рассмотрим формат дескриптора поподробнее.
База – это линейный адрес, с которого начинается сегмент.
Лимит – это максимальное смещение от начала сегмента, то есть лимит равен размеру сегмента минус один байт. Таким образом, получается, что минимальный размер сегмента может быть равен одному байту, а максимальный – одному мегабайту или четырём гигабайтам (это зависит от, того, умножается размер сегмента на 4 килобайта или нет).
G – флаг гранулярности (Granularity), который, как раз, указывает, в чём измеряется размер сегмента: если G=0, то размер сегмента считается в байтах (то есть, максимальный размер сегмента получается 220=1 мегабайт), если G=1, то размер сегмента считается в 4-килобайтных блоках (страницах), то есть, максимальный размер сегмента равен 220*212=4 гигабайт, при чём размер сегмента всегда кратен 4 килобайтам.
D/B – флаг, указывающий разрядность сегмента: 0 – сегмент 16-разрядный, 1 – сегмент 32 разрядный (этот флаг ещё называют BIG).
Бит 53 зарезервирован и всегда должен быть равен нулю.
Бит AVL является свободным (Available) и может использоваться по усмотрению программы.
Флаг P определяет присутствие сегмента в памяти (Presentation). Если P=1, то сегмент присутствует в памяти, если P=0, то для использования сегмента его следует сначала загрузить в память. Таким образом, флаг P предназначен для организации виртуальной памяти. Надо заметить, что способ организации механизма подкачки памяти при помощи флага P при господстве модели FLAT (к ней мы ещё вернёмся) не нашёл применения: страничная адресация оказалась гораздо проще.
Биты DPL определяют привилегии доступа к сегменту (Descriptor Privelege Level). Всего существует 4 уровня доступа, в которых 0 – самый высокий приоритет, 3 – самый низкий приоритет. Таким образом, чтобы программе было возможным использовать сегмент, описанный данным дескриптором, в селекторе, используемом программой биты RPL должны принимать не меньшее значение, чем биты DPL дескриптора. В противном случае возникает аппаратная ошибка (прерывание), названная исключением, которая может быть обработана ядром ОС.
Флаг S и тип сегмента следует рассматривать вместе. Если S установлен, то это значит, что сегмент является системным (System), в противном случае сброшенный флаг S означает, что дескриптор описывает сегмент данных или кода. Если сегмент является системным, то указывается его тип (о типах системных дескрипторов будет написано позже), в другом случае дескриптор описывает либо сегмент данных, либо сегмент кода.
Поле
«тип сегмента» для сегмента данных
выглядит так:
Для
сегмента кода поле выглядит немного
иначе:
Флаг А также используется для организации виртуальной памяти и является флагом доступа (Accessed), то есть при любом обращении к описываемому сегменту флаг будет автоматически установлен (то есть, по этому биту операционная система решает, какие сегменты следует временно сбросить на диск в swap-файл, а с какими сегментами следует повременить). То есть, ОС может периодически сбрасывать этот бит, и если он через некоторое время не станет равным единице, то данный сегмент можно сбросить, допустим, на жёсткий диск, освободив тем самым память.
Для сегмента данных определяются два характерных флага:
Флаг D задаёт направление роста сегмента (Direction). Обычно, если D=1, то выбранный сегмент является сегментом стека и растёт «задом наперёд». Если же D=0, то выбранный сегмент является сегментом данных. На самом деле, значение D=1 практически не используется.
Флаг W определяет возможность записи в сегмент (Writable). То есть, сброшенный флаг указывает, что сегмент данных доступен только для чтения. Если флаг установлен, то сегмент доступен также и для записи.
Для сегмента кода определяются следующие два характерных флага:
Бит C называется битом подчинения (Conforming), но рассмотрен он будет позже.
Флаг R указывает на доступность сегмента кода для чтения (Readable). То есть, если флаг сброшен, читать из сегмента кода нельзя.
Из рассмотрения этих двух полей можно сделать вывод: писать прямо в сегмент кода категорически запрещено, как и запускать программу, находящуюся в сегменте данных.
Поля P, DPL, S и тип сегмента образуют единую группу – права доступа сегмента, и для операции с этой группой введены специальные команды процессора, которые будут рассмотрены позже.
