1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275
|
<?xml version="1.0" encoding="iso-8859-1"?>
<reference id="ref.sem">
<title>Funciones Semáforo y de memoria compartida</title>
<titleabbrev>Semaphore</titleabbrev>
<partintro>
<para>
Este módulo provee funciones semáforo utilizando los semaforos de System V.
Los semáforos pueden usarse para obtener acceso exclusivo a algun recurso del
ordenador en cuestión, o para limitar el número de procesos que pueden usar
un recurso simultaneamente.</para>
<para>
Este módulo provee tambien funciones de memoria compartida, usando el
compartimiento de memoria de System V. La memoria compartida puede usarse para proveer
acceso a variables globales. Los diferentes demonios http e incluso otros programas,
(como Perl, C, ...) son capaces de utilizar estos datos, para intercambiarlos de
modo global. Recuerde que, la memoria compartida NO es segura para los
accesos simultáneos. Use los semáforos para obtener sincronismo.
<table>
<title>Limites de la memoria compartida del SO Unix</title>
<tgroup cols="2">
<tbody>
<row>
<entry>SHMMAX</entry>
<entry>máximo tamaño de memoria compartida, normalmente 131072
bytes</entry>
</row>
<row>
<entry>SHMMIN</entry>
<entry>minimo tamaño de memoria compartida, por lo general 1 byte</entry>
</row>
<row>
<entry>SHMMNI</entry>
<entry>máxima cantidad de segmentos de memoria compartida, normalmente
100</entry>
</row>
<row>
<entry>SHMSEG</entry>
<entry>máximo de memoria compartida por proceso, normalmente
6</entry>
</row>
</tbody>
</tgroup>
</table></para>
</partintro>
<refentry id="function.sem-get">
<refnamediv>
<refname>sem_get</refname>
<refpurpose>obtiene la identificacion de un semáforo (semaphore id)</refpurpose>
</refnamediv>
<refsect1>
<title>Descripción</title>
<methodsynopsis>
<type>int</type><methodname>sem_get</methodname>
<methodparam><type>int</type><parameter>key</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>max_acquire
</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>perm
</parameter></methodparam>
</methodsynopsis>
<para>
Devuelve: Un identificador positivo de semáforo en caso de éxito, o falso en caso de
error.</para>
<para>
<function>sem_get</function> Devuelve un id que puede usarse para acceder
al semáforo de System V con la llave dada. El semáforo se usa si es necesario
usando los bits de permisos especificados en perm (por defecto 0666). El número
de procesos que pueden adquirir el semáforo simultáneamente, se define en max_acquire
(por defecto es 1). Actualmente este valor se fija sólo si el proceso determina que
es el único relacionado actualmente al semáforo.</para>
<para>
Una segunda llamada a <function>sem_get</function> para la misma llave, devolverá
un id de semáforo diferente, pero con ambos identificadoes, se accederá al mismo
semáforo.</para>
<para>
Véase también: <function>sem_acquire</function> y
<function>sem_release</function>.</para>
</refsect1>
</refentry>
<refentry id="function.sem-acquire">
<refnamediv>
<refname>sem_acquire</refname>
<refpurpose>adquiere un semáforo, lo toma para sí</refpurpose>
</refnamediv>
<refsect1>
<title>Descripción</title>
<methodsynopsis>
<type>int</type><methodname>sem_acquire</methodname>
<methodparam><type>int</type><parameter>sem_identifier</parameter></methodparam>
</methodsynopsis>
<para>
Devuelve: Verdadero si hay éxito, falso si hay errores</para>
<para>
<function>sem_acquire</function> Produce un bloqueo (de ser necesario) hasta que el semáforo puede
adquirirse. Un proceso intentando adquirir un semáforo ya adquirido, se bloqueará permanentemente si
adquiriendo el semáforo, excede su valor de max_acquire.</para>
<para>
Despues de procesar una petición, cualquier semáforo adquirido por un proceso, que no sea explícitamente
liberado, será liberado automñaticamente, generando un mensaje de alerta.</para>
<para>
Véase tambien: <function>sem_get</function> and
<function>sem_release</function>.</para>
</refsect1>
</refentry>
<refentry id="function.sem-release">
<refnamediv>
<refname>sem_release</refname>
<refpurpose>release a semaphore</refpurpose>
</refnamediv>
<refsect1>
<title>Descripción</title>
<methodsynopsis>
<type>int</type><methodname>sem_release</methodname>
<methodparam><type>int</type><parameter>sem_identifier</parameter></methodparam>
</methodsynopsis>
<para>
Returns: &true; on success, &false; on error</para>
<para>
<function>sem_release</function> releases the semaphore if it
is currently acquired by the calling process, otherwise
a warning is generated.</para>
<para>
After releasing the semaphore, <function>sem_acquire</function>
may be called to re-acquire it.</para>
<para>
Véase tambien: <function>sem_get</function> y
<function>sem_acquire</function>.</para>
</refsect1>
</refentry>
<refentry id="function.shm-attach">
<refnamediv>
<refname>shm_attach</refname>
<refpurpose>Crea o abre un segmento de memoria compartida</refpurpose>
</refnamediv>
<refsect1>
<title>Descripción</title>
<methodsynopsis>
<type>int</type><methodname>shm_attach</methodname>
<methodparam><type>int</type><parameter>key</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>memsize</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>perm</parameter></methodparam>
</methodsynopsis>
<para>
<function>shm_attach</function> devuelve un identificador que
puede usarse para acceder a la memoria compartida de SystemV, con
la llave dada, la primera llamada creará el segmento de memoria compartida
con mem_size de tamaño (por defecto: sysvshm.init_mem en el <link linkend="configuration.file">archivo de configuración</link>, o bien de
10000 bytes) y los bits de permiso mas apropiados (por defecto: 0666).</para>
<para>
Una segunda llamada a <function>shm_attach</function> con la misma
<parameter>llave</parameter> devolvera un id diferente de memoria compartida,
pero ambos identificadores acceden a la misma porción de memoria compartida.
<parameter>memsize</parameter> y
<parameter>perm</parameter> serán ignorados.</para>
</refsect1>
</refentry>
<refentry id="function.shm-detach">
<refnamediv>
<refname>shm_detach</refname>
<refpurpose>Finaliza conexión con un segmento de memoria compartida</refpurpose>
</refnamediv>
<refsect1>
<title>Descripción</title>
<methodsynopsis>
<type>int</type><methodname>shm_detach</methodname>
<methodparam><type>int</type><parameter>shm_identifier</parameter></methodparam>
</methodsynopsis>
<para>
<function>shm_detach</function> finaliza la conexión con la memoria compartida,
especificada por el identificador <parameter>shm_identifier</parameter> creado con
<function>shm_attach</function>. Hay que recordar que la memoria compartida aún existe en el sistema Unix, y
los datos aún están presentes.</para>
</refsect1>
</refentry>
<refentry id="function.shm-remove">
<refnamediv>
<refname>shm_remove</refname>
<refpurpose>Elimina memoria compartida del sistma Unix</refpurpose>
</refnamediv>
<refsect1>
<title>Descripción</title>
<methodsynopsis>
<type>int</type><methodname>shm_remove</methodname>
<methodparam><type>int</type><parameter>shm_identifier</parameter></methodparam>
</methodsynopsis>
<para>
Elimina la memoria compartida de un sistema Unix, Todos los datos serán destruídos.</para>
</refsect1>
</refentry>
<refentry id="function.shm-put-var">
<refnamediv>
<refname>shm_put_var</refname>
<refpurpose>Inserta o actualiza una variable en la memoria compartida</refpurpose>
</refnamediv>
<refsect1>
<title>Descripción</title>
<methodsynopsis>
<type>int</type><methodname>shm_put_var</methodname>
<methodparam><type>int</type><parameter>shm_identifier</parameter></methodparam>
<methodparam><type>int</type><parameter>variable_key</parameter></methodparam>
<methodparam><type>mixed</type><parameter>variable</parameter></methodparam>
</methodsynopsis>
<para>
Inserta o actualiza una <parameter>variable</parameter> con una llave
<parameter>variable_key</parameter>. Son válidos todos los tipos de variable (doble,
entera, cadena, arreglo).</para>
</refsect1>
</refentry>
<refentry id="function.shm-get-var">
<refnamediv>
<refname>shm_get_var</refname>
<refpurpose>Devuelve una variable de la memoria compartida
</refpurpose>
</refnamediv>
<refsect1>
<title>Descripción</title>
<methodsynopsis>
<type>mixed</type><methodname>shm_get_var</methodname>
<methodparam><type>int</type><parameter>id</parameter></methodparam>
<methodparam><type>int</type><parameter>variable_key</parameter></methodparam>
</methodsynopsis>
<para>
<function>shm_get_var</function> devuelve la variable con la llave
<parameter>variable_key</parameter> dada. La variable, queda presente en la memoria compartida.</para>
</refsect1>
</refentry>
<refentry id="function.shm-remove-var">
<refnamediv>
<refname>shm_remove_var</refname>
<refpurpose>Elimina una variable de la memoria compartida
</refpurpose>
</refnamediv>
<refsect1>
<title>Descripción</title>
<methodsynopsis>
<type>int</type><methodname>shm_remove_var</methodname>
<methodparam><type>int</type><parameter>id</parameter></methodparam>
<methodparam><type>int</type><parameter>variable_key</parameter></methodparam>
</methodsynopsis>
<para>
Elimina la varible que se corresponde con la llave <parameter>variable_key</parameter> dada,
liberando la memoria que ocupaba aquella.</para>
</refsect1>
</refentry>
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
|