stringtranslate.com

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

Виртуальная память объединяет активную оперативную память и неактивную память на DASD [a] для формирования большого диапазона смежных адресов.

В вычислительной технике виртуальная память или виртуальное хранилище [ b] — это метод управления памятью , который обеспечивает «идеализированную абстракцию ресурсов хранения, которые фактически доступны на данной машине» [3] , что «создает для пользователей иллюзию очень большой (основной) памяти». [4]

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

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

Характеристики

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

Виртуализацию памяти можно считать обобщением концепции виртуальной памяти.

Использование

Виртуальная память является неотъемлемой частью современной компьютерной архитектуры ; реализации обычно требуют аппаратной поддержки, как правило, в форме блока управления памятью, встроенного в ЦП . Хотя это и не обязательно, эмуляторы и виртуальные машины могут использовать аппаратную поддержку для повышения производительности своих реализаций виртуальной памяти. [6] Более старые операционные системы, такие как для мэйнфреймов 1960 -х годов и для персональных компьютеров начала-середины 1980-х годов (например, DOS ), [7] обычно не имеют функциональности виртуальной памяти, [ сомнительнообсудить ] хотя заметные исключения для мэйнфреймов 1960-х годов включают:

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

Большинство современных операционных систем, поддерживающих виртуальную память, также запускают каждый процесс в своем собственном выделенном адресном пространстве . Таким образом, каждая программа, по-видимому, имеет исключительный доступ к виртуальной памяти. Однако некоторые старые операционные системы (такие как OS/VS1 и OS/VS2 SVS ) и даже современные (такие как IBM i ) являются операционными системами с одним адресным пространством , которые запускают все процессы в одном адресном пространстве, состоящем из виртуализированной памяти.

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

История

В 1950-х годах все более крупные программы должны были содержать логику для управления первичной и вторичной памятью, например, наложение . Поэтому виртуальная память была введена не только для расширения первичной памяти, но и для того, чтобы сделать такое расширение максимально простым в использовании для программистов. [8] Для обеспечения многозадачности и многопрограммирования многие ранние системы разделяли память между несколькими программами без виртуальной памяти, например, ранние модели PDP-10 с помощью регистров .

Утверждение, что концепция виртуальной памяти была впервые разработана немецким физиком Фрицем-Рудольфом Гюнчем в Техническом университете Берлина в 1956 году в его докторской диссертации « Логическая конструкция цифрового компьютера с несколькими асинхронными вращающимися барабанами и автоматической высокоскоростной работой памяти» [9] [10], не выдерживает тщательной проверки. Компьютер, предложенный Гюнчем (но так и не построенный), имел адресное пространство из 10 5 слов, которое точно отображалось на 10 5 слов барабанов, т. е. адреса были реальными адресами, и не было никакой формы косвенного отображения, ключевой особенности виртуальной памяти. То, что Гюнч действительно изобрел, было формой кэш-памяти , поскольку его высокоскоростная память предназначалась для хранения копии некоторых блоков кода или данных, взятых с барабанов. Действительно, он писал (как цитируется в переводе [11] ): «Программисту не нужно уважать существование первичной памяти (ему даже не нужно знать, что она существует), поскольку существует только один вид адресов ( sic ), с помощью которых можно программировать так, как будто есть только одно хранилище». Именно такая ситуация сложилась в компьютерах с кэш-памятью, одним из самых ранних коммерческих примеров которых была IBM System/360 Model 85. [12] В Model 85 все адреса были реальными адресами, ссылающимися на основное хранилище. Полупроводниковое кэш-хранилище, невидимое для пользователя, хранило содержимое частей основного хранилища, используемых текущей выполняемой программой. Это в точности аналогично системе Гюнча, разработанной как средство повышения производительности, а не для решения проблем, связанных с многозадачностью.

Компьютер Atlas Манчестерского университета стал первым компьютером с настоящей виртуальной памятью.

Первая настоящая система виртуальной памяти была реализована в Университете Манчестера для создания одноуровневой системы хранения [13] как часть компьютера Atlas . Он использовал механизм страничного обмена для отображения виртуальных адресов, доступных программисту, на реальную память, которая состояла из 16 384 слов первичной основной памяти с дополнительными 98 304 словами вторичной барабанной памяти . [14] Добавление виртуальной памяти в Atlas также устранило надвигающуюся проблему программирования: планирование и составление расписания передач данных между основной и вторичной памятью и перекомпиляцию программ для каждого изменения размера основной памяти. [15] Первый Atlas был введен в эксплуатацию в 1962 году, но рабочие прототипы страничного обмена были разработаны к 1959 году. [8] : 2  [16] [17]

Еще в 1958 году Роберт С. Бартон , работавший в Shell Research, предположил, что основное хранилище должно выделяться автоматически, а не программист должен заниматься наложениями из вторичной памяти, по сути, виртуальной памяти. [18] : 49  [19] К 1960 году Бартон был ведущим архитектором проекта Burroughs B5000. С 1959 по 1961 год У. Р. Лонерган был менеджером группы планирования продукции Burroughs, в которую входили Бартон, Дональд Кнут в качестве консультанта и Пол Кинг. В мае 1960 года Калифорнийский университет в Лос-Анджелесе провел двухнедельный семинар «Использование и эксплуатация гигантских компьютеров», на который были отправлены Пол Кинг и еще двое. Стэн Гилл выступил с докладом о виртуальной памяти в компьютере Atlas I. Пол Кинг передал эти идеи обратно в Burroughs, и было решено, что виртуальная память должна быть спроектирована в ядре B5000. [18] : 3  . В 1964 году корпорация Burroughs выпустила B5000 как первый коммерческий компьютер с виртуальной памятью. [20]

IBM разработала [c] концепцию гипервизоров в своих CP-40 и CP-67 , а в 1972 году представила ее для S/370 как Virtual Machine Facility/370. [22] IBM представила инструкцию Start Interpretive Execution ( SIE ) как часть 370-XA на 3081 и версии VM/XA для ее использования.

Прежде чем виртуальная память могла быть реализована в основных операционных системах, необходимо было решить множество проблем. Динамическая трансляция адресов требовала дорогостоящего и сложного в разработке специализированного оборудования; первоначальные реализации немного замедляли доступ к памяти. [8] Были опасения, что новые общесистемные алгоритмы, использующие вторичное хранилище, будут менее эффективны, чем ранее используемые алгоритмы, специфичные для приложений. К 1969 году дебаты по поводу виртуальной памяти для коммерческих компьютеров были завершены; [8] исследовательская группа IBM под руководством Дэвида Сейра показала, что их система наложения виртуальной памяти постоянно работала лучше, чем лучшие системы с ручным управлением. [23] На протяжении 1970-х годов серия IBM 370, работающая под управлением их операционных систем на основе виртуального хранилища, предоставляла бизнес-пользователям возможность переносить несколько старых систем на меньшее количество более мощных мэйнфреймов, которые имели улучшенное соотношение цены и производительности. Первым мини-компьютером , внедрившим виртуальную память, был норвежский NORD-1 ; в 1970-х годах другие мини-компьютеры реализовали виртуальную память, в частности, модели VAX , работающие под управлением VMS .

Виртуальная память была введена в архитектуру x86 с защищенным режимом процессора Intel 80286 , но его метод подкачки сегментов плохо масштабировался для больших размеров сегментов. Intel 80386 ввел поддержку страничного обмена под существующим уровнем сегментации , что позволило исключению ошибки страницы сцепляться с другими исключениями без двойной ошибки . Однако загрузка дескрипторов сегментов была дорогостоящей операцией, заставив разработчиков операционных систем полагаться исключительно на страничное разделение, а не на комбинацию страничного обмена и сегментации. [ необходима цитата ]

Страничная виртуальная память

Почти все текущие реализации виртуальной памяти делят виртуальное адресное пространство на страницы , блоки смежных адресов виртуальной памяти. Страницы в современных [d] системах обычно имеют размер не менее 4 килобайт ; системы с большими диапазонами виртуальных адресов или объемами реальной памяти обычно используют страницы большего размера. [24]

Таблицы страниц

Таблицы страниц используются для преобразования виртуальных адресов, видимых приложением, в физические адреса, используемые оборудованием для обработки инструкций; [25] такое оборудование, которое обрабатывает это конкретное преобразование, часто называют блоком управления памятью . Каждая запись в таблице страниц содержит флаг, указывающий, находится ли соответствующая страница в реальной памяти или нет. Если она находится в реальной памяти, запись в таблице страниц будет содержать реальный адрес памяти, по которому хранится страница. Когда оборудование ссылается на страницу, если запись в таблице страниц для страницы указывает, что она в данный момент не находится в реальной памяти, оборудование вызывает исключение ошибки страницы , вызывая компонент супервизора подкачки операционной системы .

Системы могут иметь, например, одну таблицу страниц для всей системы, отдельные таблицы страниц для каждого адресного пространства или процесса, отдельные таблицы страниц для каждого сегмента; аналогично, системы могут иметь, например, ни одной таблицы сегментов, одну таблицу сегментов для всей системы, отдельные таблицы сегментов для каждого адресного пространства или процесса, отдельные таблицы сегментов для каждого региона в дереве [e] таблиц регионов для каждого адресного пространства или процесса. Если есть только одна таблица страниц, разные приложения, работающие одновременно, используют разные части одного диапазона виртуальных адресов. Если есть несколько таблиц страниц или сегментов, есть несколько виртуальных адресных пространств и параллельные приложения с отдельными таблицами страниц перенаправляют на разные реальные адреса.

Некоторые более ранние системы с меньшими размерами реальной памяти, такие как SDS 940 , использовали страничные регистры вместо страничных таблиц в памяти для трансляции адресов.

Руководитель пейджинга

Эта часть операционной системы создает и управляет таблицами страниц и списками свободных фреймов страниц. Чтобы гарантировать, что свободных фреймов страниц будет достаточно для быстрого устранения ошибок страниц, система может периодически красть выделенные фреймы страниц, используя алгоритм замены страниц , например, алгоритм Least recently used (LRU). Украденные фреймы страниц, которые были изменены, записываются обратно во вспомогательное хранилище перед тем, как они будут добавлены в свободную очередь. В некоторых системах супервизор подкачки также отвечает за управление регистрами трансляции, которые не загружаются автоматически из таблиц страниц.

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

В большинстве случаев произойдет обновление таблицы страниц, за которым может последовать очистка буфера обратных преобразований (TLB), а система перезапустит инструкцию, вызвавшую исключение.

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

Закрепленные страницы

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

Некоторые страницы могут быть закреплены на короткие периоды времени, другие могут быть закреплены на длительные периоды времени, а третьи могут нуждаться в постоянном закреплении. Например:

В операционных системах IBM для System/370 и последующих систем используется термин «фиксированный», и такие страницы могут быть долгосрочно фиксированными, или краткосрочно фиксированными, или нефиксированными (т. е. выгружаемыми). Структуры управления системой часто являются долгосрочно фиксированными (измеряемыми в настенном времени, т. е. времени, измеряемом в секундах, а не в долях секунды), тогда как буферы ввода-вывода обычно являются краткосрочно фиксированными (обычно измеряемыми значительно меньше, чем настенное время, возможно, в течение десятков миллисекунд). Действительно, ОС имеет специальную возможность для «быстрой фиксации» этих краткосрочно фиксированных буферов данных (фиксация, которая выполняется без обращения к длительной инструкции Supervisor Call ).

Multics использовал термин «wired». OpenVMS и Windows называют страницы, временно сделанные невыгружаемыми (как для буферов ввода-вывода), «заблокированными», и просто «невыгружаемые» для тех, которые никогда не выгружаемые. Единая спецификация UNIX также использует термин «заблокированный» в спецификации для , как и страницы руководства во многих Unix-подобных системах.mlock()mlock()

Виртуально-реальная операция

В OS/VS1 и подобных ОС некоторые части системной памяти управляются в режиме «виртуально-реальный», называемом «V=R». В этом режиме каждый виртуальный адрес соответствует одному и тому же реальному адресу. Этот режим используется для механизмов прерываний , для супервизора подкачки и таблиц страниц в старых системах, а также для прикладных программ, использующих нестандартное управление вводом-выводом. Например, z/OS от IBM имеет 3 режима (виртуально-виртуальный, виртуально-реальный и виртуально-фиксированный). [ необходима цитата ]

Избиение

При использовании подкачки и кражи страниц может возникнуть проблема, называемая « перегрузкой » [27] , при которой компьютер тратит ненадлежащим образом большое количество времени на передачу страниц в резервное хранилище и из него, тем самым замедляя полезную работу. Рабочий набор задачи — это минимальный набор страниц, которые должны быть в памяти, чтобы она могла выполнять полезную работу. Перегруз происходит, когда недостаточно памяти для хранения рабочих наборов всех активных программ. Добавление реальной памяти — самый простой ответ, но может помочь улучшение дизайна приложения, планирования и использования памяти. Другое решение — сократить количество активных задач в системе. Это снижает потребность в реальной памяти за счет замены всего рабочего набора одного или нескольких процессов.

Пробуксовка системы часто является результатом внезапного всплеска спроса на страницы от небольшого числа работающих программ. Swap-token [28] — это легкий и динамический механизм защиты от пробуксовки. Основная идея заключается в установке токена в системе, который случайным образом выдается процессу, у которого возникают ошибки страниц при пробуксовке. Процессу, имеющему токен, дается привилегия выделять больше страниц физической памяти для построения своего рабочего набора, который, как ожидается, быстро завершит свое выполнение и освободит страницы памяти другим процессам. Для передачи токена по одному используется временная метка. Первая версия swap-token была реализована в Linux 2.6. [29] Вторая версия называется preempt swap-token и также есть в Linux 2.6. [29] В этой обновленной реализации swap-token для каждого процесса устанавливается счетчик приоритетов для отслеживания количества страниц подкачки. Токен всегда выдается процессу с высоким приоритетом, который имеет большое количество страниц подкачки. Длина временной метки не является константой, а определяется приоритетом: чем больше количество страниц подкачки процесса, тем длиннее будет временная метка для него.

Сегментированная виртуальная память

Некоторые системы, такие как Burroughs B5500 [30] и текущие системы Unisys MCP [31] используют сегментацию вместо страничного обмена, разделяя виртуальные адресные пространства на сегменты переменной длины. Использование сегментации сопоставляет выделенные блоки памяти с логическими потребностями и запросами программ, а не с физическим видом компьютера, хотя сами страницы являются искусственным разделением памяти. Разработчики B5000 обнаружили бы, что искусственный размер страниц имеет прокрустову природу, историю, которую они позже использовали для точных размеров данных в B1000 . [32]

В системах Burroughs и Unisys каждый сегмент памяти описывается главным дескриптором , который является единственным абсолютным дескриптором, на который могут ссылаться другие относительные (копирующие) дескрипторы, осуществляя совместное использование либо внутри процесса, либо между процессами. Дескрипторы играют центральную роль в работе виртуальной памяти в системах MCP. Дескрипторы содержат не только адрес сегмента, но и длину сегмента и статус в виртуальной памяти, обозначенные «p-битом» или «битом присутствия», который указывает, относится ли адрес к сегменту в основной памяти или к блоку вторичной памяти. При доступе к нерезидентному сегменту (p-бит выключен) происходит прерывание для загрузки сегмента из вторичной памяти по указанному адресу или, если сам адрес равен 0, то выделяется новый блок. В последнем случае поле длины в дескрипторе используется для выделения сегмента этой длины.

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

Разбиение на страницы не свободно от фрагментации — фрагментация является внутренней по отношению к страницам ( внутренняя фрагментация ). Если запрошенный блок меньше страницы, то некоторое пространство на странице будет потрачено впустую. Если блоку требуется больше, чем страница, то требуется небольшая область на другой странице, что приводит к большому потраченному впустую пространству. Таким образом, фрагментация становится проблемой, переданной программистам, которые могут исказить свою программу, чтобы соответствовать определенным размерам страниц. При сегментации фрагментация является внешней по отношению к сегментам ( внешняя фрагментация ) и, таким образом, является системной проблемой, которая была целью виртуальной памяти в первую очередь, чтобы избавить программистов от таких соображений памяти. В многопроцессорных системах оптимальная работа системы зависит от сочетания независимых процессов в любой момент времени. Могут использоваться гибридные схемы сегментации и разбиения на страницы.

Intel 80286 поддерживает аналогичную схему сегментации в качестве опции, но она используется редко.

Сегментацию и разбиение на страницы можно использовать вместе, разделив каждый сегмент на страницы; системы с такой структурой памяти, такие как Multics и IBM System/38 , обычно являются преимущественно разбиенными на страницы, а сегментация обеспечивает защиту памяти. [34] [35] [36]

В процессорах Intel 80386 и более поздних IA-32 сегменты находятся в 32-битном линейном, страничном адресном пространстве. Сегменты можно перемещать в это пространство и из него; страницы могут «страницей» входить и выходить из основной памяти, обеспечивая два уровня виртуальной памяти; немногие операционные системы, если таковые вообще имеются, делают это, вместо этого используя только страничную память. Ранние решения виртуализации x86 без аппаратной поддержки объединяли страничную память и сегментацию, поскольку страничная память x86 предлагает только два домена защиты, тогда как стеку VMM, гостевой ОС или гостевого приложения требуется три. [37] : 22  Разница между системами страничной памяти и сегментации заключается не только в разделении памяти; сегментация видна пользовательским процессам как часть семантики модели памяти. Следовательно, вместо памяти, которая выглядит как одно большое пространство, она структурирована в несколько пространств.

Это различие имеет важные последствия; сегмент не является страницей с переменной длиной или простым способом удлинения адресного пространства. Сегментация, которая может обеспечить одноуровневую модель памяти, в которой нет различия между памятью процесса и файловой системой, состоит только из списка сегментов (файлов), отображенных в потенциальное адресное пространство процесса. [38]

Это не то же самое, что механизмы, предоставляемые вызовами, такими как mmap и Win32 MapViewOfFile, поскольку межфайловые указатели не работают при отображении файлов в полупроизвольные места. В Multics файл (или сегмент из многосегментного файла) отображается в сегмент в адресном пространстве, поэтому файлы всегда отображаются на границе сегмента. Раздел связей файла может содержать указатели, для которых попытка загрузить указатель в регистр или сделать косвенную ссылку через него вызывает прерывание. Неразрешенный указатель содержит указание на имя сегмента, на который ссылается указатель, и смещение внутри сегмента; обработчик прерывания отображает сегмент в адресное пространство, помещает номер сегмента в указатель, изменяет поле тега в указателе так, чтобы оно больше не вызывало прерывание, и возвращается к коду, где произошло прерывание, повторно выполняя инструкцию, вызвавшую прерывание. [39] Это полностью устраняет необходимость в компоновщике [8] и работает, когда разные процессы отображают один и тот же файл в разные места в своих частных адресных пространствах. [40]

Подкачка адресного пространства

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

IBM MVS , от OS/VS2 Release 2 до z/OS , позволяет отмечать адресное пространство как непереставляемое; это не закрепляет страницы в адресном пространстве. Это можно сделать на время выполнения задания, введя имя подходящей [41] основной программы в Таблицу свойств программы с флагом непереставляемости. Кроме того, привилегированный код может временно сделать адресное пространство непереставляемым с помощью инструкции SYSEVENT Supervisor Call (SVC); некоторые изменения [42] в свойствах адресного пространства требуют, чтобы ОС выгрузила его, а затем снова вставила, используя SYSEVENT TRANSWAP. [43]

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

Смотрите также

Примечания

  1. ^ Ранние системы использовали барабаны ; современные системы используют диски или твердотельную память.
  2. ^ IBM использует термин виртуальное хранилище в операционных системах мэйнфреймов. Это использование распространяется от TSS [1] на 360/67 до z/OS [2] на z/Architecture .
  3. ^ Ранее IBM использовала термин «гипервизор» для 360/65 , [21], но это не касалось виртуальной памяти.
  4. ^ IBM DOS/VS , OS/VS1 и DOS/VS поддерживали только страницы размером 2 КБ.
  5. ^ В IBM Z [26] существует трехуровневое дерево регионов для каждого адресного пространства.

Ссылки

  1. ^ "КОМПОНЕНТЫ СИСТЕМЫ: Динамическое перемещение" (PDF) . System/360 Model 67 Time Sharing System Preliminary Technical Summary (PDF) . IBM. 1966. стр. 21. C20-1647-0.
  2. ^ "BCP (Base Control Program)" (PDF) . z/OS Version 2 Release 4 z/OS Introduction and Release Guide (PDF) . IBM. 22 сентября 2020 г. стр. 3. GA32-0887-40.
  3. ^ Бхаттачарджи, Абишек; Люстиг, Дэниел (2017). Архитектурная и операционная системная поддержка виртуальной памяти. Morgan & Claypool Publishers. стр. 1. ISBN 9781627056021. Получено 16 октября 2017 г.
  4. ^ Халдар, Сибсанкар; Аравинд, Алекс Алагарсами (2010). Операционные системы. Пирсон Образовательная Индия. п. 269. ИСБН 978-8131730225. Получено 16 октября 2017 г.
  5. ^ Чжоу, Сянжун; Петров, Питер (1 декабря 2008 г.). «Прямая трансляция адресов для виртуальной памяти в энергоэффективных встроенных системах». ACM Transactions on Embedded Computing Systems . 8 (1): 1–31. doi :10.1145/1457246.1457251. ISSN  1539-9087. S2CID  18156695.
  6. ^ "AMD-V™ Nested Paging" (PDF) . AMD . Получено 28 апреля 2015 г. .
  7. ^ "История версий Windows". Microsoft. 23 сентября 2011 г. Архивировано из оригинала 8 января 2015 г. Получено 9 марта 2015 г.
  8. ^ abcde Деннинг, Питер (1997). "До того, как память стала виртуальной" (PDF) . В начале: воспоминания пионеров программного обеспечения .
  9. ^ Йессен, Элке (2004). «Происхождение концепции виртуальной памяти». IEEE Annals of the History of Computing . 26 (4): 71–72.
  10. ^ Джессен, Э. (1996). «Die Entwicklung des Virtelllen Speichers». Информатик-Спектр (на немецком языке). 19 (4): 216–219. дои : 10.1007/s002870050034. ISSN  0170-6012. S2CID  11514875.
  11. ^ Йессен (2004).
  12. ^ Липтэй, Дж. С. (1968), «Структурные аспекты модели System/360 85 – Кэш», IBM Systems Journal , 7 : 15–21, doi : 10.1147/sj.71.0015
  13. ^ Килберн, Т.; Эдвардс, DBG; Ланиган, MJ; Самнер, FH (1962), «Одноуровневая система хранения», IRE Trans EC-11 (2): 223–235, doi :10.1109/TEC.1962.5219356
  14. ^ «Атлас Ферранти 1 и 2 - Архитектура системы» (PDF) . 12 ноября 2009 г.
  15. ^ Деннинг, Питер Дж. (1 января 2003 г.). «Виртуальная память». Энциклопедия компьютерных наук . John Wiley and Sons. стр. 1832–1835. ISBN 978-0-470-86412-8. Получено 10 января 2023 г. .
  16. ^ Кризи, Р. Дж. (сентябрь 1981 г.). «Происхождение системы разделения времени VM/370» (PDF) . IBM Journal of Research & Development . 25 (5): 486. doi :10.1147/rd.255.0483.
  17. ^ "Атлас". Архивировано из оригинала 6 октября 2014 года.{{cite web}}: CS1 maint: unfit URL (link)
  18. ^ ab Waychoff, Richard. «Истории о B5000 и людях, которые там были» (PDF) . Музей истории компьютеров .
  19. ^ "IEEE Computer. Письмо Дэвида Булмана в редакцию за август 1977 г.". IEEE .
  20. ^ Cragon, Harvey G. (1996). Системы памяти и конвейерные процессоры. Jones and Bartlett Publishers. стр. 113. ISBN 978-0-86720-474-2.
  21. ^ Гэри Р. Оллред (май 1971 г.). Интегрированная эмуляция System/370 под ОС и DOS (PDF) . Весенняя совместная компьютерная конференция 1971 г. Том 38. AFIPS Press. стр. 164. doi :10.1109/AFIPS.1971.58 . Получено 12 июня 2022 г.
  22. ^ z/VM, созданная на основе IBM Virtualization Technology General Information Version 4 Release 3.0 (PDF) . 12 апреля 2002 г. GC24-5991-04.
  23. ^ Sayre, D. (1969). «Является ли автоматическое «сворачивание» программ достаточно эффективным, чтобы заменить ручное?». Communications of the ACM . 12 (12): 656–660. doi :10.1145/363626.363629. S2CID  15655353.
  24. ^ Кинтеро, Дино и др. (1 мая 2013 г.). IBM Power Systems Performance Guide: Implementing and Optimizing. IBM Corporation. стр. 138. ISBN 978-0738437668. Получено 18 июля 2017 г. .
  25. ^ Шарма, Дп (2009). Основы операционных систем. Excel Books India. стр. 62. ISBN 978-81-7446-626-6. Получено 18 июля 2017 г. .
  26. ^ "Translation Tables" (PDF) . z/Architecture - Principles of Operation (PDF) (четырнадцатое изд.). IBM . Май 2022 г. стр. 3-46–3-53. SA22-7832-13 . Получено 18 января 2023 г. .
  27. ^ "Битва". Unisys .
  28. ^ Сун Цзян; Сяодун Чжан (2005). «LRU с токеновым порядком: эффективная политика замены страниц и ее реализация в системах Linux». Оценка производительности . 60 (1–4): 5–29. doi :10.1016/j.peva.2004.10.002. ISSN  0166-5316.
  29. ^ ab «Swap Token эффективно минимизирует эффекты перегрузки системы и применяется в ядрах ОС».
  30. ^ Берроуз (1964). Справочное руководство по системе обработки информации Burroughs B5500 (PDF) . Корпорация Берроуз . 1021326 . Получено 28 ноября 2013 г. .
  31. ^ "Виртуальная память Unisys MCP". Unisys .
  32. ^ Wilner, WT (1972). "Design of the Burroughs B1700". Труды 5-7 декабря 1972 года, осенняя совместная компьютерная конференция, часть I - AFIPS '72 (осень, часть I) . стр. 489–497. doi :10.1145/1479992.1480060. ISBN 978-1-4503-7912-0. {{cite book}}: |website=проигнорировано ( помощь )
  33. ^ "Шахматная доска". Unisys .
  34. ^ GE-645 System Manual (PDF) . Январь 1968. С. 21–30 . Получено 25 февраля 2022 г.
  35. ^ Корбато, Ф. Дж .; Высоцкий, В. А. "Введение и обзор системы Multics" . Получено 13 ноября 2007 г.
  36. ^ Глейзер, Эдвард Л.; Кулер, Джон Ф. и Оливер, ГА «Проектирование системы компьютера для приложений с разделением времени».
  37. ^ Смит, Дж. Э.; Улиг, Р. (14 августа 2005 г.). «Виртуальные машины: архитектуры, реализации и приложения, HOTCHIPS 17, Учебник 1, часть 2» (PDF) .
  38. ^ Бенсуссан, Андре; Клинген, Чарльз Т.; Дейли, Роберт К. (май 1972 г.). «Виртуальная память Multics: концепции и дизайн». Сообщения ACM . 15 (5): 308–318. CiteSeerX 10.1.1.10.6731 . doi :10.1145/355602.361306. S2CID  6434322. 
  39. ^ "Multics Execution Environment". Multicians.org . Получено 9 октября 2016 г. .
  40. ^ Органик, Эллиотт И. (1972). Система Multics: исследование ее структуры . MIT Press. ISBN 978-0-262-15012-5.
  41. ^ Самым важным требованием является то, чтобы программа была авторизована APF.
  42. ^ например, запрос на использование предпочитаемой памяти
  43. ^ "Перестановка элементов управления (DONTSWAP, OKSWAP, TRANSWAP)". Центр знаний IBM . Программирование z/OS MVS: Справочник по авторизованным ассемблерным службам SET-WTO SA23-1375-00. 1990–2014 . Получено 9 октября 2016 г.

Дальнейшее чтение

Внешние ссылки