Организованы в виде иерархического дерева. Информация о ресурсах содержится в секции .rsrc. Организация ресурсов имеет следующую структуру.
.
.
.
Для каждого типа ресурса содержатся подкаталоги первого уровня, или структура data, которая содержит указатель на конкретное описание ресурса.
Компоновщик, создавая ехе файл предполагает, где в памяти будет создаваться РЕ файл в соответствии с предполагаемыми адресами ячеек в которых создаются данные, адреса переходов. Если файл загружен куда-либо в другое место в ВАП, то адреса, представляемые компоновщиком будут неверны.
Информация, хранящаяся в секции базовых поправок хранится в .reloc, позволяет загрузчику РЕ файла исправить адреса в загруженном модуле. Если же загрузчику удаётся загрузить файл по предполагаемому базовому адресу, то информация в секции .reloc игнорируется. Базовые поправки представляют собой перечень тех мест в программе, в котором нужно добавить требуемую величину дельта отображения.
D=реальный адрес – базовый адрес.
Таблица базовых Данные Файл, загружать
поправок отображения 600000
+D
+D
+D
Реально в таблице базовых поправок формируются блоки различной длины, каждый блок включает базовые поправки для одной 4 Кб страницы. Каждый блок начинается со стартового RVA для этой страницы. Смещение каждой поправки добавляется к этой величине.
?Зачем это надо? Для экономии места.
Файловая система – это часть ОС назначение которой состоит в том, чтобы обеспечить пользователю удобный интерфейс для работы с данными, хранящимися на диске и обеспечить совместное использование файлов несколькими пользователями и процессами. Понятие файловой системы включает:
1) Совокупность всех файлов на диске.
2) Набор структур данных, используемых для управления файлами (каталоги, таблицы распределения свободного и занятого пространства).
3) Комплекс системных программных средств, реализующих управление файлами (создание, удаление, копирование, перенос и тому подобное).
Сектор – аппаратно адресуемые блоки носителя. Размер сектора в системах х86 – 512 байт.
Кластеры – адресуемые блоки, представляющие собой единицу выделения памяти для файла. Размер кластера всегда кратен размеру сектора. Кластер представляет собой цепочку смежных секторов. Кластеры предназначены для более эффективного управления дисковым пространством, то есть разбие диска на кластеры позволяет более эффективно управлять диском.
Использование кластеров большого размера ведёт к неэффективному использованию дискового пространства или внутренней фрагментации.
Внутренняя фрагментация бывает за счёт того, что размер файла редко кратен размеру кластера.