Почему вообще используется отображение в память?

Почему вообще используется отображение в память?

До сих пор мы всегда говорили об отображении в память содержимого файла, который сначала открывается вызовом open, а затем отображается вызовом mmap. Удобство состоит в том, что все операции ввода-вывода осуществляются ядром и скрыты от программиста, а он просто пишет код, считывающий и записывающий данные в некоторую область памяти. Ему не приходится вызывать read, write или lseek. Часто это заметно упрощает код.

ПРИМЕЧАНИЕ

Вспомните нашу реализацию очередей сообщений Posix с использованием mmap, где значения сохранялись в структуре msg_hdr и считывались из нее же (листинги 5.26 и 5.28).

Следует, однако, иметь в виду, что не все файлы могут быть отображены в память. Попытка отобразить дескриптор, указывающий на терминал или сокет, приведет к возвращению ошибки при вызове mmap. К дескрипторам этих типов доступ осуществляется только с помощью read и write (и аналогичных вызовов).

Другой целью использования mmap может являться разделение памяти между неродственными процессами. В этом случае содержимое файла становится начальным содержимым разделяемой памяти и любые изменения, вносимые в нее процессами, копируются обратно в файл (что дает этому виду IPC живучесть файловой системы). Предполагается, что при вызове mmap указывается флаг MAP_SHARED, необходимый для разделения памяти между процессами.

ПРИМЕЧАНИЕ

Детали реализации mmap и связь этого вызова с механизмами реализации виртуальной памяти описаны в [14] для 4.4BSD и [6] для SVR4. 

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

ПИСЬМОНОСЕЦ: Секс вообще зарабатывался!..

Из книги Журнал «Компьютерра» № 24 от 27 июня 2006 года автора Журнал «Компьютерра»

ПИСЬМОНОСЕЦ: Секс вообще зарабатывался!.. Автор: Леонид Левкович-МаслюкРаньше все удовольствия для человечества добывались тяжким трудом. Еда была наградой за труд. Поэтому, понимая, каким трудом зарабатывается пропитание, люди молились за столом, говоря Богу — спасибо


Компьютер вообще не включается 

Из книги Очень хороший самоучитель пользователя компьютером. Как самому устранить 90% неисправностей в компьютере и увеличить его возможности автора Колисниченко Денис Николаевич

Компьютер вообще не включается  В первой главе мы собрались поговорить о сообщениях, выводимых при загрузке компьютера. Но что делать, если компьютер вообще не включается?Прежде всего нужно проверить, а подводится ли к компьютеру питание[1]. Может, вы забыли включить


15.5.1. Для чего используется контроль версий

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

15.5.1. Для чего используется контроль версий Развитие кода поднимает несколько практических проблем, которые могут быть основными причинами противоречий и монотонной работы, а следовательно, и серьезного снижения продуктивности. Время, потраченное на разрешение данных


15.5.1. Для чего используется контроль версий

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

15.5.1. Для чего используется контроль версий Развитие кода поднимает несколько практических проблем, которые могут быть основными причинами противоречий и монотонной работы, а следовательно, и серьезного снижения продуктивности. Время, потраченное на разрешение данных


12.4. Неименованное отображение в память в 4.4BSD

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

12.4. Неименованное отображение в память в 4.4BSD Наши примеры из листингов 12.2 и 12.3 работают отлично, но нам приходится создавать файл в файловой системе (аргумент командной строки), вызывать open, записывать нули в файл вызовом write (чтобы проинициализировать его). Если mmap


12.5. Отображение в память в SVR4 с помощью /dev/zero

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

12.5. Отображение в память в SVR4 с помощью /dev/zero В листинге 12.5 приведена часть новой версии программы, претерпевшая изменения по сравнению с листингом 12.2 при переходе к использованию отображения с помощью /dev/zero.Листинг 12.5. Отображение памяти в SVR4 с помощью


27.2.1. Для чего используется протокол ICMP

Из книги Цифровой журнал «Компьютерра» № 164 автора Журнал «Компьютерра»

27.2.1. Для чего используется протокол ICMP Протокол межсетевых управляющих сообщений используется для диагностических целей. Например, система А передала системе Б неверный пакет. Система Б с помощью протокола ICMP может «сказать» системе А, что посланный ею пакет


Мрачные итоги Pwn2Own: почему браузеры так легко взломать и почему линуксоидам можно волноваться меньше? Евгений Золотов

Из книги Интернет-маркетинг на 100% автора Коллектив авторов

Мрачные итоги Pwn2Own: почему браузеры так легко взломать и почему линуксоидам можно волноваться меньше? Евгений Золотов Опубликовано 11 марта 2013 В английском айтишном жаргоне есть словечко «pwned», перевести которое на русский можно таким же коротким «поимели». Грубо,


Почему Google уничтожает свой Reader — и почему это хорошо? Евгений Золотов

Из книги Цифровой журнал «Компьютерра» № 169 автора Журнал «Компьютерра»

Почему Google уничтожает свой Reader — и почему это хорошо? Евгений Золотов Опубликовано 15 марта 2013 Когда в среду руководители Google ставили точку в истории одного из своих многочисленных веб-сервисов, едва ли они могли вообразить, какая реакция за этим последует. Согласно


2.3.2. Когда и как используется поисковый маркетинг

Из книги Цифровой журнал «Компьютерра» № 176 автора Журнал «Компьютерра»

2.3.2. Когда и как используется поисковый маркетинг СПРОС И ИНСТРУМЕНТЫ ОПРЕДЕЛЕНИЯ СПРОСАЯ часто отвечаю на вопрос, можно ли использовать поисковый маркетинг и его инструментарий для вывода нового продукта в Интернет.Пример: «У меня новый автомобиль и марка новая ему


Как взломать самолёт с помощью смартфона — и почему это вообще стало возможным? Евгений Золотов

Из книги Цифровой журнал «Компьютерра» № 181 автора Журнал «Компьютерра»

Как взломать самолёт с помощью смартфона — и почему это вообще стало возможным? Евгений Золотов Опубликовано 17 апреля 2013 Когда минувшей зимой мне довелось писать про «кибернетическое 11 сентября» (воображаемый крупный террористический акт,


Милого узнаю по геному: почему Америка так боится ДНК-отпечатков (и почему не боимся мы) Евгений Золотов

Из книги Цифровой журнал «Компьютерра» № 17 (170) автора Журнал «Компьютерра»

Милого узнаю по геному: почему Америка так боится ДНК-отпечатков (и почему не боимся мы) Евгений Золотов Опубликовано 06 июня 2013 Биометрическая идентификация — штука замечательная, но непростая. В теории, по физиологическим особенностям, присущим


Полцарства за метаданные: почему спецслужбы собирают только метаинформацию — и что это вообще такое? Евгений Золотов

Из книги Цифровой журнал «Компьютерра» № 201 автора Журнал «Компьютерра»

Полцарства за метаданные: почему спецслужбы собирают только метаинформацию — и что это вообще такое? Евгений Золотов Опубликовано 08 июля 2013 Когда бывший директор АНБ и ЦРУ Майкл Гайден советовал европейцам поинтересоваться, чем занимаются их


Почему стартаперам кажется, что российский венчур — клондайк, и почему на самом деле это не совсем так Валентина Славина, президент НП «Бизнес-ангелы Урала»

Из книги Анонимность и безопасность в Интернете. От «чайника» к пользователю автора Колисниченко Денис Николаевич

Почему стартаперам кажется, что российский венчур — клондайк, и почему на самом деле это не совсем так Валентина Славина, президент НП «Бизнес-ангелы Урала» Опубликовано 23 апреля 2013Будучи руководителем сообщества частных инвесторов ранней стадии на Урале (НП


ТВ на заказ: как Intel строила главный ТВ-сервис Америки, почему не получилось и почему может получиться у нас Евгений Золотов

Из книги автора

ТВ на заказ: как Intel строила главный ТВ-сервис Америки, почему не получилось и почему может получиться у нас Евгений Золотов Опубликовано 29 ноября 2013 Нечасто, но случается, некоторое событие остаётся незамеченным несправедливо — потому только, что


6.6. А нужен ли вообще брандмауэр?

Из книги автора

6.6. А нужен ли вообще брандмауэр? Некоторые пользователи пренебрегают установкой брандмауэра на свой компьютер, мотивируя тем, что на домашнем маршрутизаторе уже есть брандмауэр, да и на сервере провайдера тоже наверняка есть. Некоторые продолжают использовать