Пейджинг памяти
Эта статья требует внимания эксперта в области вычислений . смотрите на странице обсуждения Подробности ( июнь 2019 г. ) |
В компьютерных операционных системах подкачка памяти (или подкачка в некоторых Unix-подобных системах) — это схема управления памятью , с помощью которой компьютер сохраняет и извлекает данные из вторичного хранилища. [а] для использования в основной памяти . [ нужна ссылка ] В этой схеме операционная система извлекает данные из вторичного хранилища блоками одинакового размера, называемыми страницами . Пейджинг — важная часть реализации виртуальной памяти в современных операционных системах, использующая вторичное хранилище, позволяющее программам превышать размер доступной физической памяти.
Для простоты основная память называется «ОЗУ» (аббревиатура от оперативного запоминающего устройства ), а дополнительная память называется «диском» (сокращение от жесткого диска , барабанной памяти или твердотельного накопителя и т. д.), но, как и в случае с Во многих аспектах вычислений эти концепции не зависят от используемой технологии.
В зависимости от модели памяти функции страничной памяти обычно встроены в ЦП/МК с помощью модуля управления памятью (MMU) или модуля защиты памяти (MPU) и отдельно активируются привилегированным системным кодом в операционной системы ядре . Например, в процессорах, реализующих x86 архитектуру набора команд (ISA), подкачка памяти включается через регистр управления CR0 .
История
[ редактировать ]В 1960-х годах подкачка была одним из первых методов виртуальной памяти. Вся программа или весь сегмент будет «выгружен» (или «выкачен») из ОЗУ на диск или барабан, а другой будет выгружен (или выкачен ). [1] [2] Выгруженная программа будет текущей, но ее выполнение будет приостановлено, пока ее оперативная память будет использоваться другой программой; программа с выгруженным сегментом могла продолжать работу до тех пор, пока этот сегмент ей не понадобится, после чего она будет приостановлена до тех пор, пока сегмент не будет заменен.
Программа может включать в себя несколько наложений , занимающих одну и ту же память в разное время. Оверлеи — это не метод подкачки оперативной памяти на диск, а просто минимизация использования оперативной памяти программой. Последующие архитектуры использовали сегментацию памяти , и отдельные сегменты программы стали единицами обмена между диском и оперативной памятью. Сегмент представлял собой весь сегмент кода программы или сегмент данных, а иногда и другие большие структуры данных. Эти сегменты должны были быть смежными , когда находились в оперативной памяти, что требовало дополнительных вычислений и перемещений для устранения фрагментации . [3]
и Атлас Ферранти разработанный Atlas Supervisor, в Манчестерском университете . [4] (1962) была первой системой, реализовавшей подкачку памяти. Последующие ранние машины и их операционные системы, поддерживающие подкачку, включают IBM M44/44X и ее операционную систему MOS (1964 г.), [5] СДС 940 [6] и система разделения времени Беркли (1966 г.), модифицированная операционная система IBM System / 360 Model 40 и CP-40 (1967 г.), IBM System / 360 Model 67 и такие операционные системы, как TSS / 360 и CP / CMS (1967 г.) , RCA 70/46 и операционная система разделения времени (1967 г.), GE 645 и Multics (1969 г.), а также PDP-10 с добавленным BBN пейджинговым оборудованием, разработанным , и операционной системой TENEX (1969 г.).
Эти машины и последующие машины, поддерживающие подкачку памяти, используют либо набор регистров адресов страниц в памяти. , либо таблицы страниц [д] чтобы позволить процессору работать с произвольными страницами в любом месте ОЗУ как с кажущимся непрерывным логическим адресным пространством. Эти страницы стали единицами обмена между диском и оперативной памятью.
Ошибки страницы
[ редактировать ]Когда процесс пытается обратиться к странице, которая в данный момент не сопоставлена со страничным фреймом в ОЗУ, процессор рассматривает эту неверную ссылку на память как страничную ошибку и передает управление от программы операционной системе. Операционная система должна:
- Определить, содержит ли украденный фрейм страницы неизмененную копию страницы; если да, используйте этот фрейм страницы.
- В противном случае получите пустой страничный фрейм в оперативной памяти, чтобы использовать его в качестве контейнера для данных, и:
- Определите, была ли когда-либо инициализирована страница
- Если да, определите расположение данных на диске.
- Загрузите необходимые данные в доступный фрейм страницы.
- Обновите таблицу страниц , чтобы она ссылалась на новый фрейм страницы.
- Верните управление программе, прозрачно повторив инструкцию , вызвавшую ошибку страницы.
Когда все страничные фреймы используются, операционная система должна выбрать страничный фрейм для повторного использования для страницы, которая теперь нужна программе. Если вытесненный страничный фрейм был динамически выделен программой для хранения данных или если программа изменила его с момента его чтения в ОЗУ (другими словами, если он стал «грязным»), его необходимо записать на диск, прежде чем освобожден. Если программа позже ссылается на удаленную страницу, возникает другая ошибка страницы, и страницу необходимо прочитать обратно в ОЗУ.
Метод, который операционная система использует для выбора страничного фрейма для повторного использования, то есть алгоритм замены страниц , важен для эффективности. Операционная система прогнозирует страничный фрейм, который с наименьшей вероятностью понадобится в ближайшее время, часто с помощью алгоритма наименее недавно использованного программы (LRU) или алгоритма, основанного на рабочем наборе . Чтобы еще больше повысить скорость реагирования, системы подкачки могут предсказывать, какие страницы потребуются в ближайшее время, упреждающе загружая их в оперативную память до того, как программа обратится к ним, и могут красть страничные фреймы со страниц, на которые долгое время не было ссылок, делая их доступными. Некоторые системы очищают новые страницы, чтобы избежать утечек данных, которые ставят под угрозу безопасность; некоторые устанавливают для них определенные при установке или случайные значения, чтобы облегчить отладку.
Методы получения страницы
[ редактировать ]- Пейджинг по требованию
- При использовании подкачки по чистому требованию страницы загружаются только тогда, когда на них есть ссылка. Программа из файла, отображаемого в памяти, начинает выполнение, ни одна из ее страниц не находится в оперативной памяти. Когда программа фиксирует страничные ошибки, операционная система копирует необходимые страницы из файла, например, файла, отображаемого в памяти , файла подкачки или раздела подкачки, содержащего данные страницы, в ОЗУ.
- Упреждающий пейджинг
- Некоторые системы используют только подкачку по запросу — ожидание фактического запроса страницы перед ее загрузкой в ОЗУ.
- Другие системы пытаются уменьшить задержку, угадывая, какие страницы, отсутствующие в ОЗУ, скорее всего, потребуются в ближайшее время, и предварительно загружая такие страницы в ОЗУ до того, как эта страница будет запрошена. (Часто это происходит в сочетании с предварительной очисткой, которая угадывает, какие страницы, находящиеся в настоящее время в ОЗУ, вряд ли понадобятся в ближайшее время, и предварительно записывает их в хранилище).
- При возникновении ошибки страницы упреждающие системы пейджинга не только доставят указанную страницу, но и другие страницы, на которые, вероятно, скоро будут ссылки. Простой алгоритм упреждающего подкачки доставит следующие несколько последовательных страниц, даже если они еще не нужны (прогнозирование с использованием локальности ссылки ); это аналогично входной очереди предварительной выборки в ЦП. Предварительная выборка подкачки будет выполнять предварительную выборку недавно выгруженных страниц, если для них достаточно свободных страниц. [7]
- Если программа завершает работу, операционная система может задержать освобождение ее страниц на случай, если пользователь снова запустит ту же программу.
Методы замены страниц
[ редактировать ]- Бесплатная очередь страниц, кража и восстановление
- Очередь свободных страниц представляет собой список фреймов страниц, доступных для назначения. Предотвращение опустошения этой очереди сводит к минимуму вычислительные затраты, необходимые для обслуживания ошибки страницы. Некоторые операционные системы периодически ищут страницы, на которые в последнее время не обращались, а затем освобождают страничный фрейм и добавляют его в очередь свободных страниц. Этот процесс известен как «кража страниц». Некоторые операционные системы [и] поддержка восстановления страниц ; Если программа совершает ошибку страницы, ссылаясь на украденную страницу, операционная система обнаруживает это и восстанавливает страничный фрейм без необходимости считывать содержимое обратно в ОЗУ.
- Предварительная очистка
- Операционная система может периодически предварительно очищать грязные страницы: записывать измененные страницы обратно на диск, даже если они могут быть изменены в дальнейшем. Это сводит к минимуму объем очистки, необходимой для получения новых фреймов страниц в момент запуска новой программы или открытия нового файла данных, а также повышает скорость реагирования. (Операционные системы Unix периодически используют синхронизацию для предварительной очистки всех грязных страниц; операционные системы Windows используют потоки «модифицированной записи страниц».)
избиение
[ редактировать ]После завершения инициализации большинство программ работают с небольшим количеством страниц кода и данных по сравнению с общим объемом памяти, который требуется программе. Страницы, к которым обращаются чаще всего, называются рабочим набором .
Когда рабочий набор составляет небольшой процент от общего числа страниц системы, системы виртуальной памяти работают наиболее эффективно и на устранение ошибок страниц тратится незначительное количество вычислений. По мере роста рабочего набора устранение ошибок страниц остается управляемым до тех пор, пока рост не достигнет критической точки. Тогда число ошибок резко возрастает, и время, затрачиваемое на их устранение, превосходит время, потраченное на вычисления, для которых была написана программа. Это состояние называется тряской . Сбой происходит в программе, которая работает с огромными структурами данных, поскольку ее большой рабочий набор вызывает постоянные ошибки страниц, которые резко замедляют работу системы. Устранение ошибок страниц может потребовать освобождения страниц, которые вскоре придется перечитывать с диска. «Избиение» также используется в других контекстах, помимо систем виртуальной памяти; например, для описания проблем с кэшем в вычислениях или синдрома глупого окна в сети.
Худший случай может произойти на процессорах VAX . Один MOVL, пересекающий границу страницы, может иметь исходный операнд, использующий режим отложенной адресации смещения, когда длинное слово, содержащее адрес операнда, пересекает границу страницы, и операнд назначения, использующий режим отложенной адресации смещения, когда длинное слово, содержащее адрес операнда, пересекает границу страницы. граница страницы, а источник и место назначения могут пересекать границы страницы. Эта единственная инструкция занимает десять страниц; если не все находятся в ОЗУ, каждый вызовет ошибку страницы. При возникновении каждой ошибки операционной системе приходится выполнять обширные процедуры управления памятью, что может вызывать множественные операции ввода-вывода, которые могут включать запись других страниц процесса на диск и чтение страниц активного процесса с диска. Если операционная система не может выделить этой программе десять страниц, то исправление ошибки страницы приведет к потере еще одной страницы, необходимой инструкции, и любой перезапуск инструкции приведет к повторному сбою.
Чтобы уменьшить чрезмерное подкачивание страниц и решить проблемы с перебоями, пользователь может увеличить количество страниц, доступных для каждой программы, либо запустив меньше программ одновременно, либо увеличив объем оперативной памяти на компьютере.
Совместное использование
[ редактировать ]При мультипрограммировании или в многопользовательской среде многие пользователи могут выполнять одну и ту же программу, написанную так, что ее код и данные находятся на отдельных страницах. Чтобы свести к минимуму использование оперативной памяти, все пользователи используют одну копию программы. каждого процесса Таблица страниц настроена таким образом, что страницы с кодом адреса указывают на одну общую копию, а страницы с адресом данных указывают на разные физические страницы для каждого процесса.
Разные программы также могут использовать одни и те же библиотеки. Для экономии места в физическую память загружается только одна копия общей библиотеки. Программы, использующие одну и ту же библиотеку, имеют виртуальные адреса, соответствующие одним и тем же страницам (содержащим код и данные библиотеки). Когда программы хотят изменить код библиотеки, они используют копирование при записи , поэтому память выделяется только при необходимости.
Общая память — эффективное средство связи между программами. Программы могут совместно использовать страницы в памяти, а затем записывать и читать для обмена данными.
Реализации
[ редактировать ]Ферранти Атлас
[ редактировать ]Первым компьютером, поддерживавшим пейджинг, был суперкомпьютер Атлас . [8] [9] [10] совместно разработанная Ферранти , Манчестерским университетом и Плесси в 1963 году. Машина имела ассоциативную ( с содержательной адресацией ) память с одной записью на каждую страницу из 512 слов. Супервайзер [11] обрабатывал неэквивалентные прерывания [ф] и управлял передачей страниц между ядром и барабаном, чтобы обеспечить одноуровневое хранилище [12] к программам.
Microsoft Windows
[ редактировать ]Windows 3.x и Windows 9x
[ редактировать ]Пейджинг был функцией Microsoft Windows, начиная с Windows 3.0 в 1990 году. Windows 3.x создает скрытый файл с именем 386SPART.PAR
или WIN386.SWP
для использования в качестве файла подкачки. Обычно он находится в корневом каталоге , но может появиться и в другом месте (обычно в каталоге WINDOWS). Его размер зависит от того, сколько места подкачки имеется в системе (настройка, выбранная пользователем в разделе «Панель управления» → «Расширено» в разделе «Виртуальная память»). Если пользователь переместит или удалит этот файл, синий экран при следующем запуске Windows появится с сообщением об ошибке «Постоянный файл подкачки поврежден». Пользователю будет предложено выбрать, удалять ли файл (даже если он не существует).
Windows 95 , Windows 98 и Windows Me используют аналогичный файл, а настройки для него расположены в разделе «Панель управления» → «Система» → вкладка «Производительность» → «Виртуальная память». Windows автоматически устанавливает размер файла подкачки, начиная с 1,5-кратного размера физической памяти, и при необходимости расширяет его до 3-кратного размера физической памяти. Если пользователь запускает приложения, интенсивно использующие память, в системе с небольшим объемом физической памяти, предпочтительно вручную установить для этих размеров значение, превышающее значение по умолчанию.
Windows НТ
[ редактировать ]Файл, используемый для подкачки в семействе Windows NT : pagefile.sys
. По умолчанию файл подкачки находится в корневом каталоге раздела, на котором установлена Windows. Windows можно настроить на использование свободного места на любых доступных дисках для файлов подкачки. Однако необходимо, чтобы в загрузочном разделе (т. е. диске, содержащем каталог Windows) был файл подкачки, если система настроена на запись дампов ядра или полной памяти после « синего экрана смерти» . Windows использует файл подкачки в качестве временного хранилища для дампа памяти. При перезагрузке системы Windows копирует дамп памяти из файла подкачки в отдельный файл и освобождает пространство, которое использовалось в файле подкачки. [13]
Фрагментация
[ редактировать ]Этот раздел необходимо обновить . ( июль 2014 г. ) |
В конфигурации Windows по умолчанию файлу подкачки при необходимости разрешено расширяться за пределы его первоначального выделения. Если это происходит постепенно, он может стать сильно фрагментированным , что потенциально может вызвать проблемы с производительностью. [14] Чтобы избежать этого, обычно советуют установить один размер файла «заблокированной» страницы, чтобы Windows не расширяла его. Однако файл подкачки расширяется только тогда, когда он заполнен, что в конфигурации по умолчанию составляет 150% от общего объема физической памяти. [ нужна ссылка ] Таким образом, общая потребность в виртуальной памяти, поддерживаемой файлом подкачки, должна превысить 250% физической памяти компьютера, прежде чем файл подкачки сможет расшириться.
Фрагментация файла подкачки, возникающая при его расширении, является временной. Как только расширенные регионы перестают использоваться (при следующей перезагрузке, если не раньше), дополнительное дисковое пространство освобождается, и файл подкачки возвращается в исходное состояние.
Блокировка размера файла подкачки может быть проблематичной, если приложение Windows запрашивает больше памяти, чем общий размер физической памяти и файла подкачки, что приводит к неудачным запросам на выделение памяти, что может привести к сбою приложений и системных процессов. Кроме того, файл подкачки редко читается или записывается в последовательном порядке, поэтому преимущество в производительности от полностью последовательного файла подкачки минимально. Однако большой файл подкачки обычно позволяет использовать приложения с большим объемом памяти без каких-либо штрафов, кроме использования большего дискового пространства. Хотя фрагментированный файл подкачки сам по себе не является проблемой, фрагментация файла подкачки переменного размера со временем приведет к созданию нескольких фрагментированных блоков на диске, что приведет к фрагментации других файлов. По этой причине лучше использовать непрерывный файл подкачки фиксированного размера, при условии, что выделенный размер достаточно велик для удовлетворения потребностей всех приложений.
Требуемое дисковое пространство можно легко выделить в системах с более свежими характеристиками (например, в системе с 3 ГБ памяти и файлом подкачки фиксированного размера размером 6 ГБ на диске емкостью 750 ГБ или в системе с 6 ГБ памяти и 16 ГБ памяти). Файл подкачки фиксированного размера (ГБ) и 2 ТБ дискового пространства). В обоих примерах система использует около 0,8% дискового пространства с предварительно расширенным до максимума файлом подкачки.
Дефрагментация файла подкачки также иногда рекомендуется для повышения производительности, когда система Windows постоянно использует гораздо больше памяти, чем ее общая физическая память. [ нужна ссылка ] Это представление игнорирует тот факт, что, за исключением временных результатов расширения, файл подкачки не фрагментируется с течением времени. В целом проблемы с производительностью, связанные с доступом к файлам подкачки, гораздо эффективнее решаются за счет добавления дополнительной физической памяти.
Unix и Unix-подобные системы
[ редактировать ]Системы Unix и другие Unix-подобные операционные системы используют термин «подкачка» для описания процесса замены оперативной памяти на дисковом пространстве, когда физическая память заполнена. [15] В некоторых из этих систем принято выделять под подкачку целый раздел жесткого диска. Эти разделы называются разделами подкачки . Во многих системах для подкачки выделен целый жесткий диск, отдельный от дисков с данными, и содержащий только раздел подкачки. Жесткий диск, предназначенный для замены, называется «подкачивающим диском», «рабочим диском» или « чистым диском ». Некоторые из этих систем поддерживают только обмен на раздел подкачки; другие также поддерживают обмен на файлы.
Линукс
[ редактировать ]Ядро Linux поддерживает практически неограниченное количество серверов подкачки (устройств или файлов), а также поддерживает назначение серверных приоритетов. Когда ядро выгружает страницы из физической памяти, оно использует серверную часть с наивысшим приоритетом, имеющую доступное свободное пространство. Если нескольким серверам подкачки назначается один и тот же приоритет, они используются по принципу циклического перебора (что чем-то похоже на схемы хранения данных RAID 0 ), обеспечивая повышение производительности при условии эффективного параллельного доступа к базовым устройствам. [16]
Поменять файлы и разделы местами
[ редактировать ]С точки зрения конечного пользователя, файлы подкачки в ядрах Linux версий 2.6.x и более поздних работают практически так же быстро, как и разделы подкачки; ограничением является то, что файлы подкачки должны быть расположены непрерывно в соответствующих файловых системах. Чтобы повысить производительность файлов подкачки, ядро сохраняет карту их размещения на базовых устройствах и обращается к ним напрямую, минуя кэш и избегая нагрузки на файловую систему. [17] [18] При размещении на жестких дисках, которые представляют собой устройства с вращающимся магнитным носителем, одним из преимуществ использования разделов подкачки является возможность размещать их в смежных областях жесткого диска, что обеспечивает более высокую пропускную способность данных или более быстрое время поиска. Однако административная гибкость файлов подкачки может перевесить определенные преимущества разделов подкачки. Например, файл подкачки можно поместить в любую смонтированную файловую систему, ему может быть присвоен любой желаемый размер, а также его можно добавлять или изменять по мере необходимости. Разделы подкачки не столь гибки; их невозможно увеличить без использования инструментов разметки или управления томами , которые создают различные сложности и могут привести к простоям.
Обмен
[ редактировать ]Swappiness — это параметр ядра Linux , который управляет относительным весом, придаваемым выгрузке из памяти времени выполнения , в отличие от удаления страниц из системного кэша страниц , когда запрос на выделение памяти не может быть удовлетворен из свободной памяти. Swappiness может быть установлен на значение от 0 до 200. [19] Низкое значение приводит к тому, что ядро предпочитает удалять страницы из страничного кэша, тогда как более высокое значение заставляет ядро предпочитать заменять «холодные» страницы памяти. Значение по умолчанию : 60
; установка более высокого значения может привести к высокой задержке, если необходимо вернуть обратно холодные страницы (например, при взаимодействии с программой, которая простаивала), а установка более низкого значения (даже 0) может привести к высокой задержке, когда файлы, которые были удалены из кэш необходимо будет прочитать снова, но это сделает интерактивные программы более отзывчивыми, поскольку им с меньшей вероятностью придется переключать обратно холодные страницы. Замена также может еще больше замедлить работу жестких дисков , поскольку требует большого количества случайных операций записи, в то время как у твердотельных накопителей такой проблемы нет. Конечно, значения по умолчанию хорошо работают в большинстве рабочих нагрузок, но настольные компьютеры и интерактивные системы для любой ожидаемой задачи могут захотеть снизить этот параметр, в то время как пакетная обработка и менее интерактивные системы могут захотеть его увеличить. [20]
Обмен смертью
[ редактировать ]Когда системной памяти крайне недостаточно для текущих задач и большая часть активности памяти подвергается медленной подкачке, система может стать практически неспособной выполнить любую задачу, даже если процессор простаивает. Когда каждый процесс ожидает обмена, считается, что система находится в состоянии смерти подкачки . [21] [22]
Смерть подкачки может произойти из-за неправильно настроенного перераспределения памяти . [23] [24] [25]
Исходное описание проблемы «смертельной замены» относится к X-серверу . Если код или данные, используемые X-сервером для ответа на нажатие клавиши, отсутствуют в основной памяти, то если пользователь вводит нажатие клавиши, сервер выдает одну или несколько ошибок страницы, требуя, чтобы эти страницы были прочитаны из подкачки, прежде чем нажатие клавиши может быть выполнено. обрабатывается, замедляя реакцию на него. Если эти страницы не остаются в памяти, их придется снова загрузить, чтобы обработать следующее нажатие клавиши, в результате чего система практически перестанет отвечать на запросы, даже если она на самом деле нормально выполняет другие задачи. [26]
macOS
[ редактировать ]macOS использует несколько файлов подкачки. При установке по умолчанию (и рекомендованной Apple) они размещаются в корневом разделе, хотя вместо этого их можно разместить в отдельном разделе или на устройстве. [27]
АмигаОС 4
[ редактировать ]AmigaOS 4.0 представила новую систему распределения оперативной памяти и дефрагментации физической памяти. Он по-прежнему использует плоское общее адресное пространство, которое невозможно дефрагментировать. Он основан на методе распределения блоков и страничной памяти, позволяющей осуществлять обмен. Пейджинг был реализован в AmigaOS 4.1, но может привести к блокировке системы, если вся физическая память будет использована. [28] Память подкачки можно активировать и деактивировать в любой момент, позволяя пользователю использовать только физическую оперативную память.
Производительность
[ редактировать ]Резервное хранилище для операционной системы с виртуальной памятью обычно на много порядков медленнее, чем ОЗУ . Кроме того, использование механических запоминающих устройств приводит к задержке в несколько миллисекунд для жесткого диска. Поэтому желательно сократить или исключить подкачку там, где это практически осуществимо. Некоторые операционные системы предлагают настройки, влияющие на решения ядра.
- Linux предлагает
/proc/sys/vm/swappiness
параметр, который изменяет баланс между выгрузкой оперативной памяти и удалением страниц из системного страничного кэша . - Windows 2000, XP и Vista предлагают
DisablePagingExecutive
параметр реестра, который определяет, можно ли выгрузить код и данные режима ядра. - В мейнфреймах часто использовались дисковые накопители или барабаны с головкой на дорожку для хранения страниц и подкачки, чтобы сократить время поиска, а также несколько технологий. [29] иметь несколько одновременных запросов к одному и тому же устройству, чтобы уменьшить задержку вращения .
- Флэш-память имеет ограниченное число циклов стирания-записи (см. ограничения флэш-памяти ), а наименьший объем данных, который можно стереть за один раз, может быть очень большим (128 КиБ для твердотельного накопителя Intel X25-M). [30] ), редко совпадающий с размером страницы. Поэтому флэш-память может быстро изнашиваться, если она используется в качестве области подкачки в условиях ограниченного объема памяти. С другой стороны, флэш-память практически не имеет задержек по сравнению с жесткими дисками и не энергозависима, как микросхемы оперативной памяти. Такие схемы, как ReadyBoost и Intel Turbo Memory , созданы для использования этих характеристик.
Многие Unix-подобные операционные системы (например, AIX , Linux и Solaris ) позволяют параллельно использовать несколько устройств хранения для пространства подкачки для повышения производительности.
Размер пространства подкачки
[ редактировать ]В некоторых старых операционных системах с виртуальной памятью пространство в резервном хранилище подкачки резервируется, когда программы выделяют память для данных времени выполнения. Поставщики операционных систем обычно дают рекомендации о том, сколько места подкачки следует выделить.
Размеры физического и виртуального адресного пространства
[ редактировать ]Пейджинг — это один из способов позволить размеру адресов, используемых процессом, который представляет собой «виртуальное адресное пространство» или «логическое адресное пространство» процесса, отличаться от объема основной памяти, фактически установленной на конкретном компьютере, который физическое адресное пространство.
Основная память меньше виртуальной памяти
[ редактировать ]В большинстве систем размер виртуального адресного пространства процесса намного больше доступной основной памяти. [31] Например:
- Адресная шина , соединяющая ЦП с основной памятью, может быть ограничена. 32-битные внутренние адреса процессора i386SX могут адресовать 4 ГБ, но к адресной шине подключено только 24 контакта, что ограничивает установленную физическую память до 16 МБ. Могут существовать и другие аппаратные ограничения на максимальный объем ОЗУ, который можно установить.
- Максимальный объем памяти может быть не установлен из-за стоимости, потому что в стандартной конфигурации модели он отсутствует или потому, что покупатель не считает, что это будет выгодно.
- Иногда не все внутренние адреса могут быть использованы для памяти, поскольку аппаратная архитектура может зарезервировать большие области для ввода-вывода или других функций.
Основная память того же размера, что и виртуальная память
[ редактировать ]Компьютер с истинной n -битной адресацией может иметь 2 н Установлены адресуемые блоки оперативной памяти. Примером может служить 32-разрядный процессор x86 с 4 ГБ памяти и без расширения физического адреса (PAE). В этом случае процессор способен адресовать всю установленную оперативную память и не более.
Однако даже в этом случае подкачка может использоваться для поддержки большего объема виртуальной памяти, чем физической. Например, многие программы могут работать одновременно. Вместе им может потребоваться больше физической памяти, чем можно установить в системе, но не вся она обязательно должна находиться в оперативной памяти одновременно. Система подкачки принимает эффективные решения о том, какую память выделить во вторичное хранилище, что приводит к оптимальному использованию установленной оперативной памяти.
Кроме того, операционная система может предоставлять услуги программам, которым требуется больший объем памяти, например файлы, размер которых может превышать предел установленной оперативной памяти. Не весь файл может быть одновременно отображен в адресное пространство процесса, но операционная система может разрешить отображать области файла в адресное пространство и отменять отображение, если необходимо отобразить другой регион.
Основная память больше виртуального адресного пространства
[ редактировать ]У некоторых компьютеров основная память превышает виртуальное адресное пространство процесса, например Magic-1. [31] некоторые машины PDP-11 и некоторые системы, использующие 32-разрядные процессоры x86 с расширением физического адреса . Это сводит на нет значительное преимущество подкачки, поскольку один процесс не может использовать больше оперативной памяти, чем объем его виртуального адресного пространства. Такие системы часто используют методы пейджинга для получения дополнительных преимуществ:
- «Дополнительную память» можно использовать в кэше страниц для кэширования часто используемых файлов и метаданных, таких как информация о каталогах, из вторичного хранилища.
- Если процессор и операционная система поддерживают несколько виртуальных адресных пространств, «дополнительную память» можно использовать для запуска большего количества процессов. Пейджинг позволяет совокупному количеству виртуальных адресных пространств превышать физическую основную память.
- Процесс может хранить данные в файлах, отображаемых в памяти, в файловых системах с поддержкой памяти, таких как файловая система tmpfs или файловые системы на RAM-диске , а также отображать файлы в адресное пространство и из него по мере необходимости.
- Набор процессов может по-прежнему зависеть от расширенных функций безопасности, которые изоляция на основе страниц может привнести в многозадачную среду.
Размер совокупного объема виртуальных адресных пространств по-прежнему ограничен объемом доступной вторичной памяти.
См. также
[ редактировать ]- Аномалия Белади
- Пейджинг по требованию , «ленивая» схема пейджинга.
- Расширенная память
- Управление памятью
- Сегментация памяти
- Страница (память компьютера)
- Кэш страниц — дисковый кеш, использующий механизм виртуальной памяти.
- Алгоритм замены страниц
- Таблица страниц
- Физическая память , предмет пейджинга
- Виртуальная память — абстракция, которую может создать подкачка.
Примечания
[ редактировать ]- ^ Первоначально барабаны , а затем жесткие диски и твердотельные накопители . для подкачки использовались
- ^ Например, Multics , OS/VS1 , OS/VS2 , VM/370
- ^ Например, z/OS .
- ^ Некоторые системы имеют глобальную таблицу страниц, некоторые системы имеют отдельную таблицу страниц для каждого процесса, некоторые системы имеют отдельную таблицу страниц для каждого сегмента. [б] и в некоторых системах есть каскадные таблицы страниц. [с]
- ^ Например, MVS (множественное виртуальное хранилище).
- ^ Прерывание по неэквивалентности происходит, когда старшие биты адреса не соответствуют ни одной записи в ассоциативной памяти.
Ссылки
[ редактировать ]- ^ Белзер, Джек; Хольцман, Альберт Г.; Кент, Аллен, ред. (1981). «Операционные системы». Энциклопедия информатики и технологий . Том. 11. ЦРК Пресс. п. 442. ИСБН 0-8247-2261-2 . Архивировано из оригинала 27 февраля 2017 г.
- ^ Крагон, Харви Г. (1996). Системы памяти и конвейерные процессоры . Издательство Джонс и Бартлетт. п. 109. ИСБН 0-86720-474-5 . Архивировано из оригинала 27 февраля 2017 г.
- ^ Белзер, Джек; Хольцман, Альберт Г.; Кент, Аллен, ред. (1981). «Системы виртуальной памяти». Энциклопедия информатики и технологий . Том. 14. ЦРК Пресс. п. 32. ISBN 0-8247-2214-0 . Архивировано из оригинала 27 февраля 2017 г.
- ^ Килберн, Т ; Пейн, РБ; Ховарт, ди-джей (1962). «Супервайзер Атласа» .
- ^ Р.В. О'Нил. Опыт использования многопрограммной системы с разделением времени и аппаратным обеспечением динамического перемещения адресов . Учеб. 30-я компьютерная конференция AFIPS (Весенняя объединенная компьютерная конференция, 1967 г.). стр. 611–621. дои : 10.1145/1465482.1465581 .
- ^ Справочное руководство по системам научных данных, компьютер SDS 940 (PDF) . 1966. стр. 8–9.
- ^ «Предварительная выборка подкачки» . Еженедельные новости Linux . 27 сентября 2005 г.
- ^ Самнер, Ф.Х.; Хейли, Г.; Чен, ECY (1962). «Центральный блок управления компьютером «Атлас». Обработка информации 1962 . Материалы Конгресса ИФИП. Том. Материалы Конгресса ИФИП 62. Спартанец.
- ^ «Атлас» . Манчестерский университет: факультет компьютерных наук. Архивировано из оригинала 28 июля 2012 г.
- ^ «Атлас Архитектуры» . Компьютер Атлас . Чилтон: Компьютерная лаборатория Атласа. Архивировано из оригинала 10 декабря 2012 г.
- ^ Килберн, Т.; Пейн, РБ; Ховарт, ди-джей (декабрь 1961 г.). «Супервайзер Атласа» . Компьютеры – ключ к полному контролю над системами . Материалы конференций. Том. 20, Материалы Восточной объединенной компьютерной конференции, Вашингтон, округ Колумбия, Макмиллан. стр. 279–294. Архивировано из оригинала 31 декабря 2009 г.
- ^ Килберн, Т.; Эдвардс, DBG; Ланиган, MJ; Самнер, Ф.Х. (апрель 1962 г.). «Одноуровневая система хранения». IRE-транзакции на электронных компьютерах (2). Институт радиоинженеров: 223–235. дои : 10.1109/TEC.1962.5219356 .
- ^ Цигкояннис, Илиас (11 декабря 2006 г.). «Анализ аварийной дампы» . водитель пишет != вождение автобуса . Майкрософт . Архивировано из оригинала 7 октября 2008 г. Проверено 22 июля 2008 г.
- ^ «Windows Sysinternals PageDefrag» . Сисинтерналы . Майкрософт . 01.11.2006. Архивировано из оригинала 25 декабря 2010 г. Проверено 20 декабря 2010 г.
- ^ Оба, Дэвид (27 марта 2020 г.). «Введение в пространство подкачки в системах Linux» . Opensource.com . Проверено 8 декабря 2021 г.
- ^ «swapon(2) – справочная страница Linux» . Linux.Die.net . Архивировано из оригинала 28 февраля 2014 г. Проверено 8 сентября 2014 г.
- ^ " "Jesper Juhl": Re: Как отправить на перерыв? - дамп из замороженного 64битного Linux" . ЛКМЛ. 29 мая 2006 г. Архивировано из оригинала 24 ноября 2010 г. Проверено 28 октября 2010 г.
- ^ «Эндрю Мортон: Re: Раздел подкачки или файл подкачки» . ЛКМЛ. Архивировано из оригинала 24 ноября 2010 г. Проверено 28 октября 2010 г.
- ^ «Документация ядра Linux для /proc/sys/vm/» .
- ^ Эндрюс, Джереми (29 апреля 2004 г.). «Linux: настройка подкачки» . kerneltrap.org . Архивировано из оригинала 24 мая 2013 г. Проверено 3 января 2018 г.
- ^ Рик ван Риель (20 мая 1998 г.). "поменять местами смерть (как в 2.1.91) и таблицы страниц" . Архивировано из оригинала 29 декабря 2017 г.
- ^ Кайл Рэнкин (2012). Устранение неполадок DevOps: лучшие практики Linux-сервера . Аддисон-Уэсли. п. 159. ИСБН 978-0-13-303550-6 . Архивировано из оригинала 29 декабря 2017 г.
- ^ Андрис Брауэр. «Ядро Linux: Память» . Архивировано из оригинала 13 августа 2017 г.
- ^ Красная шляпа. «Настройка мощности» . Архивировано из оригинала 23 июля 2017 г.
- ^ «Настройки превышения объема памяти» . 16 февраля 2014 г. Архивировано из оригинала 31 мая 2017 г.
- ^ Питер Макдональд (10 февраля 1993 г.). «обмен до смерти» . Архивировано из оригинала 28 марта 2017 г.
- ^ Джон Сиракузы (15 октября 2001 г.). «Мак ОС Х 10.1» . Арс Техника. Архивировано из оригинала 5 сентября 2008 г. Проверено 23 июля 2008 г.
- ^ Основной разработчик AmigaOS (08 января 2011 г.). «Re: Проблема со свопом также в обновлении 4?» . Гиперион Развлечения. Архивировано из оригинала 12 апреля 2013 г. Проверено 8 января 2011 г.
- ^ Например, определение положения вращения на канале блочного мультиплексора.
- ^ «Согласование файловых систем с размером блока стирания SSD | Мысли Теда» . Thunk.org. 20 февраля 2009 г. Архивировано из оригинала 13 ноября 2010 г. Проверено 28 октября 2010 г.
- ^ Перейти обратно: а б Билл Бузби. «Проектирование пейджинга по требованию Magic-1 Minix» . Архивировано из оригинала 5 июня 2013 г. Проверено 9 декабря 2013 г.
Внешние ссылки
[ редактировать ]- Обмен фактами и вопросами по документации Ubuntu
- Windows Server — перемещение файла подкачки в другой раздел или диск Дэвида Нудельмана
- Как работает виртуальная память с сайта HowStuffWorks.com (фактически объясняется только концепция подкачки, а не концепция виртуальной памяти)
- Управление пространством подкачки Linux (устарело, как признает автор)
- Руководство по оптимизации скорости виртуальной памяти (устарело)
- Алгоритмы замены страниц виртуальной памяти
- Windows XP: Как вручную изменить размер файла подкачки виртуальной памяти
- Windows XP: факторы, которые могут истощить запас памяти выгружаемого пула
- Драйвер SwapFs , который можно использовать для сохранения файла подкачки Windows в разделе подкачки Linux.