shm_overview - обзор
общей
памяти POSIX
API общей
памяти POSIX
позволяет
процессам
обмениваться
информацией
через
общую
область
памяти.
Доступные
интерфейсы:
-
shm_open(3)
- Создаёт
и
открывает
новый
объект, или
открывает
существующий
объект.
Аналог open(2).
Вызов
возвращает
файловый
дескриптор,
которые
используется
другими
интерфейсами,
описанными
далее.
-
ftruncate(2)
- Назначает
размер
общего
объекта
памяти
(размер
создаваемого
объекта
общей
памяти
равен
нулю).
-
mmap(2)
- Отображает
объект
общей
памяти в
виртуальное
адресное
пространство
вызвавшего
процесса.
-
munmap(2)
- Удаляет
отображение
объекта
общей
памяти из
виртуального
адресного
пространства
вызвавшего
процесса.
-
shm_unlink(3)
- Удаляет
объект
общей
памяти с
заданным
именем.
-
close(2)
- Закрывает
файловый
дескриптор
(выделенный
shm_open(3)), когда
он больше
не
требуется.
-
fstat(2)
- Возвращает
структуру
stat, в
которой
описан
объект
общей
памяти.
Информация,
возвращаемой
этим
вызовом:
размер
объекта (
st_size), права (
st_mode),
владелец (
st_uid) и группа (
st_gid).
-
fchown(2)
- Изменяет
владельца
объекта
общей
памяти.
-
fchmod(2)
- Изменяет
права на
объект
общей
памяти.
Общая
память POSIX
стала
доступна
начиная с Linux 2.4
и glibc 2.2.
Объекты
общей
памяти POSIX
являются
устойчивыми
на уровне
ядра.
Объект
будет
существовать
до самого
отключения
системы
или до тех
пор, пока
все
процессы
не
разорвут
связь с
объектом,
после чего
он может
быть
удален с
помощью
shm_unlink(3).
Программы,
в которых
используется
программный
интерфейс
общей
памяти POSIX,
для
компоновки
с
библиотекой
реального
времени
librt
должны
компилироваться
с помощью
cc
-lrt.
On Linux, shared memory objects are created in a (
tmpfs(5)) virtual
filesystem, normally mounted under
/dev/shm. Since Linux 2.6.19, Linux
supports the use of access control lists (ACLs) to control the permissions of
objects in the virtual filesystem.
Обычно
процессы
должны
синхронизировать
свой
доступ к
объекту
общей
памяти,
например, с
использованием
семафоров
POSIX.
Общая
память System V (
shmget(2),
shmop(2) и так
далее)
является
старым API. POSIX
предоставляет
более
простой и
лучше
спроектированный
интерфейс.
С другой
стороны,
общая
память POSIX в
какой-то
мере менее
распространена
(особенно
на старых
системах),
чем System V.
fchmod(2),
fchown(2),
fstat(2),
ftruncate(2),
memfd_create(2),
mmap(2),
mprotect(2),
munmap(2),
shmget(2),
shmop(2),
shm_open(3),
shm_unlink(3),
sem_overview(7)
Русский
перевод
этой
страницы
руководства
был сделан
Alexander Golubev <
[email protected]>, Azamat Hackimov
<
[email protected]>, Hotellook, Nikita
<
[email protected]>, Spiros Georgaras <
[email protected]>, Vladislav
<
[email protected]>, Yuri Kozlov <
[email protected]>
и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]