Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Module_1_answers_with_practice.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.55 Mб
Скачать

Понятия команды и формата команды

Информация, поступающая на вход ЭВМ, - числа, логические переменные, текст, графика и др. в том числе и команды (рис.1) вводятся в компьютер в виде последовательности нулей и единиц и далее представляются и хранятся в виде двоичных слов фиксированной длины:8,16,32 бита.

Смысл двоичных слов может быть различным - либо число, либо адрес, либо команда.

Команда в ЭВМ или машинная команда - это упорядоченная последовательность бит (двоичное слово), с помощью которой указывают:

·                 наименование операции, инициируемой командой (код операции КОП хранится в ОЧ);

·                 адреса A1, А2 операндов, участвующих в операции (хранятся в АЧ).

Формат команды (представление) изображен на рис. 2

Рис. 2. Формат команды

Формат команды задает длину команды в байтах или словах, количество полей для указания адреса, т.е. адресность команды, расположение полей в команде и т.д.

Требования к форматам команд:

  1. Краткость, т.к. длина команды влияет на объем памяти, отводимой для хранения команд.

  2. Минимальное время выполнения.

  3. Возможность обращения ко всей области памяти данных.

5. Сторінкова організ оп пам’яті. Таблиці, дескриптори

http://mf.grsu.by/UchProc/livak/en/po/lections/lec11prod.htm

Понятие о страничной модели памяти

Это надстройка над сегментной моделью.

ОП делится на блоки фиксированного размера 4 Кб (должно быть число, кратное степени двойки, чтобы операции сложения можно было бы заменить на операции конкатенации).

Каждый такой блок называется страницей.

Их число 1.048.576 ⇒ 4 Гб адресуемой памяти.

Основное применение этой модели связано с организацией виртуальной памяти.

Для того, чтобы использовать для работы программ пространство памяти большее, чем объем физической памяти используется механизм виртуальной памяти.

Суть его заключается в том, что у микропроцессора существует возможность по обмену страницами памяти с жестким диском. В случае, если программа требует памяти больше, чем объем физической памяти, редко используемые страницы памяти записываются на жесткий диск в специальный файл виртуальной памяти (файл обмена, или страничный файл, или файл подкачки, чаще swap-файлом, подчеркивая, что страницы этого файла замещают друг друга в ОП).

В настоящее время файл подкачки может динамически изменять свой размер в зависимости от потребностей системы.

Обратим внимание на то, что программа также разбивается на фрагменты - страницы. Все фрагменты программы одинаковой длины, кроме последней страницы.

Говорят, что память разбивается на физические страницы, а программа - на виртуальные страницы.

Трансляция (отображение) виртуального адресного пространства задачи на физическую память осуществляется с помощью таблицы страниц.

Для каждой текущей задачи создается таблица страниц.

Диспетчер памяти для каждой страницы формирует соответствующий дескриптор. Дескриптор содержит так называемый бит присутствия.

Если он  = 1, это означает, что данная страница сейчас размещена в ОП.

Если он  = 0, то страница расположена во внешней памяти.

Защита страничной памяти основана на контроле уровня доступа к каждой странице.

Каждая страница снабжается кодом уровня доступа (только чтение; чтение и запись; только выполнение). При работе со страницей сравнивается значение кода разрешенного уровня доступа с фактически требуемым. При несовпадении работа программы прерывается. Страничная модель памяти поддерживается только в защищенном режиме работы микропроцессора.

Основное достоинство страничного способа распределения памяти -

минимально возможная фрагментация (эффективное распределение памяти).

Недостатки:

  1. потери памяти на размещение таблиц страниц

  2. потери процессорного времени на обработку таблиц страниц (диспетчер памяти).

  3. Программы разбиваются на страницы случайно, без учета логических взаимосвязей, имеющихся в коде ⇒ межстраничные переходы осуществляются чаще, чем межсегментные + трудности в организации разделения программных модулей между выполняющими процессами

Чтобы избежать недостатка №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 и тип сегмента образуют единую группу – права доступа сегмента, и для операции с этой группой введены специальные команды процессора, которые будут рассмотрены позже.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]