Что такое поле "Выравнивание" в двоичных форматах? Зачем это нужно?
В формате файла ELF у нас есть поле выравнивания в Segment Header Table
ака Program Header Table
,
В случае формата файлов Windows PE они переходят на следующий уровень: разделы имеют два значения выравнивания: одно в файле диска, а другое в памяти. Заголовок файла PE определяет оба этих значения.
Я ничего не понял об этом раскладе. Для чего это нужно? Как и где это используется? Опять же, я не знаю, что такое выравнивание в контексте двоичного формата файла, но зачем нам это нужно?
1 ответ
Ну, выравнивание обычно растягивает объем памяти некоторого значения, чтобы занять некоторое "круглое" пространство, такое как 32, 64, 128 бит и т. Д.
Если мы говорим о двоичных форматах, это может быть сделано для оптимизации обработки форматов. Операции чтения / записи могут выполняться быстрее, когда вы читаете / записываете некоторые "круглые" части длины данных.
Я нашел для вас чтение, сформулированное в лучших словах, которые я могу придумать прямо сейчас:
Выравнивание структуры данных - это способ упорядочения и доступа к данным в памяти компьютера. Он состоит из двух отдельных, но связанных вопросов: выравнивание данных и заполнение структуры данных. Когда современный компьютер выполняет чтение или запись по адресу памяти, он делает это в виде кусочков (например, 4-байтовых кусков в 32-разрядной системе). Выравнивание данных означает размещение данных со смещением памяти, равным некоторому кратному размеру слова, что повышает производительность системы благодаря тому, как процессор обрабатывает память. Чтобы выровнять данные, может быть необходимо вставить несколько бессмысленных байтов между концом последней структуры данных и началом следующей, которая является заполнением структуры данных.