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 Computer Манчестерского университета был первым компьютером, оснащенным настоящей виртуальной памятью.

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

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

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

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

Выгружаемая виртуальная память

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

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

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

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

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

Супервизор пейджинговой связи

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

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

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

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

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

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

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

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

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

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

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

избиение

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

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

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

Некоторые системы, такие как Burroughs B5500, [28] используют сегментацию вместо пейджинга, разделяя виртуальное адресное пространство на сегменты переменной длины. Виртуальный адрес здесь состоит из номера сегмента и смещения внутри сегмента. Intel 80286 поддерживает аналогичную схему сегментации в качестве опции, но используется она редко. Сегментацию и разбиение на страницы можно использовать вместе, разделив каждый сегмент на страницы; системы с такой структурой памяти, такие как Multics и IBM System/38 , обычно имеют преобладание подкачки, а сегментация обеспечивает защиту памяти. [29] [30] [31]

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

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

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

Замена адресного пространства

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

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

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

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

Примечания

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

Рекомендации

  1. ^ «КОМПОНЕНТЫ СИСТЕМЫ: Динамическое перемещение» (PDF) . Предварительное техническое описание системы разделения времени System/360 Model 67 (PDF) . ИБМ. 1966. с. 21. С20-1647-0.
  2. ^ «BCP (Программа базового управления)» (PDF) . z/OS Версия 2 Выпуск 4 Руководство по ознакомлению и выпуску z/OS (PDF) . ИБМ. 22 сентября 2020 г. с. 3. ГА32-0887-40.
  3. ^ Бхаттачарджи, Абхишек; Люстиг, Дэниел (2017). Архитектурная и операционная поддержка виртуальной памяти. Издательство Морган и Клейпул. п. 1. ISBN 9781627056021. Проверено 16 октября 2017 г.
  4. ^ Халдар, Сибсанкар; Аравинд, Алекс Алагарсами (2010). Операционные системы. Пирсон Образовательная Индия. п. 269. ИСБН 978-8131730225. Проверено 16 октября 2017 г.
  5. ^ Чжоу, Сянжун; Петров, Петр (1 декабря 2008 г.). «Прямая трансляция адресов виртуальной памяти в энергоэффективных встроенных системах». Транзакции ACM во встроенных вычислительных системах . 8 (1): 1–31. дои : 10.1145/1457246.1457251. ISSN  1539-9087. S2CID  18156695.
  6. ^ «Вложенный пейджинг AMD-V™» (PDF) . АМД . Проверено 28 апреля 2015 г.
  7. ^ «История версий Windows» . Майкрософт. 23 сентября 2011 года. Архивировано из оригинала 8 января 2015 года . Проверено 9 марта 2015 г.
  8. ^ abcde Деннинг, Питер (1997). «До того, как память была виртуальной» (PDF) . В начале: воспоминания пионеров программного обеспечения .
  9. ^ Джессен, Эльке (2004). «Происхождение концепции виртуальной памяти». IEEE Анналы истории вычислений . 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; Самнер, Ф.Х. (1962), «Одноуровневая система хранения», IRE Trans EC-11 (2): 223–235, doi : 10.1109/TEC.1962.5219356
  14. ^ «Атлас Ферранти 1 и 2 - Архитектура системы» (PDF) . 12 ноября 2009 г.
  15. ^ Деннинг, Питер Дж. (1 января 2003 г.). "Виртуальная память". Энциклопедия информатики . Джон Уайли и сыновья. стр. 1832–1835. ISBN 978-0-470-86412-8. Проверено 10 января 2023 г.
  16. ^ Кризи, Р.Дж. (сентябрь 1981 г.). «Происхождение системы разделения времени VM/370» (PDF) . Журнал исследований и разработок IBM . 25 (5): 486. doi :10.1147/rd.255.0483.
  17. ^ "Атлас". Архивировано из оригинала 6 октября 2014 года.{{cite web}}: CS1 maint: неподходящий URL ( ссылка )
  18. ^ Джойнер, Ян. «Берроуз». Архивировано из оригинала 10 мая 2017 года.
  19. ^ Крагон, Харви Г. (1996). Системы памяти и конвейерные процессоры. Издательство Джонс и Бартлетт. п. 113. ИСБН 978-0-86720-474-2.
  20. ^ Гэри Р. Оллред (май 1971 г.). Интегрированная эмуляция System/370 под OS и DOS (PDF) . Весенняя совместная компьютерная конференция 1971 года . Том. 38. АФИПС Пресс. п. 164. дои :10.1109/AFIPS.1971.58 . Проверено 12 июня 2022 г.
  21. ^ z/VM, созданный на основе общей информации о технологии виртуализации IBM, версия 4, выпуск 3.0 (PDF) . 12 апреля 2002 г. GC24-5991-04.
  22. ^ Сэйр, Д. (1969). «Достаточно ли эффективно автоматическое «свертывание» программ, чтобы заменить ручное?». Коммуникации АКМ . 12 (12): 656–660. дои : 10.1145/363626.363629. S2CID  15655353.
  23. ^ Кинтеро, Дино; и другие. (1 мая 2013 г.). Руководство по производительности IBM Power Systems: внедрение и оптимизация. Корпорация IBM. п. 138. ИСБН 978-0738437668. Проверено 18 июля 2017 г.
  24. ^ Шарма, доктор медицинских наук (2009). Фонд операционных систем. Книги Excel Индия. п. 62. ИСБН 978-81-7446-626-6. Проверено 18 июля 2017 г.
  25. ^ «Таблицы перевода» (PDF) . z/Architecture - Принципы работы (PDF) (Четырнадцатое изд.). ИБМ . Май 2022 г. стр. 3-46–3-53. SA22-7832-13 . Проверено 18 января 2023 г.
  26. ^ Сун Цзян; Сяодун Чжан (2005). «LRU с токеном: эффективная политика замены страниц и ее реализация в системах Linux». Оценка эффективности . 60 (1–4): 5–29. дои :10.1016/j.peva.2004.10.002. ISSN  0166-5316.
  27. ^ ab «Токен замены эффективно минимизирует эффекты перераспределения системы и применяется в ядрах ОС».
  28. ^ Берроуз (1964). Справочное руководство по системе обработки информации Burroughs B5500 (PDF) . Корпорация Берроуз . 1021326 . Проверено 28 ноября 2013 г.
  29. ^ Системное руководство GE-645 (PDF) . Январь 1968 г., стр. 21–30 . Проверено 25 февраля 2022 г.
  30. ^ Корбато, Ф.Дж .; Высоцкий В.А. «Введение и обзор системы Мультикс» . Проверено 13 ноября 2007 г.
  31. ^ Глейзер, Эдвард Л.; Кулер, Джон Ф. и Оливер, Джорджия «Проектирование системы компьютера для приложений с разделением времени».
  32. ^ Смит, Дж. Э.; Улиг, Р. (14 августа 2005 г.). «Виртуальные машины: архитектуры, реализации и приложения, HOTCHIPS 17, руководство 1, часть 2» (PDF) .
  33. ^ Бенсуссан, Андре; Клинген, Чарльз Т.; Дейли, Роберт К. (май 1972 г.). «Виртуальная память Multics: концепции и дизайн». Коммуникации АКМ . 15 (5): 308–318. CiteSeerX 10.1.1.10.6731 . дои : 10.1145/355602.361306. S2CID  6434322. 
  34. ^ «Среда выполнения Multis». Multicians.org . Проверено 9 октября 2016 г.
  35. ^ Органик, Эллиот И. (1972). Система Multics: исследование ее структуры . МТИ Пресс. ISBN 978-0-262-15012-5.
  36. ^ Самым важным требованием является наличие авторизации программы APF.
  37. ^ например, запрос на использование предпочтительной памяти
  38. ^ «Обмен управления (DONTSWAP, OKSWAP, TRANSWAP)» . Центр знаний IBM . Программирование z/OS MVS: Справочник авторизованных ассемблерных служб SET-WTO SA23-1375-00. 1990–2014 гг . Проверено 9 октября 2016 г.

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

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