3

Этот вопрос касается аппаратного обеспечения больше, чем программного обеспечения. В основном, ссылаясь на эту статью о картах памяти, он говорит, что:

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

Источник: http://en.wikipedia.org/wiki/Memory_map

В отношении этого самого первого предложения существует крайняя двусмысленность. Прежде всего, как ОЗУ может знать, как распределить память для адресного пространства ЦП, если назначение ОЗУ зависит от системы?

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

В-третьих, в статье утверждается, что карта памяти передается в прошивку для ОС. Это имеет смысл только в том случае, если оперативная память имеет аппаратную проводку или карта синхронизирована с адресным пространством ЦП.

По сути, я на 100% невежественен и потерян на этом. Я никак не понимаю, как это понятно. RAM не может отображать адреса для системы, если она не знает структуры системы.

5 ответов5

4

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

Источник: http://en.wikipedia.org/wiki/Memory_map

В отношении этого самого первого предложения существует крайняя двусмысленность. Прежде всего, как ОЗУ может знать, как распределить память для адресного пространства ЦП, если назначение ОЗУ зависит от системы?

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

Переходя к современным компьютерным системам ...

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

В-третьих, в статье утверждается, что карта памяти передается в прошивку для ОС. Это имеет смысл только в том случае, если оперативная память имеет аппаратную проводку или карта синхронизирована с адресным пространством ЦП.

Именно - именно поэтому ОЗУ само обеспечивает обнаружение последовательного присутствия (SPD), поэтому BIOS/UEFI может определить, какое ОЗУ находится в вашей системе (и изменилось ли оно с момента последнего запуска компьютера!).

Кроме того, модули управления памятью x86 поставляются с поддержкой виртуальной памяти, предназначенной для использования с операционными системами. Сам MMU соединяет аппаратную схему ОЗУ Physica (которая представляет собой просто большое количество линий данных / адресов, подключенных ко всем модулям DIMM на материнской плате), так что это отвлечено от самого ЦП (даже если MMU и ЦП находятся на одни и те же умирают, они логически две разные "единицы").

RAM не может отображать адреса для системы, если она не знает структуры системы.

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

2

В статье говорится

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

И тогда это говорит

BIOS BIOS предоставляет набор подпрограмм, которые могут использоваться операционной системой для получения структуры памяти. Вот некоторые из доступных процедур: BIOS Function: INT 0x15, AX=0xE801 Этот вызов прерывания BIOS используется работающей ОС для получения размера памяти для конфигураций 64 МБ +

Чтобы ответить на ваш первый вопрос тогда. В статье ничего не говорится о адресном пространстве процессора, и даже нелегко найти этот термин в Интернете! потому что процессоры имеют некоторые регистры (места в памяти процессора), но не похожи на большое пространство, которому нужна карта или какой-то индекс для поиска вещей! И термин CPU даже не встречается нигде в той статье, на которую вы ссылаетесь. В статье говорится, что RAM получает информацию из других мест системы, а не из RAM. Он получает его из BIOS (BIOS использует память CMOS ... которая является памятью с батареей для ее питания ... и настраивается в настройках BIOS вручную ..., но может найти некоторые вещи автоматически). И, возможно, карта памяти имеет гибкий аспект, и в нее загружаются новые вещи. Но RAM запускается без карты памяти.

Это отвечает на ваш второй вопрос.

И в третьем вопросе вы ошиблись, в статье не говорится, что карта памяти передается в прошивку - НЕТ !! Это говорит об обратном. In the boot process, a memory map is passed on from the firmware (прошивка не RAM, прошивка RAM отсутствует).

Основной программой BIOS будет прошивка. Но он может хранить данные, которые могут быть изменены.

И как дополнительное примечание, есть нечто, называемое SPD .. которое ОЗУ DDR использует для отправки данных в BIOS по запросу (как упомянуто в этой довольно продвинутой статье)http://www.simmtester.com/page/news/showpubnews. asp?num = 153 SPD упоминается в BIOS. Я настроил BIOS в системе, в которой было указано, что нужно получать данные ОЗУ от SPD, или вводить их вручную. (чтобы можно было разогнать оперативную память). Конечно, нет карты памяти ... просто что-то базовое, например, скорость, с которой он предназначен, и другие вещи, которые получает SPD, о которых упоминается в этой статье. Другие вещи в BIOS вводятся вручную.

И для просмотра или карты памяти

0

Действительно старые компьютеры Apple II имели как минимум 4 КБ ОЗУ и DIP-переключатели, чтобы установить, если было добавлено больше. Во время запуска положение переключателей считывается и карта памяти настраивается соответственно. Первые системы IBM PC также имели DIP-переключатели и минимум 64 КБ ОЗУ. Карта памяти указала, где в памяти находились различные элементы, такие как содержимое дисплея, дисковые буферы и т.д., И какие диапазоны адресов имеют оперативную память.

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

Современные системы выполняют гораздо больше автоматической настройки (без DIP-переключателей), используя такие элементы, как микросхемы SPD на модулях ОЗУ, чтобы определить его размер и расположение, но основы остаются теми же. Некоторое минимальное количество памяти должно быть в известном месте.

0

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

0

Здесь определенно происходит некоторая путаница, в основном из-за того, что статья пытается упаковать различные, но связанные вещи в одно место.

Существует два основных типа «карты памяти», которые являются совершенно разными вещами, используя одно и то же имя.

  • Макет памяти

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

    Эта карта обычно не существует каким-либо ощутимым образом в аппаратном обеспечении, это скорее диаграмма салфетки или белой доски, которую разработчики придумывают и реализуют в аппаратном / программном обеспечении с использованием массивов и индексов.

  • Выделение памяти

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

    Поскольку память фрагментирована, ОС не может просто раздать кусок памяти любого запрошенного размера каждой программе, которая приходит вместе. Там будут свободные блоки разных размеров, окруженные использованными блоками. Чтобы узнать, насколько велик каждый свободный блок, диспетчер памяти будет хранить «карту» памяти, которую он помечает как используемую или свободную, всякий раз, когда он выделяет или освобождает память для программ. Эта карта похожа на карту диска (рисунок 1), и вы даже можете увидеть ее с помощью таких инструментов, как VMMap (рисунок 2). (Конкретный макет, используемый в визуализации, может отличаться, например, большинство карт дисков будут показывать диск как двухмерный, в то время как большинство инструментов памяти будет показывать память как одномерный, но это всего лишь выбор дизайна.)

    Эта карта размещения является буквальной картой, которая на самом деле является массивом, который хранится в памяти.

  • (Отображение памяти)

    (Когда речь идет о BIOS и оборудовании, существует также термин « отображение памяти», который относится к отображению частей аппаратных устройств в память, так что вы можете читать и записывать на устройство, просто читая и записывая адреса памяти точно так же, как вы будет иметь доступ к нормальной памяти. Тем не менее, это еще более различное использование термина, и, таким образом, добавляет путаницу. В этом контексте «карта» означает не макет, а скорее математическое отображение, в котором одной вещи назначается аналог / псевдоним другой.)


Рисунок 1: Карта диска Вопта

Рисунок 2: VMMap

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .