The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Каталог документации / Раздел "Программирование в Linux" / Оглавление документа
next up previous contents
Next: Создание разделяемых сегментов памяти Up: Разделяемые сегменты памяти Previous: Общие сведения   Contents

Структуры для разделяемых сегментов памяти

Прежде чем воспользоваться разделением памяти, нужно создать разделяемый сегмент с уникальным идентификатором и ассоциированную с ним структуру данных. Уникальный идентификатор называется идентификатором разделяемого сегмента памяти (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>).

Информация о возможных состояниях разделяемых сегментов памяти содержится в табл. 4:

Таблица 4. Состояния разделяемых сегментов памяти.


Бит удержания Бит подкачки Бит размещения Состояние
0 0 0 Неразмещенный сегмент
0 0 1 В памяти
0 1 0 Не используется
0 1 1 На диске
1 0 0 Не используется
1 0 1 Удержан в памяти
1 1 0 Не используется
1 1 1 Не используется


Состояния, упомянутые в таблице, таковы:

неразмещенный
сегмент - разделяемый сегмент, ассоциированный с данным идентификатором, не размещен для использования;
в
памяти - сегмент размещен для использования. Это означает, что сегмент существует и в данный момент находится в оперативной памяти;
на
диске - сегмент в данный момент вытолкнут на устройство подкачки;
удержан
в памяти - сегмент удержан в оперативной памяти и не будет рассматриваться в качестве кандидата на выталкивание, пока не будет снято удержание. Удерживать и освобождать разделяемые сегменты может только суперпользователь;
не
используется - состояние в настоящий момент не используется и при работе обычного пользователя с разделяемыми сегментами памяти возникнуть не может.
Системный вызов shmget аналогичен вызову semget (разумеется, с заменой слов ``множество семафоров'' на ``разделяемый сегмент памяти''). Он также предназначен для получения нового или опроса существующего идентификатора, а нужное действие определяется значением аргумента key. В аналогичных ситуациях shmget терпит неудачу. Единственное его отличие состоит в том, что задается не число семафоров в множестве, а размер сегмента в байтах.

После того, как создан уникальный идентификатор разделяемого сегмента памяти и ассоциированная с ним структура данных, можно использовать системные вызовы семейства shmop (операции над разделяемыми сегментами) и shmctl (управление разделяемыми сегментами).


next up previous contents
Next: Создание разделяемых сегментов памяти Up: Разделяемые сегменты памяти Previous: Общие сведения   Contents
2004-06-22

АКЦИЯ! ПОДПИШИСЬ на журнал Linux Format до 31 января 2012 года и выиграй СУПЕРПРИЗ!

Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

Каждый, кто оформит подписку, получает бонус- объёмные наклейки на системный блок и подарки: с одним из первых выпусков журнала в 2012 году- диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

Подробнее о проведении акции вы можете прочитать на странице сайта.


  Закладки на сайте
  Проследить за страницей
Created 1996-2012 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
RUNNet TopList