В началоLinux не для идиотов → System V shared memory
Gentoo-doc HOME Пред.: Организация памятиВ началоУровень выше: Linux не для идиотовСлед.: Файловая система

5. System V shared memory

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

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

Кроме System V IPC ядро Linux также поддерживает другие объекты IPC, в частности семафоры и очереди сообщений. Каждый объект System V IPC идентифицируется уникальным ключом. Просмотреть список всех объектов IPC можно командой ipcs. Команда ipcrm позволяет удалять объекты IPC, которые по каким-либо причинам остались не освобожденными после завершения создавшего их процесса – например, такая ситуация может возникнуть после аварийного завершения работы СУБД Oracle, Informix или DB2.

Соответственно, перед перезапуском процесса системный администратор с помощью команды ipcrm должен освободить неиспользуемые объекты IPC, поскольку стартующее приложение не сможет их повторно создать и не будет корректно работать.

Для каждого объекта IPC система устанавливает права доступа, как если бы это был файл (т.е. для каждого объекта IPC можно устанавливать набор прав ugo/rwx, но в отличие от обычных файлов сменить права доступа для IPC-объектов можно только вызывая специализированные функции, предназначенные для работы с такими объектами.

System V shared memory

System V shared memory.

$ ipcs

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x00000000 0          oracle    640        4194304    10
0x00000000 32769      oracle    640        20971520   10
0x00000000 65538      oracle    640        29360128   10
0x0d3c24a0 98307      oracle    640        29360128   50
0x00000000 13697028   root      777        49152      1
0x00000000 13729797   root      777        16384      1
0x000004d2 13795334   dalth     666        1008       2
0x00000000 14286866   root      644        790528     2          dest
0x00000000 21823507   dalth     600        393216     2          dest
0x00000000 21921814   root      644        122880     2          dest
0x00000000 14516249   root      644        151552     1          dest

------ Semaphore Arrays --------
key        semid      owner      perms      nsems
0x0b4f657c 262147     oracle    640        154
0x000004d2 458756     dalth     666        1

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages

Поддержка System V IPC позволяет сравнительно легко переносить на Linux приложения, написанные для других UNIX-систем.

Пред.: Организация памятиВ началоУровень выше: Linux не для идиотовСлед.: Файловая система
В началоLinux не для идиотов → System V shared memory