Виртуальная память
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/6e/Virtual_memory.svg/250px-Virtual_memory.svg.png)
В вычислениях виртуальная память или виртуальное хранилище [б] это метод управления памятью , который обеспечивает «идеализированную абстракцию ресурсов хранения, которые фактически доступны на данной машине». [3] что «создает у пользователей иллюзию очень большой (основной) памяти». [4]
компьютера Операционная система , используя комбинацию аппаратного и программного обеспечения, отображает адреса памяти, используемые программой, называемые виртуальными адресами , в физические адреса в памяти компьютера . Основное хранилище , с точки зрения процесса или задачи, выглядит как непрерывное адресное пространство или совокупность смежных сегментов . Операционная система управляет виртуальными адресными пространствами и назначением реальной памяти виртуальной памяти. [5] Аппаратное обеспечение трансляции адресов в ЦП, часто называемое блоком управления памятью (MMU), автоматически преобразует виртуальные адреса в физические адреса. Программное обеспечение в операционной системе может расширять эти возможности, используя, например, дисковое хранилище , чтобы обеспечить виртуальное адресное пространство, которое может превышать емкость реальной памяти и, таким образом, обращаться к большему объему памяти, чем физически присутствует в компьютере.
Основные преимущества виртуальной памяти включают освобождение приложений от необходимости управлять общим пространством памяти, возможность совместного использования памяти, используемой библиотеками , между процессами, повышенную безопасность благодаря изоляции памяти и возможность концептуально использовать больше памяти, чем может быть физически доступно, используя метод пейджинга или сегментации.
Свойства [ править ]
Виртуальная память упрощает программирование приложений, скрывая фрагментацию физической памяти; делегируя ядру бремя управления иерархией памяти (устраняя необходимость в программе явно обрабатывать наложения ); и, когда каждый процесс запускается в своем собственном выделенном адресном пространстве, устраняется необходимость перемещать программный код или обращаться к памяти с относительной адресацией .
Виртуализацию памяти можно считать обобщением концепции виртуальной памяти.
Использование [ править ]
Виртуальная память является неотъемлемой частью современной компьютерной архитектуры ; реализации обычно требуют аппаратной поддержки, обычно в виде блока управления памятью , встроенного в ЦП . Хотя это и не обязательно, эмуляторы и виртуальные машины могут использовать аппаратную поддержку для повышения производительности своих реализаций виртуальной памяти. [6] Старые операционные системы, например, для мэйнфреймов 1960-х годов и для персональных компьютеров начала-середины 1980-х годов (например, DOS ), [7] как правило, не имеют функции виртуальной памяти, [ сомнительно – обсудить ] хотя заметные исключения для мэйнфреймов 1960-х годов включают:
- руководитель Атласа Атласа
- Мультипрограммная система для Electrologica X8 (программная виртуальная память без аппаратной поддержки)
- MCP для Burroughs B5000
- MTS , TSS/360 и CP/CMS для IBM System/360 Model 67
- Мультики для GE 645
- Операционная система разделения времени для RCA Spectra 70/46
В 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] В модели 85 все адреса были реальными адресами, относящимися к основному хранилищу. Полупроводниковый кэш, невидимый для пользователя, хранил содержимое частей основного хранилища, используемых выполняющейся в данный момент программой. Это в точности аналогично системе Гюнча, разработанной как средство повышения производительности, а не для решения проблем, связанных с мультипрограммированием.
Первая настоящая система виртуальной памяти была реализована в Манчестерском университете для создания одноуровневой системы хранения данных. [13] как часть компьютера Атлас . Он использовал механизм подкачки для отображения виртуальных адресов, доступных программисту, в реальную память, которая состояла из 16 384 слов первичной памяти ядра и дополнительных 98 304 слов вторичной барабанной памяти . [14] Добавление виртуальной памяти в Атлас также устранило надвигающуюся проблему программирования: планирование и планирование передачи данных между основной и вторичной памятью и перекомпиляцию программ при каждом изменении размера основной памяти. [15] Первый Атлас был введен в эксплуатацию в 1962 году, но рабочие прототипы пейджинговой системы были разработаны к 1959 году. [8] : 2 [16] [17] В 1961 году корпорация Burroughs независимо выпустила первый коммерческий компьютер с виртуальной памятью B5000 с сегментацией , а не с подкачкой. [18] [19]
IBM разработала [с] концепцию гипервизоров в своих CP-40 и CP-67 , а в 1972 году представила ее для S/370 как Virtual Machine Facility/370. [21] IBM представила инструкцию Start Interpretive Execution ( SIE ) как часть 370-XA на 3081 и версии VM/XA для ее использования.
Прежде чем виртуальную память можно было реализовать в основных операционных системах, необходимо было решить множество проблем. Динамическая трансляция адресов требовала дорогостоящего и сложного в изготовлении специализированного оборудования; первоначальные реализации немного замедляли доступ к памяти. [8] Были опасения, что новые общесистемные алгоритмы, использующие вторичное хранилище, будут менее эффективными, чем ранее использовавшиеся алгоритмы для конкретных приложений. К 1969 году дебаты по поводу виртуальной памяти для коммерческих компьютеров закончились; [8] Исследовательская группа IBM под руководством Дэвида Сейра показала, что их система наложения виртуальной памяти стабильно работает лучше, чем лучшие системы с ручным управлением. [22] На протяжении 1970-х годов серия IBM 370, на которой работали операционные системы на основе виртуальной памяти, предоставляла бизнес-пользователям возможность перенести несколько старых систем на меньшее количество более мощных мэйнфреймов с улучшенным соотношением цены и производительности. Первым миникомпьютером , в котором была реализована виртуальная память, был норвежский NORD-1 ; В 1970-х годах виртуальную память реализовали и другие миникомпьютеры, особенно VAX модели , работающие под управлением VMS .
Виртуальная память была введена в архитектуру x86 с защищенным режимом процессора Intel 80286 , но ее технология замены сегментов плохо масштабировалась для сегментов большего размера. В процессоре Intel 80386 появилась поддержка подкачки под существующим уровнем сегментации , что позволило исключению ошибки страницы объединяться в цепочку с другими исключениями без двойной ошибки . Однако загрузка дескрипторов сегментов была дорогостоящей операцией, из-за которой разработчики операционных систем полагались исключительно на разбиение по страницам, а не на комбинацию разбиения по страницам и сегментации. [ нужна цитата ]
Выгружаемая виртуальная память [ править ]
Это раздел нуждается в дополнительных ссылок для проверки . ( декабрь 2010 г. ) |
Почти все текущие реализации виртуальной памяти делят виртуальное адресное пространство на страницы — блоки смежных адресов виртуальной памяти. Страницы о современном [д] не менее 4 килобайт системы обычно имеют размер ; системы с большими диапазонами виртуальных адресов или объемами реальной памяти обычно используют страницы большего размера. [23]
Таблицы страниц [ править ]
Таблицы страниц используются для преобразования виртуальных адресов, видимых приложением, в физические адреса , используемые оборудованием для обработки инструкций; [24] такое оборудование, которое обрабатывает этот конкретный перевод, часто называют блоком управления памятью . Каждая запись в таблице страниц содержит флаг, указывающий, находится ли соответствующая страница в реальной памяти или нет. Если страница находится в реальной памяти, запись таблицы страниц будет содержать реальный адрес памяти, по которому хранится страница. Когда аппаратное обеспечение делает ссылку на страницу, если запись таблицы страниц для страницы указывает, что она в данный момент не находится в реальной памяти, аппаратное обеспечение вызывает ошибки страницы исключение , вызывая компонент супервизора подкачки операционной системы .
Системы могут иметь, например, одну таблицу страниц для всей системы, отдельные таблицы страниц для каждого адресного пространства или процесса, отдельные таблицы страниц для каждого сегмента; аналогично системы могут, например, не иметь таблицы сегментов, одну таблицу сегментов для всей системы, отдельные таблицы сегментов для каждого адресного пространства или процесса, отдельные таблицы сегментов для каждой области в дереве. [Это] таблиц регионов для каждого адресного пространства или процесса. Если таблица страниц только одна, разные приложения , работающие одновременно, используют разные части одного диапазона виртуальных адресов. Если существует несколько таблиц страниц или сегментов, существует несколько виртуальных адресных пространств и параллельные приложения с отдельными таблицами страниц, перенаправляющими на разные реальные адреса.
Некоторые более ранние системы с меньшими реальными объемами памяти, такие как SDS 940 , использовали страничные регистры вместо таблиц страниц в памяти для трансляции адресов.
Супервайзер по пейджингу [ править ]
Эта часть операционной системы создает таблицы страниц и списки свободных фреймов страниц и управляет ими. Чтобы гарантировать, что свободных страничных кадров будет достаточно для быстрого устранения ошибок страницы, система может периодически красть выделенные страничные кадры, используя алгоритм замены страниц , например, алгоритм «Наименее недавно использованный» (LRU). Украденные страничные фреймы, которые были изменены, записываются обратно во вспомогательное хранилище, прежде чем они будут добавлены в свободную очередь. В некоторых системах супервизор подкачки также отвечает за управление регистрами трансляции, которые не загружаются автоматически из таблиц страниц.
Обычно ошибка страницы, которую невозможно устранить, приводит к аварийному завершению работы приложения. Однако некоторые системы позволяют приложению иметь обработчики исключений для таких ошибок. Супервизор пейджинговой связи может обрабатывать исключение ошибки страницы несколькими различными способами, в зависимости от деталей:
- Если виртуальный адрес недействителен, супервизор пейджинга рассматривает это как ошибку.
- Если страница действительна и информация о странице не загружена в MMU, информация о странице будет сохранена в одном из регистров страницы.
- Если страница не инициализирована, новый кадр страницы может быть назначен и очищен.
- Если существует украденный страничный фрейм, содержащий нужную страницу, этот страничный фрейм будет использован повторно.
- В случае сбоя из-за попытки записи на страницу, защищенную от чтения, если это страница копирования при записи, то будет назначен свободный страничный фрейм и скопировано содержимое старой страницы; в противном случае это рассматривается как ошибка.
- Если виртуальный адрес является допустимой страницей в отображенном в памяти файле или файле подкачки, будет назначен свободный страничный фрейм и страница будет прочитана.
В большинстве случаев происходит обновление таблицы страниц, за которым, возможно, следует очистка буфера резервного копирования трансляции (TLB), и система перезапускает инструкцию, вызывающую исключение.
Если очередь свободных страничных кадров пуста, то супервизор пейджинга должен освободить страничный кадр, используя тот же алгоритм замены страниц для кражи страниц.
Закрепленные страницы [ править ]
области памяти В операционных системах есть закрепленные (никогда не переключаемые на вторичное хранилище). Другие используемые термины — заблокированные , фиксированные или проводные страницы. Например, механизмы прерываний полагаются на массив указателей на свои обработчики, такие как завершение ввода-вывода и ошибка страницы . Если бы страницы, содержащие эти указатели или код, который они вызывают, были постраничными, обработка прерываний стала бы гораздо более сложной и трудоемкой, особенно в случае прерываний из-за ошибок страниц. Следовательно, некоторая часть структур таблицы страниц не может быть выгружена.
Некоторые страницы могут быть закреплены на короткие периоды времени, другие могут быть закреплены на длительный период времени, а третьи, возможно, потребуется закрепить навсегда. Например:
- Код супервизора подкачки и драйверы для дополнительных устройств хранения, на которых находятся страницы, должны быть постоянно закреплены, иначе подкачка даже не будет работать, поскольку необходимый код будет недоступен.
- Компоненты, зависящие от времени, могут быть закреплены, чтобы избежать переменных задержек пейджинга.
- Буферы данных , к которым напрямую обращаются периферийные устройства, использующие прямой доступ к памяти или каналы ввода-вывода, должны находиться на закрепленных страницах во время выполнения операции ввода-вывода, поскольку такие устройства и шины, к которым они подключены, ожидают найти расположенные буферы данных. по адресам физической памяти; независимо от того, имеется ли на шине блок управления памятью для ввода-вывода , передача не может быть остановлена в случае возникновения страничного сбоя, а затем перезапущена, когда страничный сбой будет обработан. Например, данные могут поступать из блока измерительных датчиков, а потерянные данные в реальном времени, утерянные из-за ошибки страницы, не могут быть восстановлены.
В операционных системах IBM для System/370 и последующих систем используется термин «фиксированный», и такие страницы могут быть фиксированными на долгосрочный период, могут быть фиксированными на краткосрочный период или могут быть нефиксированными (т. е. с возможностью постраничного использования). Структуры управления системой часто являются долгосрочными фиксированными (измеряются по времени настенных часов, т. е. времени, измеряемому в секундах, а не времени, измеряемому в долях одной секунды), тогда как буферы ввода-вывода обычно фиксированы на краткосрочный период (обычно измеряются в значительном количестве). меньше, чем время настенных часов, возможно, на десятки миллисекунд). Действительно, в ОС имеется специальная возможность «быстрого исправления» этих кратковременных фиксированных буферов данных (исправление которое выполняется без обращения к трудоемкой инструкции Вызова Супервизора ).
Multics использовал термин «проводной». OpenVMS и Windows называют страницы, временно сделанные невыгружаемыми (как для буферов ввода-вывода), «заблокированными» и просто «невыгружаемыми» для тех, которые никогда не выгружаются. Единая спецификация UNIX также использует термин «заблокированный» в спецификации для mlock()
, как и mlock()
man-страницы во многих Unix-подобных системах.
Виртуально-реальная операция [ править ]
В OS/VS1 и подобных ОС некоторые части системной памяти управляются в «виртуально-реальном» режиме, называемом «V=R». В этом режиме каждый виртуальный адрес соответствует одному и тому же реальному адресу. Этот режим используется для механизмов прерываний , для супервизора подкачки и таблиц страниц в старых системах, а также для прикладных программ, использующих нестандартное управление вводом-выводом. Например, IBM z/OS имеет три режима (виртуально-виртуальный, виртуально-реальный и виртуально-фиксированный). [ нужна цитата ]
Избиение [ править ]
При использовании подкачки и кражи страниц может возникнуть проблема, называемая « перегрузка », при которой компьютер тратит неприемлемо большое количество времени на передачу страниц в резервное хранилище и из него, что замедляет полезную работу. задачи Рабочий набор — это минимальный набор страниц, который должен находиться в памяти, чтобы обеспечить успешную работу. Перезагрузка происходит, когда не хватает памяти для хранения рабочих наборов всех активных программ. Добавление реальной памяти — самый простой ответ, но может помочь улучшение дизайна приложения, планирования и использования памяти. Другое решение — уменьшить количество активных задач в системе. Это снижает потребность в реальной памяти за счет замены всего рабочего набора одного или нескольких процессов.
Сбой системы часто является результатом внезапного резкого увеличения спроса на страницы со стороны небольшого количества запущенных программ. Своп-токен [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]
Для обмена не обязательно требуется аппаратное обеспечение управления памятью, если, например, несколько заданий переключаются между одной и той же областью хранения.
См. также [ править ]
- Дизайн процессора
- Страница (память компьютера)
- Политики замены кэша
- Управление памятью
- Управление памятью (операционные системы)
- Защищенный режим — режим x86 , позволяющий использовать виртуальную память.
- CUDA Закрепленная память
- Гетерогенная системная архитектура — серия спецификаций, предназначенных для объединения памяти ЦП и графического процессора.
Примечания [ править ]
- ^ Ранние системы использовали барабаны ; современные системы используют диски или твердотельную память
- ^ IBM использует термин виртуальное хранилище в операционных системах мэйнфреймов. Это использование выполняется из TSS [1] на 360/67 через z/OS [2] на z/Архитектура .
- ^ IBM ранее использовала термин «гипервизор» для 360/65 , [20] но это не задействовало виртуальную память
- ^ IBM DOS/VS , OS/VS1 и DOS/VS поддерживали только страницы размером 2 КБ.
- ^ На IBM Z [25] для каждого адресного пространства существует трехуровневое дерево регионов.
Ссылки [ править ]
- ^ «КОМПОНЕНТЫ СИСТЕМЫ: Динамическое перемещение» (PDF) . Предварительное техническое описание системы разделения времени System/360 Model 67 (PDF) . ИБМ. 1966. с. 21. С20-1647-0.
- ^ «BCP (Программа базового управления)» (PDF) . z/OS Версия 2 Выпуск 4 Руководство по ознакомлению и выпуску z/OS (PDF) . ИБМ. 22 сентября 2020 г. с. 3. ГА32-0887-40.
- ^ Бхаттачарджи, Абхишек; Люстиг, Дэниел (2017). Архитектурная и операционная поддержка виртуальной памяти . Издательство Морган и Клейпул. п. 1. ISBN 9781627056021 . Проверено 16 октября 2017 г.
- ^ Халдар, Сибсанкар; Аравинд, Алекс Алагарсами (2010). Операционные системы . Пирсон Образовательная Индия. п. 269. ИСБН 978-8131730225 . Проверено 16 октября 2017 г.
- ^ Чжоу, Сянжун; Петров, Петр (1 декабря 2008 г.). «Прямая трансляция адресов виртуальной памяти в энергоэффективных встраиваемых системах» . Транзакции ACM во встроенных вычислительных системах . 8 (1): 1–31. дои : 10.1145/1457246.1457251 . ISSN 1539-9087 . S2CID 18156695 .
- ^ «Вложенный пейджинг AMD-V™» (PDF) . АМД . Проверено 28 апреля 2015 г.
- ^ «История версий Windows» . Майкрософт. 23 сентября 2011 г. Архивировано из оригинала 8 января 2015 г. Проверено 9 марта 2015 г.
- ^ Перейти обратно: а б с д Это Деннинг, Питер (1997). «До того, как память была виртуальной» (PDF) . В начале: воспоминания пионеров программного обеспечения .
- ^ Джессен, Эльке (2004). «Происхождение концепции виртуальной памяти». IEEE Анналы истории вычислений . 26 (4): 71–72.
- ^ Джессен, Э. (1996). «Эволюция виртуальной памяти». Спектр компьютерных наук (на немецком языке). 19 (4): 216–219. дои : 10.1007/s002870050034 . ISSN 0170-6012 . S2CID 11514875 .
- ^ Джессен (2004) .
- ^ Липтэй, Дж. С. (1968), «Структурные аспекты модели System/360 85 – Кэш», IBM Systems Journal , 7 : 15–21, doi : 10.1147/sj.71.0015
- ^ Килберн, Т.; Эдвардс, DBG; Ланиган, MJ; Самнер, Ф.Х. (1962), «Одноуровневая система хранения», IRE Trans EC-11 (2): 223–235, doi : 10.1109/TEC.1962.5219356
- ^ «Атлас Ферранти 1 и 2 - Системная архитектура» (PDF) . 12 ноября 2009 г.
- ^ Деннинг, Питер Дж. (1 января 2003 г.). "Виртуальная память" . Энциклопедия информатики . Джон Уайли и сыновья. стр. 1832–1835. ISBN 978-0-470-86412-8 . Проверено 10 января 2023 г.
- ^ Кризи, Р.Дж. (сентябрь 1981 г.). «Происхождение системы разделения времени VM/370» (PDF) . Журнал исследований и разработок IBM . 25 (5): 486. дои : 10.1147/rd.255.0483 .
- ^ «Атлас» . Архивировано из оригинала 6 октября 2014 года.
{{cite web}}
: CS1 maint: неподходящий URL ( ссылка ) - ^ Джойнер, Ян. «Берроуз» . Архивировано из оригинала 10 мая 2017 года.
- ^ Крагон, Харви Г. (1996). Системы памяти и конвейерные процессоры . Издательство Джонс и Бартлетт. п. 113. ИСБН 978-0-86720-474-2 .
- ^ Гэри Р. Оллред (май 1971 г.). Интегрированная эмуляция System/370 под OS и DOS (PDF) . 1971 года Весенняя совместная компьютерная конференция . Том. 38. АФИПС Пресс. п. 164. дои : 10.1109/AFIPS.1971.58 . Проверено 12 июня 2022 г.
- ^ z/VM создан на основе общей информации о технологии виртуализации IBM, версия 4, выпуск 3.0 (PDF) . 12 апреля 2002 г. GC24-5991-04.
- ^ Сэйр, Д. (1969). «Достаточно ли эффективно автоматическое «свертывание» программ, чтобы заменить ручное?». Коммуникации АКМ . 12 (12): 656–660. дои : 10.1145/363626.363629 . S2CID 15655353 .
- ^ Кинтеро, Дино; и другие. (1 мая 2013 г.). Руководство по производительности IBM Power Systems: внедрение и оптимизация . Корпорация IBM. п. 138. ИСБН 978-0738437668 . Проверено 18 июля 2017 г.
- ^ Шарма, доктор медицинских наук (2009). Основание операционных систем . Книги Excel Индия. п. 62. ИСБН 978-81-7446-626-6 . Проверено 18 июля 2017 г.
- ^ «Таблицы перевода» (PDF) . z/Architecture - Принципы работы (PDF) (Четырнадцатое изд.). ИБМ . Май 2022 г. стр. 3-46–3-53. SA22-7832-13 . Проверено 18 января 2023 г.
- ^ Сун Цзян; Сяодун Чжан (2005). «LRU с токеном: эффективная политика замены страниц и ее реализация в системах Linux». Оценка эффективности . 60 (1–4): 5–29. дои : 10.1016/j.peva.2004.10.002 . ISSN 0166-5316 .
- ^ Перейти обратно: а б «Swap Token эффективно минимизирует эффекты перераспределения системы и применяется в ядрах ОС» .
- ^ Берроуз (1964). Справочное руководство по системе обработки информации Burroughs B5500 (PDF) . Корпорация Берроуз . 1021326 . Проверено 28 ноября 2013 г.
- ^ Системное руководство GE-645 (PDF) . Январь 1968 г., стр. 21–30 . Проверено 25 февраля 2022 г.
- ^ Корбато, Ф.Дж. ; Высоцкий В.А. «Введение и обзор системы Мультикс» . Проверено 13 ноября 2007 г.
- ^ Глейзер, Эдвард Л.; Кулер, Джон Ф. и Оливер, Джорджия «Проектирование системы компьютера для приложений с разделением времени» .
- ^ Смит, Дж. Э.; Улиг, Р. (14 августа 2005 г.). « Виртуальные машины: архитектуры, реализации и приложения» , HOTCHIPS 17, Учебное пособие 1, часть 2» (PDF) .
- ^ Бенсуссан, Андре; Клинген, Чарльз Т.; Дейли, Роберт К. (май 1972 г.). «Виртуальная память Multics: концепции и дизайн» . Коммуникации АКМ . 15 (5): 308–318. CiteSeerX 10.1.1.10.6731 . дои : 10.1145/355602.361306 . S2CID 6434322 .
- ^ «Мульти-среда выполнения» . Multicians.org . Проверено 9 октября 2016 г.
- ^ Органик, Эллиот И. (1972). Система Multics: исследование ее структуры . МТИ Пресс. ISBN 978-0-262-15012-5 .
- ^ Самым важным требованием является наличие авторизации программы APF.
- ^ например, запрос на использование предпочтительной памяти
- ^ «Подмена управления (DONTSWAP, OKSWAP, TRANSWAP)» . Центр знаний IBM . Программирование z/OS MVS: Справочник авторизованных ассемблерных служб SET-WTO SA23-1375-00. 1990–2014 гг . Проверено 9 октября 2016 г.
Дальнейшее чтение [ править ]
- Хеннесси, Джон Л.; и Паттерсон, Дэвид А.; Компьютерная архитектура, количественный подход ( ISBN 1-55860-724-2 )
Внешние ссылки [ править ]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Wikisource-logo.svg/38px-Wikisource-logo.svg.png)
- Операционные системы: три простых части , Ремзи Х. Арпачи-Дюссо и Андреа К. Арпачи-Дюссо. Arpaci-Dusseau Books, 2014. Соответствующие главы: Адресные пространства. трансляции адресов. Сегментация Введение в TLB подкачки. Расширенные таблицы страниц. Замена: механизмы. Замена: политика.
- «Программы супервизоров с разделением времени» (PDF) . Архивировано из оригинала (PDF) 1 ноября 2012 года. Майкл Т. Александр в книге «Продвинутые темы системного программирования» , Летняя инженерная конференция Мичиганского университета 1970 г. (пересмотрено в мае 1971 г.), сравниваются подходы к планированию и распределению ресурсов, включая виртуальную память и подкачку. , используется в четырёх операционных системах для мэйнфреймов: CP-67 , TSS/360 , MTS и Multics .
- LinuxMM: Управление памятью Linux .
- Рождение ядра Linux , обсуждение в списке рассылки.
- Менеджер виртуальной памяти в Windows NT, Рэнди Кэт, Microsoft Developer Network Technology Group, 12 декабря 1992 г., Wayback Machine (архивировано 22 июня 2010 г.)