Cтраница 1
![]() |
Сегментированный процесс до отображения файлов на адресное пространство ( а. процесс после отображения существующего файла abc на один сегмент и создания нового. [1] |
Отображение файлов на память лучше всего работает в операционной системе, поддерживающей сегментацию. В такой системе каждый файл может быть отображен на свой собственный сегмент, так чтобы байт k файла был также байтом k сегмента. На рис. 6.3, а показан процесс с двумя сегментами, исполняемым кодом программы и данными. Предположим, что процесс копирует файлы подобно программе из листинга 6.1. Сначала он отображает на сегмент исходный файл, например abc. Затем он создает пустой сегмент и отображает его на выходной файл, xyz. [2]
![]() |
Два процесса совместно используют один отображенный на память файл. [3] |
Дополнительное преимущество отображения файла на память заключается в том, что два или более процессов могут одновременно отобразить на свое адресное пространство один и тот же файл. Запись в этот файл одним из процессов мгновенно становится видимой всем остальным. [4]
Для реализации отображения файлов на память изменяются системные внутренние таблицы. При обращении к памяти по адресу от 512 до 576 К происходит прерывание из-за отсутствия страницы, обработчик которого предоставляет считанную в память страницу 0 файла. При записи происходит приблизительно то же самое, но страница памяти, на которую отображается страница файла, помечается как модифицированная. Если потом эта страница удаляется из памяти алгоритмом замены страниц, она записывается в соответствующее место файла. После завершения процесса все модифицированные страницы сохраняются в соответствующих файлах. [5]
![]() |
Два процесса совместно используют один отображенный на память файл. [6] |
Дополнительное преимущество отображения файла на память заключается в том, что два или более процессов могут одновременно отобразить на свое адресное пространство один и тот же файл. Запись в этот файл одним из процессов мгновенно становится видимой всем остальным. [7]
![]() |
Сегментированный процесс до отображения файлов на адресное пространство ( а. процесс после отображения существующего файла abc на один сегмент и создания нового. [8] |
Для реализации отображения файлов на память изменяются системные внутренние таблицы. При обращении к памяти по адресу от 512 до 576 К происходит прерывание из-за отсутствия страницы, обработчик которого предоставляет считанную в память страницу 0 файла. При записи происходит приблизительно тоже самое, но страница памяти, на которую отображается страница файла, помечается как модифицированная. Если потом эта страница удаляется из памяти алгоритмом замены страниц, она записывается в соответствующее место файла. После завершения процесса все модифицированные страницы сохраняются в соответствующих файлах. [9]
Все возможности настройки отображения файла данных ( такие как ширина, высота столбца, цвет, гарнитура шрифта) хранятся отдельно в каждом файле данных и могут быть использованы, например, для того, чтобы выделить конкретные файлы в общем проекте. [10]
Многими версиями UNIX поддерживается отображение файлов на адресное пространство памяти. Это свойство позволяет отображать файл на часть адресного пространства процесса, так чтобы можно было читать из файла и писать в файл, как если бы это был массив, хранящийся в памяти. Отображение файла на адресное пространство памяти делает произвольный доступ к нему существенно более легким, нежели при использовании системных вызовов, таких как read и write. Совместный доступ к библиотекам предоставляется именно при помощи этого механизма. На рис. 10.7 показан файл, одновременно отображенный на адресные пространства двух процессов по различным виртуальным адресам. [11]
Установим первоначальные параметры для отображения файла. Если тип графического файла отличен от JPEG, то его можно загрузить, но компоненты типа TcomboBox для определения параметров будут недоступны. [12]
Многими версиями UNIX поддерживается отображение файлов на адресное пространство памяти. Это свойство позволяет отображать файл на часть адресного пространства процесса, так чтобы можно было читать из файла и писать в файл, как если бы это был массив, хранящийся в памяти. Отображение файла на адресное пространство памяти делает произвольный доступ к нему существенно более легким, нежели при использовании системных вызовов, таких как read и write. Совместный доступ к библиотекам предоставляется именно при помощи этого механизма. На рис. 10.7 показан файл, одновременно отображенный на адресные пространства двух процессов по различным виртуальным адресам. [13]
Функция CreateFiieMapping создает объект отображения файла, но не отображает файл в память процесса. [14]
На вкладке Просмотр задается режим отображения файлов. [15]