3.310 cursos gratis
6.275.657 alumnos
Publica tu curso gratis
Busca cursos gratis:
Estás aquí: mailxmail > Cursos de Informática > Programación > Procesos en C. Sincronización (segunda parte) > Procesos en C. Funciones getitimer y setitimer

Procesos en C. Sincronización (segunda parte)

Autor: Editorial McGraw-Hill
Curso: 5/5 5/5 (1 opinión) |789 alumnos|Fecha publicación: 21/10/2008

Capítulo 11:

 Procesos en C. Funciones getitimer y setitimer

C. Funciones getitimer y setitimer

Como se ha explicado en la descripción de la señal SIGALARM de la tabla 2.1, la función alarm permite controlar intervalos de tiempo medidos en segundos. Cuando sea necesario un control más preciso, se emplearán las funciones getitimer y setitimer.

Con todas estas funciones, el sistema provee a cada proceso de tres temporizadores distintos, cada uno de los cuales va paulatinamente reduciéndose en un dominio de tiempo diferente: tiempo real, tiempo de ejecución en modo usuario o tiempo de ejecución en modo kernel. Cuando alguno de los temporizadores llega a 0, se envía una señal al proceso distinta para cada temporizador. El temporizador se restablece con un tiempo prefijado al definirlo. El procedimiento para utilizar estos temporizadores es:

-  Definición del temporizador. Incluye, por un lado, la declaración del tiempo en segundos y microsegundos que el temporizador debe consumir en un principio. Por otro, se define el valor con el que deberá inicializarse cada vez que termine. Si este tiempo de reinicialización se define con el valor 0, no volverá a generar más alarmas que la primera.
-  Captura de la señal. Cada vez que el temporizador llega a 0 manda una señal al proceso, de manera que el programador utiliza la rutina de captura para ejecutar de manera síncrona las acciones deseadas con el tipo de tiempo definido con anterioridad.
-  Reinicialización automática del temporizador. Una vez que el temporizador genera la señal, vuelve a comenzar el proceso de manera automática, sin que sea necesario que el programador deba indicárselo.

La función getitimer permite obtener el tiempo del temporizador, así como su valor de reinicialización. Su definición es:

include </sys/time.h>
int getitimer (int cual, struct itimerval *valor);


donde cual define el tipo de temporizador y valor es una variable de tipo itimerval, en la que se recoge el valor del tiempo inicial dado al temporizador y el tiempo de reinicialización. Devuelve 0, si la ejecución se lleva a cabo de forma correcta, y -1, en caso contrario; el tipo de error queda recogido en errno.

La función setitimer permite definir el tiempo del temporizador y su valor de reinicialización, al tiempo que devuelve los dos valores de la configuración anterior. Su definición es:

include </sys/time.h>
int setitimer (int cual, const struct itimerval *valor,
struct itimerval *ovalor);

donde cual y valor tienen el mismo significado que en getitimer, y ovalor es una variable de tipo itimerval, en la que la función devuelve el valor del tiempo inicial y el tiempo de reinicialización de la anterior configuración del temporizador, si ovalue es distinto de 0. Devuelve 0, si la ejecución se lleva a cabo de forma correcta, y -1, en caso contrario; el tipo de error queda recogido en errno.

El atributo cual define uno de los tres tipos de temporizador y puede tomar uno de los siguientes valores:
  
-   ITIMER_REAL: disminuye en tiempo real. Cuando llega a 0, genera la señal SIGALARM.
-   ITIMER_VIRTUAL: disminuye únicamente cuando el proceso se está ejecutando.
Cuando llega a 0, genera la señal SIGVTALRM.
-   ITIMER_PROF: disminuye tanto si el proceso se está ejecutando como si el sistema está actuando en nombre del proceso. Si se considera junto a ITIMER_VIRTUAL, permite estimar el tiempo empleado por la aplicación en espacio de usuario y kernel. La señal que se genera cuando llega a 0 es SIGPROF.

La estructura itimerval que define los parámetros del temporizador se define como sigue:

struct itimerval
{
struct timeval it_interval; /* siguiente valor */
timeval it_value; /* valor actual */
};

El elemento it_value se fija con la cantidad de tiempo restante del temporizador, o con 0, si el temporizador no está activado. De manera análoga, en it_interval se establece el valor de reinicialización. Los temporizadores disminuyen el tiempo desde it_value hasta 0, generan una señal (SIGALRM, SIGVTALRM o SIGPROF, según el tipo de temporizador) y vuelven al valor de reinicialización contenido en it_interval. Un temporizador que se pone a 0 se para. Puede llegar a 0, porque it_value sea 0, debido a que ha expirado su tiempo o a que it_interval es igual a 0.

Recibe nuestras novedades
Al presionar "Recibir" estás dándote de alta y aceptas las condiciones legales de mailxmail

Información de los programas con certificado

Hay 1 opinión. Opina sobre este curso.


Cursos similares a Procesos en C. Sincronización (segunda parte)


Cursos Valoración Alumnos Vídeo
El Ceremonial: estrategia de comunicación
El protocolo Ceremonial, que se aplica en la actividad diplomática y en las ceremonias oficiales, ha ganado su espacio en el medio empresarial en los ... [06/11/09]
0/5 67  
Cambio global de la sociedad
La humanidad experimenta un cambio de época, no una época de cambios. Transformaciones veloces, cualitativas y simultáneas en las relaciones de producción, relaciones de ... [24/11/06]
 4,75/5 1.697  
Access con Visual Basic
Microsoft Access con Visual Basic, aprende a crear una base de datos en Access usando Visual Basic. Veremos también cómo crear tablas e introducir... [01/07/09]
 4,91/5 4.649  


Publicar en   del.icio.us    digg    meneame

¿Qué es mailxmail.com?|ISSN: 1699-4914|Recomiéndanos|Ayuda
Condiciones legales de mailxmail