58. Проецируемые в память файлы
Как и виртуальная память, проецируемые файлы позволяют резервировать регион адресного пространства и передавать ему физическую память. Различие между этими механизмами состоит в том, что в последнем случае физическая память не выделяется из страничного файла, а берется из файла, уже находящегося на диске. Как только файл спроеци рован в память, к нему можно обращаться так, будто он целиком в нее загружен.
Проецируемые файлы применяются для:
• загрузки и выполнения ЕХЕ и DLL файлов. Это позволяет существенно экономить как на размере страничного файла, так и на времени, необходимом для подготовки приложения к выполнению;
• доступа к файлу данных, размещенному на диске. Это позволяет обойтись без операций файлового ввода/вывода и буферизации его содержимого;
• разделения данных между несколькими процессами, выполняемыми на одной машине.
1. Отыскивает ЕХЕ-файл, указанный при вызове CreateProcess. Если файл не найден, новый процесс не создается, а функция возвращает NULL.
2. Создает новый объект ядра “процесс”.
3. Создает адресное пространство нового процесса (размером 4 Гб).
Резервирует регион адресного пространства — такой, чтобы в него поместился заданный ЕХЕ-файл. Желательное расположение этого региона указывается внутри самого ЕХЕ-файла. По умолчанию базовый адрес ЕХЕ-файла — 0x00400000.
Отмечает, что физическая память, увязанная с зарезервированным регионом, — ЕХЕ-файл на диске, а не страничный файл.
Спроецировав ЕХЕ-файл на адресное пространство процесса, система обращается к разделу ЕХЕ-файла со списком DLL-модулей, содержащих необходимые программе функции. После этого система поочередно загружает DLL-модули. Всякий раз, когда для загрузки DLL вызывается LoadLibrary, система выполняет действия, аналогичные описанным выше в пп. 4 и 5:
1. Резервирует регион адресного пространства — такой, чтобы в него мог поместиться заданный DLL-файл. Желательное расположение этого региона указывается внутри самого DLL-файла. По умолчанию DLL-модулям присваивается базовый адрес 0x10000000.
2. Если зарезервировать регион по желательному для DLL базовому адресу не удается (либо он слишком мал, либо занят каким-то еще ЕХЕ- или DLL-файлом), система пытается найти другой регион. Но такая ситуация весьма неприятна. Во-первых, если в DLL нет настроечной информации, загрузка может вообще не получиться. Во-вторых, системе приходится выполнять модификацию адресов (relocation) внутри DLL. В Windows 95 эта операция осуществляется по мере подкачки страниц в оперативную память. Но в Windows NT на это уходит дополнительная физическая память, выделяемая из страничного файла, да и загрузка такого DLL-модуля займет больше времени.
3. Отмечает, что физическая память, связанная с зарезервированным регионом, — DLL-файл на диске, а не страничный файл. Если Windows NT пришлось выполнять модификацию адресов из-за того, что DLL не удалось загрузить по желательному базовому адресу, она запоминает, что часть физической памяти для DLL связана со страничным файлом.
После увязки ЕХЕ- и DLL-файлов с адресным пространством процесса начинает исполняться стартовый код ЕХЕ-файла
- 2. Теневая память
- 6.Недостатки ms-dos и пути их преодоления
- 7.Структура conventional памяти
- 9. Обработчики 09h и 16h клавиатуры
- 10. Extended память
- Expanded память
- Upper память
- 14.Структура данных на магнитных дисках
- 15. Клавиатура. Scan-код
- 16. Распределение памяти в реальном режиме
- Адресация озу при использовании сегментации в защищённом режиме
- 19. Hma память
- Механизм страничной адресации
- 23.Тест клавиатуры
- 24. Прерывания bios
- Преобразование логического адреса в физический при включённой страничной адресации
- 26. Исключения и их обработка
- 27. Управление клавиатурой
- 28. Приоритет обработки прерываний
- Привилегии и защита программ
- 30.Механизм виртуальной памяти
- 31.Дескрипторы сегментных регистров
- 32.Кэш память
- 33.Таблицы локальных и глобальных дескрипторов
- 34.Cga, vga адаптеры
- Характеристики vga адаптеров
- 35.Таблица дескрипторов idt
- 37.Шлюзы и их применение
- 38.Понятие дескриптора
- 39. Адаптер дисплея
- 40.Функции dos и bios для клавиатуры
- 41 Пять компонентов защиты
- 42.Виртуальный 8086
- 43.Классы приоритетов
- 44.Многозадачный режим. Статические и динамические наборы
- 45.Шлюз задач
- 46. Библиотеки dll
- Явная компоновка
- 47.Виртуальная память процессора
- 48.Адресное пространство w9х
- 49.Адресное пространство nt
- 51. Файл подкачки страниц
- 52. Два процесса – один ехе файл.
- 53. Физическая память и страничный файл
- Физическая память в страничном файле не хранится
- 54. Алгоритм загрузки программ
- 56. Переданная и зарезервированная память
- 57.Разделы ехе файла
- 58. Проецируемые в память файлы
- 59.Механизмы работы с файлами больших размеров
- 60. Различия в обработке прерываний и исключений