Виртуальная память. Оверлеи. Виртуальная память. Страничная организация памяти. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Виртуальная память. Оверлеи. Виртуальная память. Страничная организация памяти.



Оверлеи

Уже достаточно давно люди впервые столкнулись с проблемой размещения про­грамм, оказавшихся слишком большими и поэтому не помещавшихся в доступной физической памяти. Обычно принималось решение о разделении программы на части, называемые оверлеями (overlays). Оверлей 0 обычно запускался первым. После окончания своего выполнения он вызывал следующий оверлей. Некоторые оверлейные системы были очень сложными, позволяющими одновременно нахо­диться в памяти нескольким оверлеям. Оверлеи хранились на диске и по мере не­обходимости динамически перемещались между памятью и диском средствами операционной системы.

Виртуальная память

Основная идея виртуальной памяти заключается в том, что объединенный размер программы, дан­ных и стека может превысить количество доступной физической памяти. Опера­ционная система хранит части программы, использующиеся в настоящий момент, в оперативной памяти, остальные — на диске. Например, программа размером 16 Мбайт сможет работать на машине с 4 Мбайт памяти, если тщательно проду­мать, какие 4 Мбайт должны храниться в памяти в каждый момент времени. При этом части программы, находящиеся на диске и в памяти, будут меняться местами по мере необходимости.

Виртуальная память может также работать в многозадачной системе при одно­временно находящихся в памяти частях многих программ. Когда программа ждет перемещения в память очередной ее части, она находится в состоянии ожидания ввода-вывода и не может работать, поэтому центральный процессор может быть отдан другому процессу тем же самым способом, как в любой другой многозадач­ной системе.

Страничная организация памяти

Большинство систем виртуальной памяти используют технику, называемую стра­ничной организацией памяти (paging), которую мы сейчас опишем. На любом ком­пьютере существует множество адресов в памяти, к которым может обратиться программа. Адреса могут форми­роваться с использованием индексации, базовых регистров, сегментных регистров и другими путями.На компьютерах без виртуальной памяти виртуальные адреса подаются непосредственно на шину памяти и вызыва­ют для чтения или записи слово в физической памяти с тем же самым адресом. Когда используется виртуальная память, виртуальные адреса не передаются на­прямую шиной памяти. Вместо этого они передаются диспетчеру памяти (MMU — Memory Management Unit), который отображает виртуальные адреса на физичес­кие адреса памяти, как продемонстрировано на рис. 1.

Пространство виртуальных адресов разделено на единицы, называемые стра­ницами. Соответствующие единицы в физической памяти называются странич­ными блоками (page frame). Страницы и их блоки имеют всегда одинаковый раз­мер. В этом примере они равны 4 Кбайт, но в реальных системах использовались размеры страниц от 512 байт до 64 Кбайт. Имея 64 Кбайт виртуального адресного пространства и 32 Кбайт физической памяти, мы получаем 16 виртуальных стра­ниц и 8 страничных блоков. Передача данных между ОЗУ и диском всегда проис­ходит в страницах.

 

Ввод-вывод в операционной системе. Принципы аппаратуры ввода-вывода. Устройства ввода-вывода. Контроллеры устройств.

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

Принципы аппаратуры ввода-вывода

Разные специалисты рассматривают аппаратуру ввода-вывода с различных точек зрения. Инженеры-электронщики видят в них микросхемы, провода, источники питания, двигатели и прочие физические компоненты, из которых и состоит аппа­ратура. Программисты в первую очередь обращают внимание на интерфейс, пре­доставляемый программному обеспечению, — команды, принимаемые аппарату­рой, выполняемые ею функции и ошибки, о которых аппаратура может сообщить.

Устройства ввода-вывода

Устройства ввода-вывода можно грубо разделить на две категории: блочные устройства и символьные устройства. Блочными называются устройства, храня­щие информацию в виде блоков фиксированного размера, причем у каждого бло­ка имеется адрес. Важное свойство блочного устройства состоит в том, что каждый его блок может быть прочитан независимо от остальных блоков. Наиболее распространенными блочными устройствами являются диски.

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

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

Устройства ввода-вывода покрывают огромный диапазон скоростей, что созда­ет определенные трудности для программного обеспечения, которому приходится обеспечивать хорошую производительность на скоростях передачи данных, раз­личающихся несколькими порядками.

Контроллеры устройств

Устройства ввода-вывода обычно состоят из механической части и электронной части. Часто эти части можно разделить для придания модели более модульного и общего вида. Электронный компонент устройства называется контроллером устройства или адаптером. В персональных компьютерах он часто принимает форму печатной платы, вставляемой в слот расширения. Механический компонент находится в самом устройстве.

Плата контроллера обычно снабжается разъемом, к которому может быть подключен кабель, ведущий к самому устройству. Многие контроллеры способны управлять двумя, четырьмя или даже восемью идентичными устройствами. Если интерфейс между контроллером и устройством является стандартным, тогда различные компании могут выпускать отдельно контроллеры и устройства, удовлетворяющие данному интерфейсу.

Работа контроллера заключается в конвертировании последовательного пото­ка битов в блок байтов и выполнение коррекции ошибок, если это необходимо. Обычно байтовый блок собирается бит за битом в буфере контроллера. Затем про­веряется контрольная сумма блока, и если она совпадает с указанной в заголовке сектора, блок объявляется считанным без ошибок, после чего он копируется в опе­ративную память.

Ввод-вывод в операционной системе. Отображаемый на адресное пространство памяти ввод-вывод. Преимущество отображаемого на адресное пространство ввода/вывода. Недостатки отображаемого на адресное пространство ввода/вывода. Способы устранения недостатков

Отображаемый на адресное пространство памяти ввод-вывод

У каждого контроллера есть несколько регистров, с помощью которых с ним мо­жет общаться центральный процессор. При помощи записи в эти регистры опера­ционная система велит устройству предоставить данные, принять данные, вклю­читься или выключиться и т. п. Читая из этих регистров, операционная система может узнать состояние устройства, например готово ли оно к приему новой команды и т. д.

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

Существует два альтернативных способа реализации доступа к управляющим регистрам и буферам данных устройств ввода-вывода. Первый вариант заключа­ется в том, что каждому управляющему регистру назначается номер порта ввода-вывода, 8- или 16-разрядное целое число.

Второй подход, впервые реализованный в компьютере PDP-11, состоял в ото­бражении всех управляющих регистров периферийных устройств на адресное про­странство памяти. Каждому управляющему регистру назначался уникальный адрес в памяти. Такая система называется отображае­мым на адресное пространство памяти вводом-выводом. Обычно для регистров устройств отводятся адреса на вершине адресного пространства. Также существуют различные гибридные схемы, с отображаемыми на адресное пространство па­мяти буферами данных и отдельными портами ввода-вывода.

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

Преимущество отображаемого на адресное пространство ввода/вывода

Обе схемы обращения к контроллерам имеют свои сильные и слабые стороны. Начнем с достоинств отображаемого на адресное пространство памяти ввода-вы­вода. Во-первых, при такой схеме для обращения к устройствам ввода-вывода не требуются специальные команды процессора, такие как IN и OUT. В результате про­грамму, общающуюся с таким устройством, можно написать целиком на языке С или C++.

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

В-третьих, при отображении регистров ввода-вывода на память каждая команда процессора, обращающаяся к памяти, может с тем же успехом обращаться к управ­ляющим регистрам устройства.

Недостатки отображаемого на адресное пространство ввода/вывода

Отображение регистров ввода-вывода на память также обладает недостатками. Во-первых, в большинстве современных компьютеров применяется кэширование памяти. Кэширование управляющих ре­гистров привело бы просто к катастрофе. Поясним это утверждение на уже приве­денном выше примере программы, опрашивающей в цикле порт PORT_4. При пер­вом обращении к этому порту считалось бы верное значение порта, но это значение сохранилось бы в кэше. Все последующие обращения к порту PORT_4 на следую­щих итерациях цикла просто читали бы значение, сохраненное в кэше, и никогда не обращались бы к реальному устройству. Таким образом, программа никогда не вышла бы из цикла ожидания готовности, так как при кэшировании регистров устройств она просто не смогла бы узнать об изменении управляющего регистра.

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

Способы устранения недостатков

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

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

Третье решение состоит в фильтрации адресов микросхемой моста PCI. Эта микросхе­ма содержит регистры диапазона, заполняемые во время загрузки компьютера. Например, диапазон адресов от 640 К до 1 М может быть помечен как не относя­щийся к памяти. Все адреса, попадающие в подобный диапазон, передаются не памяти, а на шину PCI. Недостаток этой схемы состоит в необходимости приня­тия во время загрузки решения о том, какие адреса не являются адресами памяти. Таким образом, у каждой схемы есть свои достоинства и недостатки.

 



Поделиться:


Последнее изменение этой страницы: 2016-09-19; просмотров: 724; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.46.13 (0.012 с.)