Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Проблемы страничной переадресации






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

В защищенном режиме в принципе доступно все физическое адресное простран­
ство, но появляются проблемы, связанные с отображением логических адресов на
физические. Отображением (поддержкой таблиц переадресации) ведает ОС, при­
ложения могут только узнать карту отображений (получить список физических
адресов страниц для какой-то области своей виртуальной памяти). Какие-то об­
ласти могут в данный момент и не присутствовать в ОЗУ (они могут быть выгру^
женными на диск). У драйверов устройств возможностей больше — они могут за­
просить блок памяти с последовательными физическими страницами и потребовать
фиксации определенных страниц (запретить их выгрузку из ОЗУ).


12.5. Процессоры х86________________________________________________ 473

При организации прямого доступа к памяти, как по стандартным каналам DMA, так и используя ведущие устройства шин ISA и PCI, возникает проблема пересе­чения границ страниц. Если приложение хочет выполнить обмен по DMA с обла­стью доступной ей памяти непосредственно, то оно должно запросить у ОС физи­ческий адрес, которому соответствует логический адрес предполагаемого буфера обмена. Именно этот физический адрес должен задаваться устройству, выполня­ющему DMA, при инициализации сеанса обмена (указании начального адреса, длины блока и запуске канала). В каждом сеансе обмена не должна пересекаться граница страницы, которой оперирует блок страничной переадресации, посколь­ку следующая логическая страница может иметь физическое отображение в про­извольном (относительно предыдущей страницы) месте. Чаще всего ОС опери­рует страницами по 4 Кбайт, при этом пересылка больших блоков данных ведется «короткими перебежками», между которыми процессор должен выполнять повтор­ную инициализацию DMA. Эта проблема решается усложнением контроллеров DMA — применением «разбросанной записи» в память (scatter write) и «собира­ющего чтения» памяти (gather read). Контроллеру DMA задается список описате­лей блоков (начальный адрес и длина). Отработав очередной блок памяти, кон­троллер переходит к следующему, и так до конца списка. Такие возможности имеет, например, стандартный контроллер PCI IDE (см. п. 9.2.1). Стандартный контроллер DMA имеет и другую «страничную проблему», связанную с реализа­цией регистров страниц (см. п. 12.4).

Проблема пересечения границ может решаться и иначе, без усложнения кон­троллера DMA. Для этого в памяти резервируется буфер значительного размера, отображенный на непрерывную область физической памяти, и обмен данными физическое устройство выполняет только с этим буфером. Однако такой буфер рядовое приложение создать не может; он может быть организован лишь драйве­ром устройства. Приложения могут только получать указатели на этот буфер и об­мениваться с ним данными. Таким образом, по пути от приложения к устройству появляется дополнительная «перевалочная база» (буфер драйвера) и дополни­тельная пересылка данных, что приводит к дополнительным затратам времени.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.