Микропроцессоры типа х86 имеют два входа запросов внешних аппаратных прерываний:
NMI - немаскируемое прерывание, используется обычно для запросов прерываний по нарушению питания;
INT - маскируемое прерывание, запрос от которого можно программным образом замаскировать путем сброса флага IF в регистре флагов.
Рис. 14.4. Структура контроллера приоритетных прерываний
Единственный вход запроса маскируемых прерываний микропроцессора не позволяет подключить к нему напрямую сигналы запросов от большого числа различных внешних устройств, которые входят в состав современного компьютера: таймера, клавиатуры, "мыши", принтера, сетевой карты и т.д. Для их подключения к одному входу INT микропроцессора используется контроллер приоритетных прерываний (рис. 14.4). Его функции:
восприятие и фиксация запросов прерываний от внешних устройств;
определение незамаскированных запросов среди поступивших запросов;
проведение арбитража: выделение наиболее приоритетного запроса из незамаскированных запросов в соответствии с установленным механизмом назначения приоритетов;
сравнение приоритета выделенного запроса с приоритетом запроса, который в данный момент может обрабатываться в микропроцессоре, формирование сигнала запроса на вход INT микропроцессора в случае, если приоритет нового запроса выше;
передача в микропроцессор по шине данных типа прерывания, выбранного в процессе арбитража, для запуска соответствующей программы - обработчика прерывания; это действие выполняется по сигналу разрешения прерывания INTA от микропроцессора, который выдается в случае, если прерывания в регистре флагов микропроцессора не замаскированы (IF=1).
Переход к соответствующему обработчику прерывания осуществляется (в реальном режиме работы микропроцессора) посредством таблицы векторов прерываний. Эта таблица (рис. 14.5) располагается в самых младших адресах оперативной памяти, имеет объем 1 Кбайт и содержит значения сегментного регистра команд (CS) и указателя команд (IP) для 256 обработчиков прерываний.
Рис. 14.5. Структура таблицы векторов прерываний
Обращение к элементам таблицы осуществляется по 8-разрядному коду - типу прерывания (таблица 14.1).
Таблица 14.1.
Тип прерывания
Источник прерывания
Деление на 0
Пошаговый режим выполнения программы
Запрос по входу NMI
· · ·
Запрос по входу IRQ0 (системный таймер)
Запрос по входу IRQ1 (контроллер клавиатуры)
· · ·
Отсутствие сегмента в оперативной памяти
· · ·
Пользовательское прерывание
Различные источники задают тип прерывания по-разному:
программные прерывания вводят его изнутри процессора или содержат его в номере команды INT n;
аппаратные маскируемые прерывания вводят его от контроллера приоритетных прерываний по шине данных;
немаскируемому аппаратному прерыванию назначен тип 2.
15. Лекция: Система управления памятью
Страницы: 1 | 2 | вопросы |»
| учебники | для печати и PDA | ZIP
Если Вы заметили ошибку - сообщите нам, или выделите ее и нажмите Ctrl+Enter
Рассматриваются вопросы, связанные с распределением памяти, организацией виртуальной памяти на основе страничного распределения, а также сегментно-страничное представление памяти в персональной ЭВМ и методы сокращения времени адресного преобразования.
Организация распределения памяти в ЭВМ
Запоминающие устройства являются одной из основных частей любого компьютера. Их работа, как отмечалось ранее, строится по иерархическому принципу. От того, насколько рационально организовано использование памяти на каждом из уровней иерархии и взаимодействие между ЗУ различных уровней, во многом зависит эффективность работы ЭВМ.
Ключевую роль в этой иерархии играет оперативная память. Именно в ней хранятся программы во время их исполнения, именно отсюда загружаются в регистры микропроцессора исходные данные для обработки. Сюда же, как правило, передаются и окончательные результаты работы программ. Поэтому рациональное использование ОЗУ на протяжении всего времени работы ЭВМ чрезвычайно важно.
В оперативной памяти мультипрограммных ЭВМ обычно постоянно хранится ядро операционной системы. Программы ядра ОС в процессе работы ЭВМ выполняются часто, время их выполнения невелико. Остальные части операционной системы, как правило, находятся во внешней памяти, и в случае необходимости требуемые модули загружаются в оперативную память, занимая ее часть. В оставшейся части ОП хранится несколько программ, выполняемых в мультипрограммном режиме, и используемые ими данные.
Распределение памяти предполагает удовлетворение потребностей как пользователей, так и системных средств. Эти требования в большей части противоречивы.
Системные цели заключаются, прежде всего, в увеличении степени использования оперативной памяти при параллельном развитии нескольких процессов в мультипрограммном режиме, а также в реализации защиты информации при развитии этих процессов, обеспечении взаимодействия между процессами и т. д.
Требования пользователей к памяти весьма разнообразны: быстрое выполнение коротких программ, выделение оперативной памяти в размерах, превышающих физически существующую, легкость и простота взаимодействия с другими программами при использовании, например, общих процедур и т. п.
Вследствие этого распределение памяти всегда носит компромиссный характер.
Система управления памятью выполняет следующие основные функции [[2]]
учет состояния свободных и уже распределенных областей памяти и модернизация этой информации всякий раз, когда в распределении памяти производятся изменения;
распределение памяти для выполнения задач (определение, какой задаче, когда и в каком количестве выделить оперативную память);
непосредственное выделение задаче оперативной памяти; если свободные области оперативной памяти отсутствуют, то предварительное их освобождение путем сохранения информации во внешней памяти.
Все доступное множество адресов элементов хранения, упорядоченное по какому-либо признаку, называют адресным пространством памяти. Физическое адресное пространство организовано просто как одномерный массив ячеек, каждой из которых присвоен свой номер, называемый физическим адресом.
В общем случае, под адресом понимают некий идентификатор, однозначно определяющий расположение элемента хранения среди прочих элементов в составе среды хранения.
Для адресации данных в физическом адресном пространстве программы используют логическую адресацию. Процессор автоматически транслирует логические адреса в физические, выдаваемые на адресную шину и воспринимаемые схемами управления (контроллерами) памяти.
Существуют две стратегии распределения оперативной памяти, как и любого ресурса: статическое и динамическое распределение.
При статическом распределении вся необходимая оперативная память выделяется процессу в момент его порождения. При этом память выделяется единым блоком необходимой длины, начало которого определяется базовым адресом. Программа пишется в адресах относительно начала блока, а физический адрес команды или операнда при выполнении программы формируется как сумма базового адреса блока и относительного адреса в блоке. Значение базового адреса устанавливается при загрузке программы в оперативную память.Так как в разных программах используются блоки разной длины, то при таком подходе возникает проблема фрагментации памяти, то есть возникают свободные участки памяти, которые невозможно без предварительного преобразования использовать для вычислительного процесса.
Проиллюстрируем это простым примером.
Пусть ОП имеет объем 10 Мбайт, а для выполнения программ A, B, C, D требуются следующие объемы памяти: A - 2 Мбайт, B - 1 Мбайт, C - 4 Мбайт, D - 4 Мбайт. Начальное распределение памяти и распределение памяти после выполнения некоторых программ представлено на рис. 15.1.
Рис. 15.1. Статическое распределение памяти:a - начальное распределение; б - после завершения программы A;в - после завершения программы B; г - после завершения программы C
Из рисунка видно, что программа D при статическом распределении памяти может быть загружена в оперативную память лишь после завершения выполнения всех предыдущих программ, хотя необходимый для нее объем памяти существовал уже после завершения работы программы A. В то же время для улучшения показателей работы мультипрограммной ЭВМ требуется, чтобы в оперативной памяти постоянно находилось возможно большее количество программ, готовых к выполнению.
Данную проблему можно частично решить перераспределением памяти после завершения выполнения каждой программы с целью формирования единого свободного участка, который может быть выделен новой программе, поступающей на обработку (дефрагментация памяти). Однако это требует трудоемкой работы системных средств и практически не используется.
Современные системы распределения памяти опираются на две концепции: динамического использования ресурсов и виртуализации.
При динамическом распределении памяти каждой программе в начальный момент выделяется лишь часть от всей необходимой ей памяти, а остальная часть выделяется по мере возникновения реальной потребности в ней.Такой подход базируется на следующих предпосылках.
Во-первых, при каждом конкретном исполнении в зависимости от исходных данных некоторые части программы (до 25% ее длины) вообще не используются. Следует стремиться к тому, чтобы эти фрагменты кода не загружались в ОП.
Во-вторых, исполнение программы характеризуется так называемым принципом локальности ссылок. Он подразумевает, что при исполнении программы в течение некоторого относительно малого интервала времени происходит обращение к памяти в пределах ограниченного диапазона адресов (как по коду программы, так и по данным). Следовательно, на протяжении этого времени нет необходимости хранить в ОП другие блоки программы.
При этом системные средства должны отслеживать возникновение требований на обращение к тем частям программы, которые в данный момент отсутствуют в ОЗУ, выделять этой программе необходимый блок памяти и помещать туда из внешнего ЗУ требуемую часть программы. Для этого может потребоваться предварительное перемещение некоторых блоков информации из ОЗУ во внешнюю память. Данные перемещения должны быть скрыты от пользователя и в наименьшей степени замедлять работу его программы.
Перемещение блоков информации из ОЗУ во внешнюю память с целью освобождения места для новой информации происходит обычно по одному из следующих алгоритмов:
LRU (least recently used) - наиболее давно не использовавшийся;
FIFO - самый давний по пребыванию в ОЗУ;
Random - случайным образом.
Динамическое распределение памяти тесно переплетается с понятием виртуальной памяти.
Принцип виртуальной памяти предполагает, что пользователь при подготовке своей программы имеет дело не с физической ОП, действительно работающей в составе компьютера и имеющей некоторую фиксированную емкость, а с виртуальной (кажущейся) одноуровневой памятью, емкость которой равна всему адресному пространству, определяемому размером адресной шины (Lша) компьютера:
Vвирт >> Vфиз,
Vвирт = 2Lша.
Для персональной ЭВМ на основе 32-разрядных микропроцессоров
Vвирт= 232 = 4 Гбайт.
При этом, естественно, в ЭВМ должен быть обеспечен достаточный объем внешней памяти для хранения всех программ, обрабатываемых на компьютере.
Программист имеет в своем распоряжении адресное пространство, ограниченное лишь разрядностью адресной шины, независимо от общего объема оперативной памяти компьютера и объемов памяти, используемых другими программами, параллельно обрабатываемыми в мультипрограммной ЭВМ.
Виртуальная память, обеспечивая возможность программисту обращаться к очень большому объему непрерывного адресного пространства, предоставляемого в его монопольное распоряжение, обладает обычными свойствами: побайтовая адресация, время доступа, сравнимое со временем доступа к оперативной памяти.
На всех этапах подготовки программ, включая загрузку в оперативную память, программа представляется в виртуальных адресах, и лишь при выполнении машинной команды виртуальные адреса преобразуются в физические. Для каждой программы, выполняемой в мультипрограммном режиме, создается своя виртуальная память. Каждая программа использует одни и те же виртуальные адреса от нулевого до максимально большого в данной архитектуре.
Для преобразования виртуальных адресов в физические физическая и виртуальная память разбиваются на блоки фиксированной длины, называемые страницами. Объемы виртуальной и физической страниц совпадают. Страницы виртуальной и физической памяти нумеруются.
Виртуальный (логический) адрес в этом случае представляет собой номер виртуальной страницы и смещение внутри этой страницы.В свою очередь, физический адрес - это номер физической страницы и смещение в ней.
Вначале в ОП загружается первая страница программы и ей передается управление. Когда в ходе выполнения программы происходит обращение за пределы загруженной страницы, операционная система прерывает выполнение данной программы, загружает требуемую страницу в ОП, после чего передает управление прерванной программе.
Правила перевода номеров виртуальных страниц в номера физических страниц обычно задаются в виде таблицы страничного преобразования. Такие таблицы формируются системой управления памятью и модифицируются каждый раз при перераспределении памяти.
Перевод виртуальных адресов в физические проиллюстрирован на рис. 15.2.
Рис. 15.2. Преобразование виртуального адреса в физический
Рассмотрим пример преобразования адреса виртуальной страницы в адрес физической страницы. Пусть компьютер имеет оперативную память VОЗУ=3 и адресное пространство, предполагающее разбиение на страницы объемом Vстр=1. Каждая программа, в свою очередь, разбивается на виртуальные страницы того же объема. Пусть коэффициент мультипрограммирования данной ЭВМ равен четырем, то есть на компьютере могут одновременно выполняться до четырех программ. Переключение между программами происходит через tk = 1. Время выполнения каждой страницы любой программы составляет t = 2tk. Полагаем, что страницы программ загружаются в оперативную память по мере их необходимости и, по возможности, в свободные области ОЗУ. Если вся память занята, то новая страница замещает ту, к которой дольше всего не было обращений (механизм замещения LRU). Пусть выполняемые программы имеют следующее количество страниц: VA=2, VB=1, VC=3, VD=2. Тогда таблица загрузки оперативной памяти и таблицы страничного преобразования для каждой программы будут иметь следующий вид:
Таблица 15.1.
Страница
Такты
Динамическое распределение оперативной памяти
ОЗУ 0
А0
А0
А0
D0
D0
D0
C0
C0
C0
C1
C1
C1
C1
C1
C1
C1
B0
B0
B0
A0
A0
A0
D0
D0
D0
D1
D1
D1
D1
D1
D1
C0
C0
C0
B0
B0
B0
A1
A1
A1
A1
A1
A1
C2
C2
Таблица страничного преобразования для программы A
A 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Таблица страничного преобразования для программы B
B 0
-
-
-
-
-
-
-
-
-
-
Таблица страничного преобразования для программы C
С 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Таблица страничного преобразования для программы
D 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
В таблице распределения оперативной памяти выделены номера активных в данном такте страниц.
В таблицах страничного преобразования прочерками отмечены ситуации, когда данная виртуальная страница отсутствует в оперативной памяти.
Если каждая страница имеет объем 1000 адресуемых ячеек, то, например, в такте 9 обращение по виртуальному адресу 1100 программы A (виртуальная страница 1, смещение в странице равно 100) приведет к обращению по физическому адресу 2100 (физическая страница 2, смещение в физической странице такое же, как и в виртуальной - 100).
Таблица страничного преобразования хранится в ОП. В связи с этим каждое обращение программы к памяти за командой или за операндом требует дополнительного обращения к оперативной памяти для страничного преобразования, что существенно снижает производительность компьютера. Для уменьшения влияния этого фактора используются различные подходы. Основной из них - метод, при котором после первого преобразования номера виртуальной страницы полученный номер физической страницы запоминается во внутренних служебных регистрах микропроцессора. При очередном обращении к памяти аппаратными средствами микропроцессора осуществляется проверка того, было ли уже обращение к данной виртуальной странице. Если было, то номер соответствующей ей физической страницы уже находится в микропроцессоре. В противном случае преобразование выполняется обычным образом с обращением к оперативной памяти. Так как программа может достаточно долго обращаться к адресам, находящимся в пределах одной страницы, такой подход существенно сокращает время на страничное преобразование.
16. Лекция: Система управления памятью в персональной ЭВМ
Страницы: 1 | 2 | вопросы |»
| учебники | для печати и PDA | ZIP
Если Вы заметили ошибку - сообщите нам, или выделите ее и нажмите Ctrl+Enter
Рассматриваются вопросы, связанные с распределением памяти, организацией виртуальной памяти на основе страничного распределения, а также сегментно-страничное представление памяти в персональной ЭВМ и методы сокращения времени адресного преобразования.
В ЭВМ на основе 32-разрядного микропроцессора при работе в так называемом защищенном режиме, поддерживающем мультипрограммирование и обеспечивающем адресацию операндов в максимально возможном для данной архитектуры диапазоне до 232 байт, виртуальная память организуется на основе сегментно-страничного представления памяти. При этом память разбивается на сегменты переменной длины, выделяемые пользователю под размещение его программ и данных. Сегменты, в свою очередь, делятся на страницы фиксированной длины (4К = 212 байт), используемые системой управления памятью для ее виртуализации [4]
Начало каждого сегмента устанавливается операционной системой через соответствующий сегментный регистр и скрыто от пользователя. Пользователь пишет свои программы в адресах относительно начала сегмента, полагая, что он располагает сегментом максимально возможной для данной архитектуры длины (232 байт). Аппаратные средства микропроцессора сначала проводят сегментное преобразование адреса, а затем - страничное.
Механизм формирования физического адреса при сегментно-страничной организации памяти показан на рис. 16.1
Рис. 16.1. Формирование физического адреса при сегментно-страничной организация памяти в 32-разрядном микропроцессоре
Основой получения физического адреса, выдаваемого на адресную шину микропроцессора, служит логический адрес. Он состоит из двух частей: селектора, являющегося идентификатором сегмента, и смещения в сегменте.
Смещение в сегменте (32 разряда) (эффективный адрес) вычисляется по задаваемому в команде режиму адресации операнда и является виртуальным адресом операнда. При обращении к команде в качестве смещения выступает значение регистра-указателя команд.
Селектор размещается в сегментном регистре (см. рис. 16.1). Основная его часть представляет собой номер (INDEX), по которому в одной из специальных таблиц дескрипторов можно найти дескриптор (описатель) данного сегмента. Вид используемой таблицы определяется битом TI (table indicator) селектора. Селектор содержит также двухразрядное поле RPL, используемое при организации защиты памяти по привилегиям.
Дескриптор (рис. 16.2) содержит сведения о сегменте. В одном из его полей содержится базовый адрес сегмента. В остальных полях записана дополнительная информация о сегменте: длина, допустимый уровень прав доступа к данному сегменту с целью защиты находящейся в нем информации, тип сегмента (сегмент кода, сегмент данных, специальный системный сегмент и т.д.) и некоторые другие атрибуты.
Рис. 16.2. Структура дескриптора сегмента
Сумма полученного из дескриптора базового адреса сегмента и вычисленного смещения дает линейный адрес операнда, который при включенном механизме страничного преобразования представляет собой номер виртуальной страницы (старшие 20 разрядов) и смещение операнда в странице (младшие 12 разрядов линейного адреса в соответствии с объемом страницы в 4 Кбайт).
При преобразовании номера виртуальной страницы в номер физической используются следующие системные объекты: каталог таблиц страниц (КТС) и таблицы страниц (ТС). Структуры этих таблиц сходны между собой (рис. 16.3).
Рис. 16.3. Элемент каталога таблиц страниц (таблицы страниц)
Преобразование проводится в два этапа.
Сначала по разрядам А31-А22 линейного адреса в КТС выбирается нужный элемент. Каталог таблиц страниц всегда присутствует в ОП и содержит указания по размещению таблицы страниц, относящейся к тому или иному процессу.
Элемент КТС содержит
адрес начала таблицы страниц,
бит присутствия (P) таблицы страниц в оперативной памяти,
бит разрешения чтения/записи (R/W),
бит защиты страницы (пользователь/супервизор (U/S)) и некоторые другие атрибуты.
После получения из выбранного элемента КТС начального адреса таблицы страниц происходит обращение к ТС. В выбранной таблице страниц находится элемент, номер которого определяется разрядами А21-А12 линейного адреса. Структура элемента таблицы страниц аналогична структуре элемента КТС. Элемент ТС в соответствующем поле содержит адрес начала требуемой физической страницы и другие атрибуты, аналогичные элементу КТС.
При P=0 возникает прерывание, необходимая страница подкачивается в ОП, ее адрес заносится в соответствующий элемент ТС, и команда выполняется повторно.
Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет
studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав!Последнее добавление