Каковы различные области памяти и диска? - PullRequest
2 голосов
/ 18 января 2010

Я не уверен, правильно ли это спрашивать, и не уверен, как поставить мой запрос.

Позвольте мне выразиться так:

  • Основная память, начиная с 0x00000 до 0xFFFFF.
  • Дисковое пространство, начинающееся с 0x00000000 до 0xFFFFFFFF.

Но то, к чему мы сможем получить доступ, не будет с 0-го байта до последнего байта, верно? На Hardisk я думаю, на 0-м байте у нас есть MBR. & где-то у нас есть файловая система (мы можем получить доступ только к этому). Что еще?

Аналогично с основной памятью. У нас есть немного памяти ядра и пользовательской памяти (в которой каждый процесс живет). Что еще?

Мой вопрос: что такое все регионы от 0-го байта до последнего байта? Я не знаю, что искать или где найти такую ​​информацию? Если кто-то может опубликовать несколько ссылок, это было бы здорово.

EDIT:

Я использую x86 32Bit в Windows. На самом деле я читал книгу о компьютерной безопасности, где автор упоминает, что вредоносное ПО может находиться на диске или в памяти (что очень верно). Но когда мы говорим, что компьютер заражен, это не означает, что заражены только файлы (которые являются частью файловой системы). Есть и другие области, которые не предназначены для пользователя, такие как MBR. или память ядра.

Итак, вопрос возник у меня в голове. Что это за области, о которых я могу не знать?

Ответы [ 2 ]

1 голос
/ 18 января 2010

Помимо того, что ответ на этот вопрос сильно зависит от ОС, дисковое пространство вовсе не является частью основной памяти. В архитектурах Intel для доступа к диску требуется некоторое адресное пространство ввода-вывода (которое отличается от адреса памяти) на канал. И точное количество слов зависит от того, какой канал: IDE / ATA / SATA / SCSI. На других архитектурах, которые отображают память как, например, доступ к диску PowerPC, требуется некоторое адресное пространство памяти, но все же не так много.

Чтобы проиллюстрировать (и имейте в виду, что это очень упрощенный пример, а не реальный мир), предположим, что ЦП с отображением памяти *, как PowerPC, пытается получить доступ к диску с LBA-адресацией. Диск действительно требует от 2 до 3 слов памяти для хранения нескольких гигабайт данных. То есть нам нужно только 12 байтов для хранения и извлечения гигабайт данных:

  • 2 слова (8 байт), чтобы указать диску, куда искать, то есть по какому адресу мы хотим прочитать форму или записать.
  • 1 слово (4 байта) для чтения и записи. Каждый раз, когда вы читаете по этому адресу, указатель из 2 слов автоматически увеличивается на 1 символ (или 4, если вы читаете в 32 битах).

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

А каковы адреса этих областей памяти? Ну, это зависит от того, о каком канале ввода / вывода вы говорите. Старая школа ISA-шины зависит от пользователя, устанавливающего перемычки на картах для установки адресов. Так что для тех, кто должен спросить пользователя. Шина PCI автоматически согласовывает адреса с контроллерами дисков во время загрузки, а затем, в зависимости от архитектуры, либо сообщает вашему BIOS, какие устройства существуют, либо передает их в качестве параметров загрузчику, либо сохраняет их в некоторых временных регистрах на системной шине. USB работает как PCI, но согласовывается с ОС вместо BIOS ... и т. Д.

Как видите, на этот вопрос нет простого ответа, даже если вы ограничите его только конкретными случаями, такими как Windows7, работающая на 64-битном процессоре AMD, работающем на материнских платах Dell.

* примечание: поскольку вы беспокоитесь о местах памяти.

0 голосов
/ 18 января 2010

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

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

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

...