Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_os.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
626.79 Кб
Скачать

34. Технология dll. Структура dll-библиотеки. Наиболее важные dll-библиотеки.

DLL-библиотека состоит из нескольких специфических функций и произвольного набора функций, выполняющих ту работу, для которой разрабатывалась данная библиотека. DLL-библиотека может иметь (а может не иметь) сегмент данных и ресурсы.

В заголовке загрузочного модуля DLL-библиотеки описаны экспортируемые точки входа, соответствующие всем или некоторым определенным в ней функциям. Приложения могут вызывать только те функции DLL-библиотеки, которые экспортируются ею.

Состав DLL-библиотеки: До тех пор, пока ни одно приложение не затребовало функции из DLL-библиотеки, сама библиотека находится в файле на диске. В оперативной памяти ее нет. Однако, как только приложение затребует функцию из DLL-библиотеки или загрузит библиотеку явным образом, начнется процесс инициализации библиотеки. Этот процесс выполняется только один раз, так как в памяти может находится только одна копия DLL-библиотеки.

В процессе инициализации после загрузки библиотеки в память Windows вызывает функцию LibEntry, которая должна быть определена в каждой DLL-библиотеке. Можно считать, что функция LibEntry является точкой входа библиотеки, получающей управление при загрузке библиотеки в память. Задачей функции LibEntry является инициализация локальной области памяти, если она определена для DLL-библиотеки.

Функцию LibEntry не надо определять самостоятельно, так как при создании файла DLL-библиотеки редактор связей включит уже имеющийся в стандартной библиотеке модуль. Этот стандартный модуль выполняет всю необходимую работу по инициализации и затем вызывает функцию LibMain. Для нестандартной инициализации функцию LibEntry нужно разрабатывать самостоятельно.

35. Технология dll. Преимущества и недостатки dll. Win32 и dll

Динамические библиотеки DLL.

Одним из способов написания программ является описание всех возможных функций в тексте программы. В разных программах список функций может быть одинаковый, тем самым увеличивая повторяемость кода. Такой способ представляет собой статическую компоновку, однако в системе Windows существует другая технология, которая называется DLL (Dynamic Link Library). Суть заключается в следующем: часто повторяющиеся функции, вызовы переносятся в отдельный файл с расширением *.dll и далее данный файл загружается в оперативную память для того, чтобы использовать необходимые функции. Важной особенностью при создании DLL является подбор определённых функций, которые выносятся в DLL-файл. Работа программ в режиме пользователя тесно связана с взаимодействием интерфейсов WiinAPI и технологии DLL (можно сказать, что WinAPI построен на DLL). При этом некоторая работа мжет быть выполнена в режиме пользователя (особенности работы WinAPI, волокна). В DLL-библиотеках сосредоточены сами вызовы WinAPI.

38. Конфигурация виртуального адресного пространства для пользовательского

процесса в OC WINDOWS Vista.

Все пользовательские процессы в ОС Vista имеют своё виртуальное адресное пространство. Для 32-битной системы размер виртуального адресного пространства равен 4 гигабайтам. Два, из которых, отводятся для пользовательского режима, остальные два – для режима ядра. Для 64-битных систем виртуальные адреса могут быть как 32-битные (используются для совместимости) так и 64-битные. Также в таких системах 32-битные процессы могут получить 4 гигабайта (виртуальной) памяти.

Общая структура виртуального пространства 32-битной системы

Первые и последние 64 Кбайт виртуального адресного пространства не используются. Это делается для того, чтобы было проще отлавливать системные ошибки. Над 64 Кбайтами начинается область приватных данных и программ пользовательского процесса (данная область простирается до 2 Гбайт и является разной для разных процессов). Верхние 2 Гбайта – виртуальная память ядра. Она используется совместно всеми процессами, кроме таблиц страниц. Каждая виртуальная страница может находиться в одном из трёх состояний:

  1. Недействительная страница (ссылка на такую страницу приводит к страничному прерыванию и нарушению доступа, т.е. такой страницы еще нет, она еще не загружена).

  2. Зафиксированная страница (данное состояние возникает после того как на неё отображаются код или данные).

  3. Зарезервированная страница (эта недействительная страница, но эти страница никогда не будут назначаться диспетчером памяти для других целей. Это используется для предотвращения излишнего роста из стека страниц).

Для поддержки виртуальной памяти используется механизм подкачки. Соответственно место на жестком диске - файл подкачки.

Windows использует следующую стратегию для выделения дискового пространства под страницы: зафиксированным страницам не выделяется место в файле подкачки до того момента когда их необходимо вытеснить в файл подкачки. Для тех страниц, которые никогда не вытесняются, дисковое пространство не выделяется.

Если суммарная виртуальная память меньше чем имеющаяся физическая, то файл подкачки не используется.

Для повышения производительности системы во время подкачки используются следующие механизмы:

страницы, которые подлежат вытеснению, группируются и затем сбрасываются на жёсткий диск большими частями за одну операцию ввода\вывода, при этом в файле подкачки выделяется сплошная часть дисковой памяти (Windows может поддерживать до 16 файлов подкачки, которые распределены по нескольким дискам, они имеют минимальный и максимальный размер); размер страницы чаще всего равен 4 Кбайта, однако в некоторых случаях 4 Мбайта;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]