Операционные системы. Учебное пособие. Марапулец Ю.В. - 116 стр.

UptoLike

Составители: 

Для открепления файла от адресного пространства процесса используется функция
UnmapViewOfFile(), а для уничтожения объектовфайл ипроецируемый файл” -
функция CloseHandle(). Последовательность кода работы с проецированными файлами
следующая:
HANDLE hFile, hFileMapping;
PVOID pMassive;
hFile = CreateFile( “File Name”, ... );
hFileMapping = CreateFileMapping( hFile, ... );
CloseHandle( hFile ) ;
pMassive = MapViewOfFile( hFileMapping, ... );
/* Работа с массивом pMassive */
UnmapViewOfFile( pMassive );
Взаимодействие процессов через общую область данных. Когерентность. Два
процесса могут совместно использовать объектпроецируемый файл”. При этом, при
помощи функции MapViewOfFile() каждый процесс проецирует этот объект на свое ад-
ресное пространство и используют эту часть адресного пространства как разделяемую
область данных. Схема, описывающая данный механизм представлена на рис. 4.9.
Общий механизм таков: один процесс создает объектпроецируемый файлс по-
мощью функции CreateFileMapping() и порождает другой процесс, передавая ему в на-
следство описатель этого объекта. Дочерний процесс может пользоваться этим описате-
лем наравне с родительским. Проблема состоит только в том, как сообщить дочернему
процессу, какой из переданных ему в наследство описателей является описателемпро-
ецируемого файла”. Это можно сделать любым способом. Например передачей парамет-
ров при запуске процесса, через переменные среды, передачей сообщения в главное ок-
но процесса и так далее.
Рис.4.9. Схема механизма взаимодействия процессов через общую область данных.
Общая область данных может быть создана не только путем проецирования файла,
но и путем проецирования части файла подкачки. Для этого в функцию
118
     Для открепления файла от адресного пространства процесса используется функция
UnmapViewOfFile(), а для уничтожения объектов “файл” и “проецируемый файл” -
функция CloseHandle(). Последовательность кода работы с проецированными файлами
следующая:

HANDLE hFile, hFileMapping;
PVOID pMassive;
hFile = CreateFile( “File Name”, ... );
hFileMapping = CreateFileMapping( hFile, ... );
CloseHandle( hFile ) ;
pMassive = MapViewOfFile( hFileMapping, ... );
/* Работа с массивом pMassive */
UnmapViewOfFile( pMassive );

     Взаимодействие процессов через общую область данных. Когерентность. Два
процесса могут совместно использовать объект “проецируемый файл”. При этом, при
помощи функции MapViewOfFile() каждый процесс проецирует этот объект на свое ад-
ресное пространство и используют эту часть адресного пространства как разделяемую
область данных. Схема, описывающая данный механизм представлена на рис. 4.9.
     Общий механизм таков: один процесс создает объект “проецируемый файл” с по-
мощью функции CreateFileMapping() и порождает другой процесс, передавая ему в на-
следство описатель этого объекта. Дочерний процесс может пользоваться этим описате-
лем наравне с родительским. Проблема состоит только в том, как сообщить дочернему
процессу, какой из переданных ему в наследство описателей является описателем “про-
ецируемого файла”. Это можно сделать любым способом. Например передачей парамет-
ров при запуске процесса, через переменные среды, передачей сообщения в главное ок-
но процесса и так далее.




         Рис.4.9. Схема механизма взаимодействия процессов через общую область данных.

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

                                             118