Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

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

Таненбаун Э. Архитектура компьютера — Спб.: Питер, 2007. — 844 c.
ISBN 5-469-01274-3
Скачать (прямая ссылка): arhkomputera2007.DjVu
Предыдущая << 1 .. 232 233 234 235 236 237 < 238 > 239 240 241 242 243 244 .. 422 >> Следующая

Часто приходилось использовать более медленный алгоритм только потому,
что более быстрый не удавалось разместить в памяти компьютера.
Традиционным решением проблемы было использование вспомогательной памяти
(например, диска). Программист делил программу на несколько частей, так
называемых оверлеев, каждый из которых помещался в память. Чтобы
выполнить программу, сначала нужно было считать и запустить первый
оверлей. Когда он завершался, считывался и запускался второй оверлей и т.
д. Программист отвечал за разбиение программы на оверлеи и решал, в каком
месте вспомогательной памяти должен храниться каждый оверлей,
контролировал передачу оверлеев между основной и вспомогательной памятью
и вообще управлял всем этим процессом без какой-либо помощи со стороны
компьютера.
Хотя эта технология широко использовалась на протяжении многих лет, она
требовала длительной кропотливой работы, связанной с управлением
оверлеями. В 1961 году группа исследователей из Манчестера (Англия)
предложила метод автоматического выполнения процесса наложения, при
котором программист мог вообще не знать об этом процессе [73]. Этот
метод, в основе которого, как сейчас говорят, лежит использование
виртуальной памяти, имел очевидное преимущество, поскольку освобождал
программиста от массы нудной работы.
Виртуальная память 477
Впервые этот метод был применен в ряде компьютеров, выпущенных в 60-е
годы. К началу 70-х годов виртуальная память была реализована в
большинстве компьютеров. В настоящее время даже компьютеры1 на одной
микросхеме, в том числе Pentium 4 и UltraSPARC III, содержат очень
сложные системы виртуальной памяти. Мы рассмотрим их далее в этой главе.
Страничная организация памяти
Идею о разделении понятий адресного пространства и адресов памяти
выдвинула группа ученых из Манчестера. Рассмотрим в качестве примера
типичный компьютер того времени с 16-разрядным полем адреса в командах и
4096 словами памяти. Программа, работающая на таком компьютере, могла
обращаться к 65 536 словам памяти (поскольку адреса были 16-разрядными, а
216 = 65 536). Обратите внимание, что число адресуемых слов зависит
только от числа битов адреса и никак не связано с числом реально
доступных слов в памяти. Адресное пространство такого компьютера состоит
из чисел 0, 1,2,..., 65 535, так как это - набор всех возможных адресов.
Однако в действительности компьютер мог иметь гораздо меньше слов в
памяти.
До изобретения виртуальной памяти приходилось проводить жесткое различие
между адресами, меньшими 4096, и адресами, равными или большими 4096. Эти
две части рассматривались как полезное адресное пространство и
бесполезное адресное пространство соответственно (адреса выше 4095 были
бесполезными, поскольку они не соответствовали реальным адресам памяти).
Никакого различия между адресным пространством и адресами памяти не
проводилось, поскольку между ними подразумевалось взаимно-однозначное
соответствие.
Идея разделения понятий адресного пространства и адресов памяти состоит в
следующем. В любой момент времени можно получить прямой доступ к 4096
словам памяти, но это не значит, что они непременно должны
соответствовать адресам памяти от 0 до 4095. Например, мы могли бы
сообщить компьютеру, что при обращении к адресу 4096 нужно использовать
слово из памяти с адресом 0, при обращении к адресу 4097 - слово из
памяти с адресом 1, при обращении к адресу 8191 - слово из памяти с
адресом 4095 и т. д. Другими словами, мы отображаем адресное пространство
на действительные адреса памяти (рис. 6.2).
Согласно этой схеме отображения адресов адресного пространства на
фактические ячейки памяти, в машине с объемом памяти 4 Кбайт (без
виртуальной памяти) между адресами от 0 до 4095 и словами памяти числом
4096 существует прямое соответствие. Возникает интересный вопрос: а что
произойдет, если программа совершит переход к одному из адресов в
диапазоне от 8192 по 12 287? В машине без виртуальной памяти произойдет
ошибка, на экран будет выведено сообщение о несуществующем адресе памяти,
и выполнение программы прервется.
1 Строго говоря, сверхбольшие интегральные микросхемы, на которых сейчас
располагаются микропроцессоры, в том числе и упоминаемый автором
процессор Pentium 4, не являются компьютерами. Компьютер должен
содержать, помимо процессора, память и контроллер для управления ею,
устройства ввода-вывода и соответствующие контроллеры для управления ими.
- Примеч. научн. ред.
478
Глава 6. Уровень операционной системы
Адресное
пространство
Адрес ? \
8191 4096 0
Рис. 6.2. Виртуальные адреса памяти с 4096 по 8191 отображаются на адреса
основной
памяти с 0 по 4095
В машине с виртуальной памятью произойдет следующее:
1. Содержимое основной памяти будет сохранено на диске.
2. Слова с 8192 по 12 287 будут сохранены на диске.
3. Слова с 8192 до 12 287 будут загружены в основную память.
4. Отображение адресов изменится: адреса с 8192 по 12 287 будут
Предыдущая << 1 .. 232 233 234 235 236 237 < 238 > 239 240 241 242 243 244 .. 422 >> Следующая