34. Адресное пространство процессора
Адресное пространство микропроцессора – общее количество адресов, выделяемых для обозначения внутренних регистров и устройств хранения данных, а также регистров внешних устройств, к которым относятся элементы памяти и ввода/вывода. Этот показатель рассчитывается на основании разрядности адресной шины, физически поддерживаемой микропроцессором. Например, модель КР580ВМ80А является обладателем пропускной способности в шестнадцать разрядов, что соответствует 216 ячейкам памяти.
Чтобы допустить одновременное размещение в памяти нескольких приложений без создания взаимных помех, нужно решить две проблемы, относящиеся к защите и перемещению. Примитивное решение первой из этих проблем мы уже рассматривали на примере IBM 360: участки памяти помечались защитным ключом, и ключ выполняемого процесса сличался с ключом каждого выбранного слова памяти. Но этот подход не решал второй проблемы, хотя она могла быть решена путем перемещения программ в процессе их загрузки, но это было слишком медленным и сложным решением.
Более подходящее решение — придумать для памяти новую абстракцию: адресное пространство. Так же как понятие процесса создает своеобразный абстрактный центральный процессор для запуска программ, понятие адресного пространства создает своеобразную абстрактную память, в которой существуют программы. Адресное пространство — это набор адресов, который может быть использован процессом для обращения к памяти. У каждого процесса имеется свое собственное адресное пространство, независимое от того адресного пространства, которое принадлежит другим процессам (за исключением тех особых обстоятельств, при которых процессам требуется совместное использование их адресных пространств).
Понятие адресного пространства имеет весьма универсальный характер и появляется во множестве контекстов. Возьмем телефонные номера. В США и многих других странах местный телефонный номер состоит обычно из семизначного номера. Поэтому адресное пространство телефонных номеров простирается от 0000000 до 9999999, хотя некоторые номера, к примеру, те, что начинаются с 000, не используются.
С ростом количества сотовых телефонов, модемов и факсов это пространство стало слишком тесным, а в этом случае необходимо использовать больше цифр. Адресное пространство портов ввода-вывода процессора Pentium простирается от 0 до 16 383. Протокол IPv4 обращается к 32-разрядным номерам, поэтому его адресное пространство простирается от 0 до 232 — 1 (опять-таки с некоторым количеством зарезервированных номеров).Адресное пространство не обязательно должно быть числовым. Набор интернет-доменов .com также является адресным пространством. Это адресное пространство состоит из всех строк длиной от 2 до 63 символов, которые могут быть составлены из букв, цифр и дефисов, за которыми следует название домена — .com. Теперь вам должна стать понятной сама идея, в которой нет ничего сложного.
Немного сложнее понять, как каждой программе можно выделить свое собственное адресное пространство, поскольку адрес 28 в одной программе означает иное физическое место, чем адрес 28 в другой программе. Далее мы рассмотрим простой способ, который ранее был распространен, но вышел из употребления с появлением возможностей размещения на современных центральных процессорах более сложных (и более совершенных) схем.
Системное программирование
Предыдущий раздел | Оглавление | Следующий раздел |
Для одновременного размещения в памяти нескольких программ и для избегания ситуаций возникновения взаимных помех необходимо решить задачи по защите и перемещению.
Самым подходящим решением оказалась абстракция адресного пространства. Аналогично тому как абстракция процесса создает для своего запуска и выполнения виртуальный процессор, абстракция адресного пространства создает некую абстрактную память для существующих в системе приложений. Адресное пространство представляется в виде набора адресов, используемых процессом для обращения к ресурсу памяти. Каждый процесс имеет собственное адресное пространство, которое не зависит от адресных пространств других процессов, кроме случаев, когда процессам необходимо совместно использовать свои адресные пространства.
Чтобы понять, как реализовано адресное пространство, то есть как достигается соответствие адресов в памяти, выделяемых для приложений, и физической памяти, для начала рассмотрим самое простое решение, называемое динамическим перераспределением памяти. Адресное пространство процесса в данном решении проецируется на различные части физической памяти. Центральный процессор получает два специальных аппаратных регистра, называемых
Если выполняющийся процесс обращается к памяти для извлечения команды или записи некоторых данных, центральный процессор прибавляет к полученному от процесса адресу значение из базового регистра, а затем выставляет результат на шину памяти. Также центральный процессор сравнивает полученный адрес со значением ограничительного регистра. В случае превышения данного значения будет сгенерирован отказ и доступ к памяти будет прерван.
Таким образом, использование специальных регистров центрального процессора является достаточно простым способом предоставления собственного адресного пространства каждому отдельному процессу, так как перед обращением к физической памяти всего лишь необходимо выполнить операцию сложения значения адреса, сгенерированного процессом, и значения базового регистра. Операционная система также может выполнять защиту базового и ограничительного регистров. При такой защите значения специальных регистров может изменить только сама система.
Необходимость использования операций сложения и сравнения при каждом обращении процесса к физической памяти является главным недостатком применения специальных регистров. Если операция сравнения может выполняться достаточно быстро, то операция сложения выполняется слишком медленно, так как вспомогательный сигнал переноса требует дополнительных затрат времени.
Предыдущий раздел | Оглавление | Следующий раздел |
- Стиль 1
- Стиль 2
Что такое адресное пространство?
ХранилищеК
- Эндрю Золя
Адресное пространство — это объем памяти, выделенный для всех возможных адресов вычислительного объекта, например устройства, файла, сервера или сетевого компьютера. Система предоставляет каждому устройству и процессу адресное пространство, которое содержит определенную часть адресного пространства процессора. Это могут быть как физические, так и виртуальные адреса, доступные процессору или зарезервированные для конкретного процесса.
Ширина адресной шины и регистров часто ограничивает адресное пространство процессора. Однако метод управления памятью, называемый виртуальной памятью , может увеличить размер адресного пространства до размера, превышающего размер физической памяти.
Адресное пространство классифицируется как плоское или сегментированное. Плоские адресные пространства представлены последовательно увеличивающимися целыми числами, начиная с нуля. Независимые сегменты, дополненные смещениями или значениями, добавленными для создания вторичных адресов, представляют собой сегментированные адреса.
В некоторых системах адресное пространство может быть преобразовано из одного формата в другой с помощью процесса преобразования — низкоуровневого машинного кода, используемого для развертывания деталей программной системы.
Вот несколько примеров адресных пространств.
Виртуальное адресное пространство
Двоичное число в виртуальной памяти, которое позволяет процессам использовать расположение в основной памяти, является виртуальным адресом. Это позволяет использовать основную память независимо от других процессов и поддерживает использование большего пространства, чем есть на самом деле. Он работает путем переноса некоторого контента на жесткий диск или внутреннюю флэш-память.
Логическое адресное пространство
Логическое адресное пространство — это набор логических адресов, генерируемых компьютером для определенной программы. Группа физических адресов, сопоставленных с соответствующими логическими адресами, называется физическим адресным пространством.
На этой диаграмме показан процесс назначения адресов виртуальной и физической памяти (ОЗУ).IPv4-IPv6
Что касается пространства IP-адресов, возникли опасения, что 32-разрядного адресного пространства IP версии 4 (IPv4) будет недостаточно для поддержки огромного роста Интернета. Итак, IPv6 был разработан с его 128-битным адресным пространством.
Подсети адресного пространства IPv6
Основной целью разделения адресного пространства IPv6 на подсети является повышение эффективности распределения адресов путем разделения сегмента сетевого адресного пространства на подсети. Разделение обширной сети на более мелкие группы взаимосвязанных сетей снижает трафик, что помогает увеличить скорость сети, поскольку трафику не нужно проходить по ненужным маршрутам. Маска подсети разделяет сетевую часть IP-адреса и диапазон адресов узла с компьютером.
Рандомизация макета адресного пространства
Рандомизация структуры адресного пространства — это механизм безопасности памяти, используемый для предотвращения возможного использования уязвимостей, связанных с повреждением памяти. Добавление случайности в адресное пространство виртуальной памяти процесса затрудняет использование уязвимостей.
Адресное пространство в Microsoft Azure
Адресное пространство виртуальной сети в Microsoft Azure состоит из одного или нескольких адресов, которые не перекрываются. Нотации бесклассовой междоменной маршрутизации определяют эти диапазоны адресов и определяют их как общедоступные или частные. При создании виртуальной сети настраиваемое пространство частных IP-адресов указывается с использованием как общедоступных, так и частных адресов. Затем Azure назначает ресурсы, включая частный IP-адрес, из адресного пространства, заданного вами в виртуальной сети.
Адресное пространство и объем памятиИспользуемые программистами адреса называются виртуальными адресами . Набор этих виртуальных адресов называется адресным пространством .
Место, где адрес был сохранен в основной памяти, известно как местоположение . Группа местоположений называется пространством памяти .
Преобразование адресного пространстваПреобразование адресного пространства описывает процесс объединения номера кадра со смещенной частью логического адреса. Такой подход помогает сформировать физический адрес.
Базовый регистр таблицы страниц содержит базовый адрес таблицы страниц текущего процесса. По сути, это регистр процессора, которым управляет операционная система.
Изучите IP-подсети и как заставить вычислительную память работать в ваших приложениях . Также см. разницу между статическими и динамическими IP-адресами и MAC-адресами и IP-адресами .
Последнее обновление: декабрь 2021 г.
Продолжить чтение Об адресном пространстве- Стратегии управления памятью повышают производительность ВМ
- Что означает IP-адрес 0. 0.0.0 и почему он используется?
- Что нужно знать о системах управления IP-адресами?
- Зачем переходить на полностью IP IoT
- Как рассчитать маску подсети из хостов и подсетей
DHCP (протокол динамической конфигурации хоста)
Автор: Александр Гиллис
таблица маршрутизации
Автор: Кинза Ясар
CIDR (бесклассовая междоменная маршрутизация или суперсеть)
Автор: Джон Берк
IPv4 и IPv6: в чем разница?
Автор: Эндрю Фрелих
Аварийное восстановление
- Как обеспечить непрерывность сети в стратегии аварийного восстановления
Катастрофа приходит не только в виде пожара, наводнения и программ-вымогателей. Потеря непрерывности сети является реальной проблемой и должна быть …
- Предотвращайте различные типы сетевых атак с помощью планирования аварийного восстановления
Команды аварийного восстановления и ИТ-безопасности должны защищать сеть по нескольким направлениям, чтобы защитить данные от потенциальных злоумышленников. А…
- 11:11 Портфель DR растет после покупки Sungard
После семи приобретений за два года, в том числе частей Sungard AS, которым уже несколько десятков лет, 11:11 Systems стремится взять на себя …
Резервное копирование данных
- Новейшая платформа Asigra предназначена для резервного копирования SaaS для MSP
Готовящаяся к выпуску платформа Asigra SaaSBackup позволяет технологии защиты данных Asigra защищать резервные копии SaaS. MSP смогут продавать …
- BackupLabs разрабатывает резервное копирование SaaS для недостаточно защищенных приложений
Новый специалист по резервному копированию SaaS появляется из скрытности для защиты данных в таких приложениях, как Trello, GitHub и GitLab, генеральный директор Роб . ..
- CloudCasa планирует отделиться от Catalogic как независимая компания
Растущее число корпоративных пользователей Kubernetes предоставляет возможность CloudCasa, в настоящее время являющемуся подразделением Catalogic, с …
Дата-центр
- Используйте Cockpit для удаленного администрирования сервера Linux
Администраторы Linux могут использовать Cockpit для просмотра журналов Linux, мониторинга производительности сервера и управления пользователями. Используйте инструмент, чтобы помочь администраторам управлять …
- Учебник по гипермасштабируемым центрам обработки данных
Гипермасштабные центры обработки данных могут содержать тысячи серверов и обрабатывать гораздо больше данных, чем предприятие. Однако они могут…
- Узнайте, кто строит инфраструктуру 5G
Организациям, которые строят центры обработки данных 5G, может потребоваться обновить свою инфраструктуру. Эти провайдеры 5G предлагают такие продукты, как виртуальные…
Подробное понимание адресного пространства
процесс-внедрение
Интервал адресов используется во всех операционных системах для управления памятью процессов. Виртуальный адресный интервал открыл двери для дополнительных функций, таких как подкачка и простое перемещение инструкций и данных для предотвращения подделки адреса.
Гуркират Сингх
• 5 минут чтения
Привет, мир! Сегодня я проведу вас через очень важную концепцию адресного пространства, которая поможет вам понять, как ваша программа загружается в память для выполнения с использованием PE-файла, но эта концепция аналогична всем другим операционным системам и исполняемым файлам.
Давайте сначала разберемся с некоторыми терминами, которые я буду использовать в посте
- Загрузчик — это программа в операционной системе, которая принимает PE-файл или DLL-файл в качестве входных данных и загружает его в память для выполнения.
- Файл изображения — файл, созданный компилятором и используемый загрузчиком для выполнения, называется файлом изображения. Как правило, его также называют программным файлом, но поскольку это образ процесса или программы, который можно загружать несколько раз, в настоящее время он называется файлом образа
- 9.0244 Процесс — Экземпляр файла изображения , который выполняется после загрузки загрузчиком
- Память — Большой кусок ОЗУ, куда загружается процесс . ЦП часто загружается и записывает в это место, чтобы обновить состояние процесса (так называемые переменные)
Что такое адресное пространство?
Когда файл изображения загружается в память, он выполняет множество задач, связанных с памятью, таких как вызов функций, обработка данных в локальных или глобальных переменных и так далее. Знать адрес этих символов необходимо при выполнении операций, потому что значения не всегда сохраняются в регистрах ЦП. Таким образом, процессу назначается диапазон адресов в памяти, где он может выполнять все операции чтения/записи или арифметические операции, это называется адресным пространством процесса.
Традиционно в 8-битных компьютерах или в настоящее время в случае микропроцессоров (например, для Arduino), когда одному процессору разрешено иметь только один запущенный процесс, это было легко, поскольку процесс мог получить фиксированный набор адресов, где все данные были заполнены. Чтобы облегчить задачу разработчикам, предполагается, что в системе работает только один процесс.
Рис. 1: Абстрактная интуиция загрузки процесса в память. (Слева: ОЗУ. Справа: Процесс)Теперь в случае нескольких программ требуется, чтобы две программы не перезаписывали адресное пространство друг друга, потому что это приведет к повреждению памяти, и программы не будут давать ожидаемый результат.
Существует также проблема, обсуждаемая в приведенном ниже видео «Фрагментация памяти». Это похоже на фрагментацию диска, когда меньшие фрагменты памяти остаются без присмотра, потому что определенная программа не может поместиться на них, и в конечном итоге системе не хватает памяти. Ведь загрузчик продолжает загружать содержимое в другое адресное пространство.
Объяснение адресного интервала Если вам интересно, где именно находится загрузчик процессов Windows? Что ж, это часть внутреннего устройства Windows, доступ к которому предоставляется набором API, определенных в 9.0287 kernel32.dll и ntdll.dll
. Для получения дополнительной информации вы можете обратиться к этому ответу на StackExchange.
Зачем использовать виртуальный адрес?
Все проблемы, которые вы видели в предыдущей теме, связанные с фрагментацией или перезаписью памяти, и та, которую я пропустил, а именно «с чего начать выполнение», все эти проблемы решаются режимом виртуальной адресации.
Теперь, прежде чем перейти к этой теме, позвольте мне объяснить вам, что такое « с чего начать выполнение «. В случае многопроцессорной архитектуры операционной системы после загрузки файла изображения в память управление процессом передается ЦП из точки входа изображения. Это известно как ImageBase , Поскольку адрес процесса постоянно меняется, трудно понять, где находится эта точка входа. предполагается, что текущий процесс является единственным процессом. В этом случае приложение не взаимодействует напрямую с физической памятью, а имеет транслятор, который сопоставляет память приложения с физической памятью. Например, если значение хранится в 0x40001
адрес приложения, может храниться в 0x7f46b1bbc1f0
физической памяти. Адресное пространство, которое вы видите в отладчике, это виртуальные адреса (относительно отладчика)
Эта физическая память теперь может быть либо ОЗУ, либо жестким диском. Эта информация известна только ядру и транслятору адресов ( MMU или Memory Management Unit ). {32} \) байт (4,0 ГБ с 1024 в качестве базы и приблизительно 4,29).ГБ с последними 1000 в качестве базы). В случае 64-разрядной версии он будет иметь огромный диапазон 18446,744 петтабайт.
Управление индексом каждой виртуальной машины с физическим адресом и для каждого процесса кажется нереальным и требует дополнительного места. Чтобы решить эту проблему, виртуальная машина делится поровну на 4096 байт (4 КБ) пространства, известного как страница . Точно так же кадр страницы является наименьшим непрерывным блоком фиксированной длины физической памяти , в который страницы памяти отображаются операционной системой. Когда наименее часто используемые страницы сохраняются на жестком диске или извлекаются с него при необходимости, этот процесс называется 9.0244 пейджинг или подкачка
Рис. 2: Преобразование памяти страниц с ОЗУ и жестким диском. Изображение взято с https://www.cs.uic.edu/ Значение по умолчанию ImageBase в VA процесса: 0x400000
для 32-битных изображений или 0x140000000
для 64-битных изображений.