<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/refs.fileprocess.process.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'book.sem.php',
    1 => 'Семафоры',
    2 => 'Семафоры, разделяемая память и интерфейс IPC',
  ),
  'up' => 
  array (
    0 => 'refs.fileprocess.process.php',
    1 => 'Модули управления процессами программ',
  ),
  'prev' => 
  array (
    0 => 'class.volatile.php',
    1 => 'Volatile',
  ),
  'next' => 
  array (
    0 => 'sem.setup.php',
    1 => 'Установка и настройка',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/sem/book.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/book.sem.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="book.sem" class="book">
 
 <h1 class="title">Семафоры, разделяемая память и интерфейс IPC</h1>
 

 
 <div id="intro.sem" class="preface">
  <h1 class="title">Введение</h1>
  <p class="simpara">
   Модули поддерживают обёртки для семейства функций интерфейса межпроцессного взаимодействия
   (англ. Inter-process communication, IPC) операционной системы System V.
   Сюда входят семафоры, разделяемая память и механизм обмена сообщениями между процессами.
  </p>
  <p class="simpara">
   Семафоры — средства синхронизации процессов и потоков, которые умеют открывать монопольный доступ к ресурсам локальной
   машины или ограничивать число процессов, которые одновременно пользуются ресурсом.
  </p>
  <p class="para">
   За счёт разделяемой памяти ОС System V модуль поддерживает также функции для работы с разделяемой памятью.
   Разделяемая память открывает доступ к глобальным переменным. Демоны httpd и даже другие программы, которые
   написали на языках наподобие Perl, C и других, получают доступ к данным разделяемой памяти
   для глобального обмена данными. У разделяемой памяти НЕТ защиты от одновременного доступа,
   поэтому синхронизацией процессов и потоков управляют через семафоры.
   <table class="doctable table">
    <caption><strong>Ограничения на общую память в операционной системе Unix</strong></caption>
    
     <tbody class="tbody">
      <tr>
       <td>SHMMAX</td>
       <td>
        Максимальный размер разделяемой памяти. Стандартный размер равен 131 072 байтам
       </td>
      </tr>

      <tr>
       <td>SHMMIN</td>
       <td>
        Минимальный размер разделяемой памяти. Стандартный размер равен 1 байту
       </td>
      </tr>

      <tr>
       <td>SHMMNI</td>
       <td>
        Максимальное количество сегментов разделяемой памяти в системе.
        Стандартное количество равно 100 сегментам
       </td>
      </tr>

      <tr>
       <td>SHMSEG</td>
       <td>
        Максимальное количество сегментов разделяемой памяти на процесс.
        Стандартное количество 6 сегментам
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
  <p class="simpara">
   Функции для работы с сообщениями вызывают, чтобы обмениваться сообщениями
   с другими процессами. Это простые и эффективные средства обмена данными между
   процессами без настройки альтернативы в виде сокетов Unix-домена.
  </p>
  <blockquote class="note"><p><strong class="note">Замечание</strong>: 
   <span class="simpara">
    В ОС Windows доступны только функции разделяемой памяти и функция <span class="function"><a href="function.ftok.php" class="function">ftok()</a></span>.
    На этой платформе не поддерживаются ни семафоры, ни функции межпроцессного обмена сообщениями.
 </span>
  </p></blockquote>
 </div>
 

 





 






 






 





 





 






<ul class="chunklist chunklist_book"><li><a href="sem.setup.php">Установка и настройка</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="sem.installation.php">Установка</a></li><li><a href="sem.configuration.php">Настройка во время выполнения</a></li><li><a href="sem.resources.php">Типы ресурсов</a></li></ul></li><li><a href="sem.constants.php">Предопределённые константы</a></li><li><a href="ref.sem.php">Функции семафоров</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="function.ftok.php">ftok</a> — Преобразовывает путь и идентификатор проекта в ключ System V IPC</li><li><a href="function.msg-get-queue.php">msg_get_queue</a> — Создаёт или подключает к очереди сообщений</li><li><a href="function.msg-queue-exists.php">msg_queue_exists</a> — Проверяет существование очереди сообщений</li><li><a href="function.msg-receive.php">msg_receive</a> — Получает сообщение из очереди сообщений</li><li><a href="function.msg-remove-queue.php">msg_remove_queue</a> — Удаляет очередь сообщений</li><li><a href="function.msg-send.php">msg_send</a> — Отправляет сообщение в очередь сообщений</li><li><a href="function.msg-set-queue.php">msg_set_queue</a> — Устанавливает информацию в структуре данных очереди сообщений</li><li><a href="function.msg-stat-queue.php">msg_stat_queue</a> — Получает информацию из структуры данных очереди сообщений</li><li><a href="function.sem-acquire.php">sem_acquire</a> — Захватывает семафор</li><li><a href="function.sem-get.php">sem_get</a> — Получает идентификатор семафора</li><li><a href="function.sem-release.php">sem_release</a> — Освобождает семафор</li><li><a href="function.sem-remove.php">sem_remove</a> — Удаляет семафор</li><li><a href="function.shm-attach.php">shm_attach</a> — Создаёт или открывает сегмент разделяемой памяти</li><li><a href="function.shm-detach.php">shm_detach</a> — Отключается от сегмента разделяемой памяти</li><li><a href="function.shm-get-var.php">shm_get_var</a> — Возвращает переменную из разделяемой памяти</li><li><a href="function.shm-has-var.php">shm_has_var</a> — Проверяет, существует ли конкретная запись</li><li><a href="function.shm-put-var.php">shm_put_var</a> — Вставляет или обновляет переменную в разделяемой памяти</li><li><a href="function.shm-remove.php">shm_remove</a> — Удаляет разделяемую память из систем Unix</li><li><a href="function.shm-remove-var.php">shm_remove_var</a> — Удаляет переменную из разделяемой памяти</li></ul></li><li><a href="class.sysvmessagequeue.php">SysvMessageQueue</a> — Класс SysvMessageQueue</li><li><a href="class.sysvsemaphore.php">SysvSemaphore</a> — Класс SysvSemaphore</li><li><a href="class.sysvsharedmemory.php">SysvSharedMemory</a> — Класс SysvSharedMemory</li></ul></div><?php manual_footer($setup); ?>