Физическая память и виртуальная память что

Sysadminium

База знаний системного администратора

Виртуальная и физическая память Windows

Каждому процессу выделяется память, такая память называется виртуальной. В этой статье я покажу вам, чем отличаются виртуальная и физическая память Windows.

Виртуальная и физическая память Windows

Для каждого нового процесса, в операционной системе Windows, выделяется некоторый объём оперативной памяти. Процесс не обязательно должен использовать весь выделенный объем памяти, он может занять всего лишь часть. Этот объем памяти называется виртуальным адресным пространством.

Физическая память и виртуальная память что

Процесс помещает все свои данные в выделенное ему виртуальное адресное пространство. И кстати, он не заботится о реальном расположении памяти. Собственно говоря, физическая память может находиться в оперативной памяти или на жестком диске. Такая память, расположенная на жёстком диске, называется SWAP. В Windows SWAP – это файл на жёстком диске в который помещаются данные из оперативной памяти. Данные в этом файле хранятся точно также как и в оперативной памяти.

Физическая память и виртуальная память что

Виртуальную память так назвали, потому что процесс думает что он в операционной системе один. Процесс видит только выделенный ему объём памяти (своё виртуальное адресное пространство) и не знает сколько в системе реально физической памяти.

Соотношение виртуальной памяти с физической

В общем работу виртуальной и физической памяти можно представить, таким образом:

Размер виртуального адресного пространства теоретически ограничивается архитектурой компьютера. Но операционная система накладывает дополнительные ограничения.

АрхитектураТеоретический пределРеальный предел для
системных компонентов Windows
Реальный предел для виртуального
адресного пространства процесса
32-разрядная4 ГБ2 ГБ2 ГБ
64-разрядная16 ЭБ =
= 17600000000 ГБ
128 ТБ =
= 128000 ГБ
128 ТБ =
= 128000 ГБ

Вы можете спросить, куда девается остальная память на 64-разрядной Windows? Она просто игнорируется, так как пока сложно себе представить такой объём оперативной памяти.

У физической памяти тоже есть лимит и он намного меньше чем лимиты для виртуальной памяти и составляет 24 ТБ.

Надеюсь вам стало понятнее зачем нужна виртуальная и физическая память Windows.

Источник

Физическая и виртуальная память(ликбез).

Физическая память и виртуальная память что

Физическая и виртуальная память(ликбез).

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

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

Процессор в своей работе извлекает команды и данные из физической оперативной памяти, данные из внешней памяти (винчестера, CD ) непосредственно на обработку в процессор попасть не могут.

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

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

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

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

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

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

При работе на компьютере может встретиться наличие трех ситуаций:

— V (вирт) V (оп) – виртуальное адресное пространство меньше объема ОП;

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

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

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

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

Источник

Управление памятью в Linux. Физическая и Виртуальная память

Обновл. 23 Июн 2021 |

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

Что такое физическая память?

Физическая память (или «ОЗУ», «RAM», «оперативка») — это энергозависимая память, установленная в компьютере. Для её работы требуется непрерывный поток электричества. Перебои с электропитанием или внезапное выключение компьютера могут привести к стиранию хранящихся в ней данных. Кроме того, эта память является линейно адресуемой. Другими словами, значения адресов памяти увеличиваются линейным образом.

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

Что такое виртуальная память?

Виртуальная память (или «логическая память») — это метод управления памятью, осуществляемый операционной системой, который позволяет программам задействовать значительно больше памяти, чем фактически установлено в компьютере. Например, если объем физической памяти компьютера составляет 4 ГБ, а виртуальной 16 ГБ, то программе может быть доступен объем виртуальной памяти вплоть до 16 ГБ.

Физическая память vs. Виртуальная память

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

Физическая память Виртуальная память
Непосредственно установленная в компьютере оперативная память.Метод управления памятью, с помощью которого для программ создается иллюзия наличия в системе (физической) памяти, гораздо больше реально установленной.
Работает быстрее.Работает медленнее.
Ограничена размером чипа ОЗУ.Ограничена размером жесткого диска.
Может напрямую обращаться к процессору.Не может напрямую обращаться к процессору.
Использует swapping.Использует paging.

Рассмотрим данные пункты:

#1: Тип памяти:

Физическая память является фактической памятью.

Виртуальная память является логической памятью.

#2: Скорость:

Физическая память быстрее виртуальной памяти.

#3: Размер:

Физическая память ограничена размером чипа ОЗУ.

Виртуальная память ограничена размером жесткого диска.

#4: Процессор:

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

#5: Методы, лежащие в основе:

Физическая (оперативная) память использует swapping. Swapping — это концепция управления памятью, при которой всякий раз, когда системе для хранения данных некоторого процесса не хватает оперативной (физической) памяти, она берет её из вторичного хранилища (например, жесткого диска), сбрасывая на него временно неиспользуемые данные. В Linux есть специальная программа управления памятью, которая управляет этим процессом. Всякий раз, когда ОЗУ не хватает памяти, программа управления памятью ищет все те неактивные блоки данных (страницы), присутствующие в ОЗУ, которые не использовались в течение длительного времени. Когда она успешно находит подобные блоки, то перемещает их в память подкачки (например, на жесткий диск). Таким образом, освобождается пространство оперативной памяти, и, следовательно, его можно использовать для некоторых других программ, которые нуждаются в срочной обработке.

Виртуальная память использует paging. Paging — это метод выделения памяти, при котором разным несмежным блокам памяти назначается фиксированный размер. Размер обычно составляет 4 КБ. Paging всегда выполняется между активными страницами (pages).

Команды для управления памятью в Linux

Давайте рассмотрим некоторые команды для управления памятью в Linux.

Файл /proc/meminfo

Файл /proc/meminfo содержит всю информацию, связанную с памятью. Для просмотра данного файла используйте команду cat:

Физическая память и виртуальная память что

Эта команда выводит множество параметров, связанных с памятью. Чтобы получить информацию о физической памяти из файла /proc/meminfo, используйте:

$ grep MemTotal /proc/meminfo

Физическая память и виртуальная память что

Чтобы получить информацию о виртуальной памяти из файла /proc/meminfo, используйте:

$ grep VmallocTotal /proc/meminfo

Физическая память и виртуальная память что

Команда top

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

Физическая память и виртуальная память что

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

Команда free

Команда free отображает объем свободной и используемой памяти в системе.

Физическая память и виртуальная память что

Значения для каждого поля указаны в кибибайтах (КиБ).

Чтобы получить вывод в более удобочитаемом формате, используйте:

Физическая память и виртуальная память что

Команда vmstat

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

Физическая память и виртуальная память что

Поделиться в социальных сетях:

Источник

Физическая и виртуальная память

Объем используемой программами памяти можно увеличить путем добавления к физической памяти (модулям оперативной памяти) виртуальной памяти.

Виртуальная память выделяется в форме области жесткого диска. В ОС Windows это файл подкачки.

Размер файла подкачки и его размещение в иерархической файловой системе можно изменить.

Быстродействие жесткого диска и, соответственно, виртуальной памяти существенно меньше быстродействия оперативной памяти.

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

3.Системы кэш-памяти, сравнение различных видов памяти.

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

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

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

Физическая память и виртуальная память что

Выбор информации для кэш-памяти. Процесс выбора является ключевым для эффективного использования процессора. Если бы обращение к памяти осуществлялось случайным образом, предсказание адреса следующей адресуемой ячейки памяти было бы невозможным. Однако обращение к памяти чаще всего не носит случайною характера- Большинство программ обращается к памяти вблизи той ячейки, куда было обращение перед этим. Это явление носит название локальности программы. Именно локальность делает кэш-систему эффективной.

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

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

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

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

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

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

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

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

При выборке нового блока кэш-контроллер должен решить, на место какого блока в кэш-памяти его записать. Здесь есть три возможности, адекватность которых определяется поведением программы: 1) случайный выбор; 2) запись в последовательном порядке; 3) запись на место блока, который не адресовался дольше других. Последний алгоритм требует наличия в контроллере «счетчика возраста», который указывает, на место какого блока можно записывать новый. Этот счетчик должен модифицироваться каждым запросом к кэш-памяти.

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

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

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

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

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

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

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

Кэш центрального процессора разделён на несколько уровней. Максимальное количество кэшей — четыре. В универсальном процессоре в настоящее время число уровней может достигать трёх. Кэш-память уровня N+1, как правило, больше по размеру и медленнее по скорости доступа и передаче данных, чем кэш-память уровня N.

Самым быстрым является кэш первого уровня — L1 cache (level 1 cache). По сути, она является неотъемлемой частью процессора, поскольку расположена на одном с ним кристалле и входит в состав функциональных блоков. В современных процессорах обычно L1 разделен на два кэша — кэш команд (инструкций) и кэш данных (Гарвардская архитектура). Большинство процессоров без L1 не могут функционировать. L1 работает на частоте процессора, и, в общем случае, обращение к нему может производиться каждый такт. Зачастую является возможным выполнять несколько операций чтения/записи одновременно.

Вторым по быстродействию является кэш второго уровня — L2 cache, который обычно, как и L1, расположен на одном кристалле с процессором. В ранних версиях процессоров L2 реализован в виде отдельного набора микросхем памяти на материнской плате. Объём L2 от 128 кбайт до 1−12 Мбайт. В современных многоядерных процессорах кэш второго уровня, находясь на том же кристалле, является памятью раздельного пользования — при общем объёме кэша в n Мбайт на каждое ядро приходится по n/c Мбайта, где c — количество ядер процессора.

Кэш третьего уровня наименее быстродействующий, но он может быть очень большим — более 24 Мбайт. L3 медленнее предыдущих кэшей, но всё равно значительно быстрее, чем оперативная память. В многопроцессорных системах находится в общем пользовании и предназначен для синхронизации данных различных L2.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *