WikiProject Computing | (Номинальный начальный класс, средняя важность) |
---|---|
Предположения, которые нужно исправить
В этой статье есть ссылки, относящиеся к IA32 . Например, речь идет об адресном пространстве 4 ГБ. На других архитектурах все могло быть иначе. Раану 13:30, 24 июля 2007 г. (UTC)
Предложение о слиянии
Статью можно объединить с виртуальной памятью, поскольку все ее содержимое, за исключением первого предложения, посвящено виртуальной памяти, а не конкретно виртуальному адресному пространству. —Предыдущий комментарий без подписи, добавленный 132.204.221.34 ( обсуждение ) 06:18, 29 мая 2008 г. (UTC)
- Безусловно, концепция виртуальной памяти - это то, что придало особое значение виртуальным адресным пространствам, но эти два понятия не более того, чем ракетный двигатель и исследование космоса . «Виртуальное адресное пространство» - это одна из (нескольких) аппаратных реализаций адресов памяти , случай « логического адресного пространства», которое противопоставляется физическим адресам . «Виртуальная память» - это особый механизм уровня ОС для увеличения используемой памяти для процесса. Самый распространенный и самый известный, но не единственный (см. Файл с отображением в память ). Хотя в современных системах виртуальная память работает в контексте VAS, она не обязательно должна ее использовать (см. Древний механизм «подкачки», когда процесс был полностью выгружен на диск). Оставьте статьи отдельно, просто укажите, что к чему. Incnis Mrsi ( разговор ) 12:43, 26 августа 2012 (UTC)
- Хорошо, здесь нужно обсудить несколько концепций.
- Существует концепция инструкций, относящихся к адресам, отличным от физических. Это можно было бы использовать в системе, которая хранит весь код и данные в памяти, даже без замены целых процессов, не говоря уже об обмене сегментами или подкачке страниц. Это то, что, например, предоставляют регистры «базовые и границы», и, возможно, именно на это ссылается страница логического адреса, когда обсуждает адреса памяти.
- Существует концепция того, что некоторые или все эти «нефизические» адреса не обязательно отображаются на физические адреса, при этом попытки машины ссылаться на них захватываются кодом, который, например, загружал бы данные из резервного хранилища в основную память. и изменение карты так, чтобы рассматриваемый диапазон адресов относился к рассматриваемой физической памяти. Это то, что обычно называют «виртуальной памятью», и это то, что охватывает страница виртуальной памяти .
- Существует понятие диапазона нефизических адресов, на которые могут ссылаться инструкции на машине с некоторой формой сопоставления адресов. На машине с виртуальной памятью это будет называться виртуальным адресным пространством; Я не уверен, как это будет вызываться на машине без виртуальной памяти (так что, если какой-либо из адресов в этом адресном пространстве поддерживается физической памятью, все они - то есть система, в которой весь код и данные находятся в физической памяти. всегда, или когда объект с собственным адресным пространством находится либо полностью в физической памяти, либо полностью вне физической памяти, то есть в любой момент времени вставлен или выгружен). Нет требования, чтобы каждый процесс, если ОС даже имеет представление о процессах, имел отдельное виртуальное адресное пространство, как указывает текущий второй абзац виртуальной памяти :
- Большинство современных операционных систем, поддерживающих виртуальную память, также запускают каждый процесс в собственном выделенном адресном пространстве . Таким образом, кажется, что каждая программа имеет единственный доступ к виртуальной памяти. Однако некоторые старые операционные системы (такие как OS / VS1 и OS / VS2 SVS ) и даже современные (например, IBM i ) представляют собой операционные системы с одним адресным пространством, которые запускают все процессы в одном адресном пространстве, состоящем из виртуализированной памяти.
- Существует понятие файлов с отображением в память, которые обычно реализуются путем присвоения раздела виртуального адресного пространства области файла и упорядочивания ошибок страниц в этой области, выборки резервного хранилища из файла и, при необходимости, упорядочивания этих грязных страниц. в этом регионе будут записаны обратно в файл. Отличается ли это от «виртуальной памяти» - это вопрос о том, относится ли «виртуальная память» только к тому, что в системе со страничной виртуальной памятью иногда называют «анонимными страницами», то есть страницами, не поддерживаемыми файлом с отображением в память (например, как, скажем, страницы стека и "кучи"), но вместо этого поддерживаются страницами в "пространстве подкачки" (раздел подкачки, файл подкачки / файл подкачки, что угодно) или относится ко всем случаям, когда часть адресного пространства не должна быть поддерживаются физической памятью, и ссылка на эту часть адресного пространства вызывает сбой, когда обработчик сбоев извлекает данные из некоторой формы резервного хранилища, которое может быть файлом с отображением в память. Я не знаю ни одного единого мнения о том, что «виртуальная память» относится только к первой. Гай Харрис ( разговор ) 20:10, 26 августа 2012 (UTC)
- Я не настаиваю на том, чтобы «виртуальная память» и «файлы с отображением памяти» никогда не пересекались . Я настаиваю только на том, что они различны. Доступ к отображенному в память файлу не обязательно приводит к сбою страницы. При чтении файла может быть уже загружена целая страница. При записи на уже загруженную страницу страница просто помечается как измененная (без ошибок). Затем, по прошествии подходящего времени, ядро загружает его (опять же, без ошибок). Тогда страница не обязательно удаляется, но может оставаться в ОЗУ в качестве файлового кеша. Это не совсем так, как обычно работает пейджинг , но он также расширяет полезную часть VAS. Не могли бы вы предложить определение виртуальной памяти, которая полностью поглощает файлы с отображением памяти? Incnis Mrsi ( разговор ) 07:17, 27 августа 2012 (UTC)
- Существует понятие файлов с отображением в память, которые обычно реализуются путем присвоения раздела виртуального адресного пространства области файла и упорядочивания ошибок страниц в этой области, выборки резервного хранилища из файла и, при необходимости, упорядочивания этих грязных страниц. в этом регионе будут записаны обратно в файл. Отличается ли это от «виртуальной памяти» - это вопрос о том, относится ли «виртуальная память» только к тому, что в системе со страничной виртуальной памятью иногда называют «анонимными страницами», то есть страницами, не поддерживаемыми файлом с отображением в память (например, как, скажем, страницы стека и "кучи"), но вместо этого поддерживаются страницами в "пространстве подкачки" (раздел подкачки, файл подкачки / файл подкачки, что угодно) или относится ко всем случаям, когда часть адресного пространства не должна быть поддерживаются физической памятью, и ссылка на эту часть адресного пространства вызывает сбой, когда обработчик сбоев извлекает данные из некоторой формы резервного хранилища, которое может быть файлом с отображением в память. Я не знаю ни одного единого мнения о том, что «виртуальная память» относится только к первой. Гай Харрис ( разговор ) 20:10, 26 августа 2012 (UTC)
- Доступ, например, к стеку или куче также не обязательно приводит к сбою страницы. При чтении из стека или кучи может быть загружена целая страница. При записи на уже загруженную страницу страница просто помечается как измененная (без ошибок). Затем, если страничный фрейм, содержащий эту страницу, нужен для другой цели, ядро загружает его (опять же, без ошибок). Единственные различия: 1) он читается или записывается в «область подкачки» (раздел подкачки или файл подкачки / файл страницы / как бы там ни называлась ваша ОС); 2) он не записывается обратно, если только фрейм страницы не нужен для другой цели. и 3) страницы, будучи анонимными, не служат записями в кэше. Таким образом, «доступ к файлу с отображением памяти не обязательно приводит к сбою страницы» не является точкой различия между «виртуальной памятью» в смысле «анонимные страницы не обязательно должны находиться в физической памяти» и отображенной в память. файлы.
- На странице, посвященной разбиению на страницы , во вводном абзаце говорится: «В операционных системах компьютеров разбиение на страницы является одной из схем управления памятью, с помощью которой компьютер может хранить и извлекать данные из вторичного хранилища для использования в основной памяти. По схеме операционная система извлекает данные из вторичного хранилища в блоках одинакового размера, называемых страницами ». Это в точности относится к файлам с отображением в память - страницы в файле повторно запрашиваются из вторичного хранилища (файла) для использования в основной памяти и извлекаются в единицах страниц.
- И определение «виртуальной памяти», которое включает как анонимные страницы, так и страницы из файлов с отображением памяти, будет таким, где следующие предложения из первого абзаца статьи о виртуальной памяти :
- Этот метод виртуализирует различные формы хранения компьютерных данных в компьютерной архитектуре (такие как оперативная память и дисковое хранилище ), позволяя разрабатывать программу так , как будто существует только один вид памяти, «виртуальная» память, которая ведет себя как непосредственно адресуемая память для чтения / записи (RAM).
- включает файлы на диске, а также «пространство подкачки». В большинстве операционных систем, поддерживающих файлы с отображением памяти, должны выполняться явные вызовы для сопоставления областей файлов с адресным пространством (но я не думаю, что в IBM i так обстоит дело - я думаю, что каждый файл имеет область (одного) адресное пространство, постоянно назначенное ему), что можно рассматривать как различие, и в некоторых системах вы не можете обязательно отобразить весь файл в адресное пространство, например, вы не можете отобразить весь файл> 4 ГБ в адресное пространство, если указатели являются 32-битными, что можно рассматривать как еще одно различие, но в обоих случаях адреса, поддерживаемые «пространством подкачки» или файлом, являются «виртуальными» в том смысле, что нет гарантии, что они находятся в памяти и выборка из или сохранение в регионе может привести к сбою страницы. Гай Харрис ( разговор ) 09:12, 27 августа 2012 (UTC)
- Вы убедили, что существенной разницы нет (наверное, я недостаточно отличил «виртуальную память» от «страничной»). Но перенаправление с VAS на статью о «виртуальной памяти» может немного сбивать с толку: VAS не обязательно должен содержать какую-либо «виртуальную» (то есть еще не отображенную в физическую) память. Должно ли «виртуальное адресное пространство» стать квазинезависимым разделом с определением такого адресного пространства памяти? Incnis Mrsi ( разговор ) 19:12, 28 августа 2012 (UTC)
- включает файлы на диске, а также «пространство подкачки». В большинстве операционных систем, поддерживающих файлы с отображением памяти, должны выполняться явные вызовы для сопоставления областей файлов с адресным пространством (но я не думаю, что в IBM i так обстоит дело - я думаю, что каждый файл имеет область (одного) адресное пространство, постоянно назначенное ему), что можно рассматривать как различие, и в некоторых системах вы не можете обязательно отобразить весь файл в адресное пространство, например, вы не можете отобразить весь файл> 4 ГБ в адресное пространство, если указатели являются 32-битными, что можно рассматривать как еще одно различие, но в обоих случаях адреса, поддерживаемые «пространством подкачки» или файлом, являются «виртуальными» в том смысле, что нет гарантии, что они находятся в памяти и выборка из или сохранение в регионе может привести к сбою страницы. Гай Харрис ( разговор ) 09:12, 27 августа 2012 (UTC)
- Страница "виртуального адресного пространства" немного беспорядочная:
- Я никогда не слышал, чтобы «виртуальное адресное пространство» без «a» или «the» перед ним использовалось для обозначения механизма , как в первом предложении первого абзаца, а не для обозначения к диапазону нефизических адресов, к которым могут относиться инструкции.
- Концепции, обсуждаемые на этой странице, не ограничиваются «современными» операционными системами, такими как перечисленные (и я не уверен, что делает OpenVMS, UNIX или даже Windows NT «современными», поскольку они относятся к концу 1970-х годов. и начало-середина 1990-х гг.); они восходят по крайней мере Multics и TSS / 360 и TENEX .
- Существуют системы, которые не обеспечивают «безопасность за счет изоляции процессов», но предоставляют виртуальную память и глобальное виртуальное адресное пространство, например IBM i и «лицензированный внутренний код», на котором он работает; IBM i, по крайней мере, использует другие механизмы для изоляции процессов (как, например, OS / VS2 SVS, которая, как мне кажется, использовала механизм «ключа хранения»).
- Пример слишком ориентирован на NT и, вероятно, должен быть переписан, чтобы обсудить общие концепции анонимных страниц и страниц с отображением файлов, либо без ссылки на особенности NT, либо со ссылками на особенности из других операционных систем. Элементы «в 32-битной MS Windows» и «в 64-битной MS Windows», вероятно, следует полностью удалить; Википедия - это не руководство, руководство, учебник или научный журнал - если люди хотят знать такой уровень подробностей о NT, им следует заглянуть в документацию Microsoft. Гай Харрис ( разговор ) 20:10, 26 августа 2012 (UTC)
- Да это беспорядок. Я закрепил поводок, но нужно еще поработать. Питер Фласс ( разговор ) 02:04, 26 августа 2013 (UTC)
Есть ли консенсус по предложению о слиянии? Питер Фласс ( разговор ) 22:01, 12 декабря 2014 (UTC)
Итак, эм, разве это предложение не должно быть на целевой странице обсуждения, Talk: Virtual memory ? - SamB ( разговор ) 17:26, 20 июля 2015 (UTC)
Что является частью виртуального адресного пространства, а что нет?
Определяется виртуальное адресное пространство с помощью аппаратных средств (как в «всех адресов , для которых операционная система может обеспечить отображение») или с помощью аппаратных средств и операционной системы (как в «всех адресов , для которых операционная система фактически будет обеспечивать такое отображение , если А ссылка сделана на адрес ")? В первом случае адресное пространство для большинства, если не всех несегментированных систем будет включать адрес 0 и состоять из небольшого числа регионов (обычно 1 или 2, например 2 в x86-64 с текущими реализациями); в последнем случае для большинства ОС он не будет включать 0 и может включать несколько регионов.
Или, другими словами, на диаграмме на странице серые области являются частью виртуального адресного пространства (в этом случае оно определяется аппаратным обеспечением) или нет (в этом случае оно определяется программным обеспечением)? Гай Харрис ( разговор ) 18:03, 26 августа 2013 (UTC)
- Мне кажется, это комбинация. Архитектура определяет максимально возможный размер, а программное обеспечение решает, что на самом деле сделать доступным. «Будет» или «делает» более уместно. Питер Фласс ( разговор ) 15:39, 27 августа 2013 (UTC)
- Да, «аппаратно и ОС» - это «комбинация», так что вы говорите, что «аппаратно и ОС». Гай Харрис ( разговор ) 16:29, 27 августа 2013 (UTC)
- У вас может быть адресное пространство меньше, чем максимальный объем памяти, который может адресовать ЦП, или, как вы упомянули, в адресном пространстве могут быть дыры. Аппаратное обеспечение определяет максимум, а ОС может еще больше ограничить его. Другой вопрос - актуально ли понятие «адресное пространство» для сегментированных систем, таких как Multics? Еще один - существуют ли какие-либо системы, помимо SVS, которые используют единое общее адресное пространство для всех процессов? Питер Фласс ( разговор ) 19:07, 27 августа 2013 (UTC)
- "Существуют ли какие-либо системы, помимо SVS, которые используют единое общее адресное пространство для всех процессов?" Да . Гай Харрис ( разговор ) 19:52, 27 августа 2013 (UTC)
Ответ на беспрецедентный вопрос ОС: Нет. Виртуальная адресация не является концепцией ОС. Виртуальная адресация реализована аппаратно. Насколько мне известно, виртуальные адреса никогда не реализовывались в программном обеспечении, за исключением, возможно, исследовательского проекта. ОС полагается на процессор для обеспечения механизма. Короче говоря, у вас может быть VAX без VMS, но не VMS без VAX.
Виртуальное адресное пространство - это диапазон адресов, которые процессор может адресовать. Его не следует путать с пространством процесса, выделенным ОС, или службами памяти с подкачкой по запросу, которые предоставляет ОС. Например, в архитектуре i386 виртуальное адресное пространство составляет 2 32 , но в старой Windows ни одному процессу не было выделено более 2 31, поскольку 2 ГБ было зарезервировано для ОС.
Все ссылки в этой статье, относящиеся к файлам и виртуальной памяти, должны быть удалены. Некоторые совершенно неправы. (Лучшее, что можно сказать о ссылке на malloc, даже не является неправильным .) На его месте должно быть обсуждение трансляции адресов. Ср. эта страница из кальдеры и это обсуждение снизу вверх cs . Джклоуден ( разговор ) 23:18, 30 октября 2014 (UTC)
Пример
Даже в примере, относящемся к Windows, я не считаю, что ссылки на файл подкачки необходимы, чтобы выразить суть. Питер Фласс ( разговор ) 07:31, 28 августа 2013 (UTC)
- Ты прав. Вам не нужен файл подкачки для использования vas, который не сопоставлен с exes, dll и т. Д. И представление о том, что (в терминах Windows) VirtualAlloc'd vas «сопоставлен с файлом подкачки» неверно. (Существует такая вещь, как «раздел, поддерживаемый файлом подкачки», но, тем не менее, он на самом деле не «сопоставлен с файлом подкачки».) Во-первых, опять же, вам вообще не нужен файл подкачки для создания частного зафиксированного адресного пространства. (или даже разделы на основе файлов подкачки!). Такой vas поддерживается файлом подкачки, если он у вас есть, но сказать, что он сопоставлен с файлом подкачки, подразумевает, что существует определенная связь между страницами vas и местоположениями страниц в файле подкачки, которые настраиваются при создании региона, но это не тот случай. Такие отношения устанавливаются только тогда, когда что-то нужно записать в файл подкачки. Кроме того, вы получаете ошибку страницы при первом прикосновении как к приватным для процесса, так и к отображенным виртуальным страницам, точно так же, как если бы вы коснулись страницы, которая еще не определена. Просто в последнем случае PF не может быть решен, а в двух других может быть. Все это обсуждение нужно переписать. Дже ( разговор ) 18:00, 15 июля 2016 (UTC)
Переключатель / 3 ГБ и чипсеты на 4 ГБ
Несмотря на комментарий редактирования, который сопровождал это изменение , переключатель / 3GB и «наборы микросхем на 4 ГБ» напрямую не связаны друг с другом. Первый контролирует разделение виртуального адресного пространства между пользовательским режимом и режимом ядра, на процесс и в масштабе всей системы. Последнее связано с тем, сколько физической памяти может адресовать машина. Возможны и эффективны все четыре возможные комбинации «/ 3GB включить или выключить» и «4 ГБ чипсета или нет»; Расположение границы U / K в виртуальном адресном пространстве напрямую не связано с объемом имеющейся у вас оперативной памяти. Дже ( разговор ) 17:26, 15 июля 2016 (UTC)
Префиксы компьютерных блоков
@ Maggyero : В ответ на это изменение : обратите внимание, что Википедия обычно не использует двоичные префиксы (Gi, Mi и т. Д.) Для компьютерных устройств, см. WP: COMPUNITS . - intgr [обсуждение] 09:52, 21 августа 2017 г. (UTC)