Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsii_OS_chast_2.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.55 Mб
Скачать

Обмен данными через проекцию файлов в память.

Применение файлов, спроецированных в память для обмена данными между процессами, основывается на том, что объект типа «проекция файла» после своего создания оказывается доступным для всех процессов, выполняемых в системе.

Если требуется передать данные из одного процесса в другой, то в одном из процессов создается объект типа «проекция файла». При этом сам файл должен быть создан или открыт. Доступ к уже созданной проекции со стороны любого клиента включает два действия:

  1. Открытие имеющейся проекции с помощью функции OpenFileMapping;

  2. Отображение открытой проекции на ВАП клиента с помощью MapViewOfFile;

Для того, чтобы объект типа «проекция файла» мог использоваться в любом клиенте, ему присваивается имя, которое указывается в функции CreateFileMapping. Имя объекта, в отличие от дескриптора, является общесистемной характеристикой, которая служит для передачи информации о созданном объекте любому другому процессу, что и позволяет использовать объект для обмена между сервером и клиентом.

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

Обмен данными через страничный файл.

В системе Windows, страничный файл pagefile.sys используется в подсистеме виртуальной памяти и является частью всей физической памяти системы.

Страничный файл создается системой при инсталляции её на компьютер, и используется для хранения в нем программ и данных, временно выгружаемых из ОП. Файл структурируется на части, называемые страницами. Каждая страница в системе имеет фиксированный размер, а именно – 4кб для 32-разрядной ОС и 8 – для 64-разрядной. Обмен информацией между ОП и этим файлом осуществляется блоками данных, размер каждого равен размеру страницы.

Явное обращение осуществляется в основном лишь при обмене данными через этот файл между несколькими приложениями.

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

В ходе обмена через страничный файл участвуют два процесса – сервер и клиент. Сервер готовит данные для обмена, а клиент читает их. Чтобы использовать страничный файл, процесс-сервер создает в ФП системы создает проекцию страничного файла, используя для этого функцию CreateFileMapping,. В параметрах этой функции указывается размер файла и имя объекта.

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

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

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