DVD+R-PN-8.5x8BULK.jpg
article.cd_.dvd_.jpg


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

В то время как для создания абстракции адресного пространства могут быть использонаны базовые и ограничительные регистры, нужно решить еще одну проблему: управление ресурсоемким программным обеспечением. Несмотря на быстрый рост объемов памяти, объемы, требующиеся программному обеспечению, растут намного быстрее. В 80-е годы многие университеты работали на машинах VAX, имеющих память объемом 4 Мбайт, под управлением систем с разделением времени, которые одновременно обслуживали с десяток (более или менее удовлет­воренных) пользователей. Теперь корпорация Microsoft рекомендует использовать как минимум 512 Мбайт памяти для однопользовательской системы Vista, чтобы запускать простые приложения, и 1 Гбайт памяти, если вы собираетесь делать что-либо более существенное. Тенденция к использованию мультимедиа предъявляет к объему памяти еще более весомые требования.

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

пущенных программ, каждая из которых помешается в памяти, но все они вместе превышают имеющийся объем памяти. Свопинг — не слишком привлекательный выбор, поскольку обычный диск с интерфейсом SATA обладает пиковой скоро­стью передачи данных не более 100 Мб/с, а это означает, что свопинг программы объемом 1 Гбайт займет как минимум 10 с, и еще 10 с уйдут на загрузку другой программы в 1 Гбайт.

Проблемы программ, превышающих по объему размер имеющейся памяти, возникли еще на заре компьютерной эры, правда, проявились они в таких узких областях, как решение научных и прикладных задач (существенные объемы памяти требуются для моделирования возникновения Вселенной или даже для авиасиму-лятора нового самолета). В 60-е годы было принято решение разбивать программы на небольшие части, называемые оверлеями. При запуске программы в память загружался только администратор оверлейной загрузки, который тут же загружал и запускал оверлей с порядковым номером 0. Когда этот оверлей завершал свою ра­боту, он мог сообщить администратору загрузки оверлеев о необходимости загрузки оверлея 1, либо выше оверлея 0, находящегося в памяти (если для него было доста­точно пространства), либо поверх оверлея 0 (если памяти не хватало). Некоторые оверлейные системы имели довольно сложное устройство, позволяя одновременно находиться в памяти множеству оверлеев. Оверлеи хранились на диске, и их свопинг с диска в память и обратно осуществлялся администратором загрузки оверлеев.

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

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

 
Поиск

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