Статус
нашего
сайта:
ICQ Secrets Center is Online  ICQ Information Center


ICQ SHOP
     5-значные
     6-значные
     7-значные
     8-значные
     9-значные
     Rippers List
ОПЛАТА
СТАТЬИ
СЕКРЕТЫ
HELP CENTER
OWNED LIST
РОЗЫСК!New!
ICQ РЕЛИЗЫ
Протоколы ICQ
LOL ;-)
Настройка компьютера
Аватарки
Смайлики
СОФТ
     Mail Checkers
     Bruteforces
     ICQTeam Soft
     8thWonder Soft
     Other Progs
     ICQ Patches
     Miranda ICQ
ФорумАрхив!
ВАШ АККАУНТ
ICQ LiveJournal

Реклама

Наш канал:

irc.icqinfo.ru

Таненбаум Э.- Архитектура компьютера. стр.351


Таненбаум Э.- Архитектура компьютера. стр.351

Виртуальная память и кэширование

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

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

Естественно, виртуальная память и кэш-память кое в чем различаются. Кэш-промахи обрабатываются аппаратно, а ошибки отсутствия страниц обрабатываются операционной системой. Блоки кэш-памяти обычно гораздо меньше страниц (сравните: 64 байта против 8 Кбайт). Кроме того, таблицы страниц индексируются по старшим битам виртуального адреса, а кэш-память индексируется по младшим битам адреса памяти. Тем не менее важно понимать, что различие здесь только в реализации.

Виртуальные команды ввода-вывода

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

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

+ аппаратура диска не смогла выполнить позиционирование;

+ несуществующий элемент памяти определен как буфер;

+ процесс ввода-вывода с диска (на диск) начался до того, как закончился предыдущий;

+ ошибка синхронизации при считывании;

+ обращение к несуществующему диску;

+ обращение к несуществующему цилиндру;

+ обращение к несуществующему сектору;

+ несоответствие контрольных сумм при считывании;


⇐ Предыдущая страница| |Следующая страница ⇒

.