| |
Прежде чем воспользоваться разделением памяти, нужно создать разделяемый сегмент с уникальным идентификатором и ассоциированную с ним структуру данных. Уникальный идентификатор называется идентификатором разделяемого сегмента памяти (shmid); он используется для обращений к ассоциированной структуре данных, которая определяется следующим образом:
        struct shmid_ds {
          struct ipc_perm shm_perm; /* Структура прав на
                                       выполнение операций */
          int    shm_segsz;         /* Размер сегмента */
          struct region *shm_reg;   /* Указатель на структуру
                                       области памяти */
          char   pad [4];           /* Информация для
                                       подкачки */
          ushort shm_lpid;          /* Ид-р процесса, вып.
                                       последнюю операцию */
          ushort shm_cpid;          /* Ид-р процесса,
                                       создавшего сегмент */
          ushort shm_nattch;        /* Число присоединивших
                                       сегмент */
          ushort shm_cnattch;       /* Число удерживающих
                                       сегмент в памяти */
          time_t shm_atime;         /* Время последнего
                                       присоединения */
          time_t shm_dtime;         /* Время последнего
                                       отсоединения */
          time_t shm_ctime;         /* Время последнего
                                       изменения */
        };
(см. включаемый файл <sys/shm.h>).
Следующая таблица содержит информацию о возможных состояниях разделяемых сегментов памяти:
| Бит удержания | Бит подкачки | Бит размещения | Состояние | 
| 0 | 0 | 0 | Неразмещенный сегмент | 
| 0 | 0 | 1 | В памяти | 
| 0 | 1 | 0 | Не используется | 
| 0 | 1 | 1 | На диске | 
| 1 | 0 | 0 | Не используется | 
| 1 | 0 | 1 | Удержан в памяти | 
| 1 | 1 | 0 | Не используется | 
| 1 | 1 | 1 | Не используется | 
Состояния, упомянутые в таблице, таковы:
После того, как создан уникальный идентификатор разделяемого сегмента памяти и ассоциированная с ним структура данных, можно использовать системные вызовы семейства shmop (операции над разделяемыми сегментами) и shmctl (управление разделяемыми сегментами).
| 
Закладки на сайте Проследить за страницей  | 
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру  |