Статус нашего сайта: |
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Виртуальная память и кэширование На первый взгляд может показаться, что виртуальная память и кэширование никак не связаны, но на самом деле эти механизмы похожи. При наличии виртуальной памяти вся программа хранится на диске и разбивается на страницы фиксированного размера. Некоторое подмножество этих страниц находится в основной памяти. Если программа главным образом использует страницы из основной памяти, то ошибки отсутствия страницы будут встречаться редко, и программа сможет работать быстро. При кэшировании вся программа хранится в основной памяти и разбивается на блоки фиксированного размера. Некоторое подмножество этих блоков находится в кэш-памяти. Если же программа главным образом использует блоки из кэш-памяти, то кэш-промахи будут происходить редко, и программа сможет работать быстро. Как видим, виртуальная память и кэш-память идентичны, разве что работают они на разных уровнях иерархии. Естественно, виртуальная память и кэш-память кое в чем различаются. Кэш-промахи обрабатываются аппаратно, а ошибки отсутствия страниц обрабатываются операционной системой. Блоки кэш-памяти обычно гораздо меньше страниц (сравните: 64 байта против 8 Кбайт). Кроме того, таблицы страниц индексируются по старшим битам виртуального адреса, а кэш-память индексируется по младшим битам адреса памяти. Тем не менее важно понимать, что различие здесь только в реализации. Виртуальные команды ввода-вывода Как вам уже известно, наборы команд на уровне архитектуры команд и на уровне микроархитектуры совершенно разные. Различаются не только сами команды, но и их форматы, а некоторые совпадения совершенно случайны. Набор команд уровня операционной системы содержит большую часть команд уровня архитектуры команд, а также несколько новых очень важных команд. В то же время некоторые ненужные команды на уровне операционной системы не поддерживаются. Ввод-вывод — это одна из областей, в которых эти два уровня отличаются очень значительно. Причина таких различий проста. Во-первых, пользователь, способный выполнять команды ввода-вывода уровня архитектуры команд, может считать конфиденциальную информацию, хранящуюся где-нибудь в «дебрях» операционной системы, и вообще потенциально представляет для системы угрозу. Во-вторых, нормальный программист совершенно не горит желанием реализовать ввод-вывод на уровне архитектуры команд, поскольку это слишком сложно и утомительно. Вместо этого для ввода-вывода можно просто установить определенные поля и биты в ряде регистров устройств, затем подождать, пока операция закончится, и проверить, что произошло. Обычно биты регистров дисковых устройств позволяют обнаруживать следующие ошибки: + аппаратура диска не смогла выполнить позиционирование; + несуществующий элемент памяти определен как буфер; + процесс ввода-вывода с диска (на диск) начался до того, как закончился предыдущий; + ошибка синхронизации при считывании; + обращение к несуществующему диску; + обращение к несуществующему цилиндру; + обращение к несуществующему сектору; + несоответствие контрольных сумм при считывании; |