WELCOME

Esta es la pagina personal de los alumnos:

Noelia González Rodríguez
Francisco Javier García Isla


¿Qué es lo que quieres hacer ?

  • Conectar con nosotros
  • Ver nuestra práctica de Sistemas Operativos




  • Conectar con nosotros con el e-mail

                                   ngonzale@kant.dcs.cie.uva.es
                                   fgarcia@kant.dcs.cie.uva.es
                        
                 VOLVER (Menú de inicio)



    Práctica de Sistemas Operativos

  • Documentación de la práctica
  • Implementación de la práctica
  • Estudio sobre el tiempo de ejecución del programa
  • VOLVER (Menú de inicio)




  • Documentación de la práctica

    Nombre: cerveza
                    Aplicación del algoritmo del " Bebedor de cerveza holandesa "

    Sinopsis:
                    #include "rshmem.h"

    Descripción:
                         Concurrencia. Dos procesos con condición de carrera.
                         Para realizar esta práctica se utiliza memoria compartida.

    Comandos:
                          Ejecutamos el programa para un número de iteraciones dadas.

    Ficheros:
                    prog               Archivo ejecutable.
                    cerveza.c        Archivo de texto que contiene la implementacion en c del programa .
                    rshmem.c        Archivo con la implementacion en c del programa.
                    rshmem.h        Fichero de cabecera con definiciones y declaraciones para usar memoria compartida.
                    doc.txt             Documentación del programa en un editor.

    Aviso:
                    . -> Si introducimos un número de iteraciones mayor o igual de 10000 tardará en ejecutarse más de 10 min.

    Autores:
                      González Rodríguez ,Noelia.
                      García Isla ,Francisco Javier.

                       Sistemas Operativos. 3° de Estadística.
                       Universidad de Valladolid.

                          VOLVER (menú sobre la práctica)





    Implementación del programa

    /* Dos procesos con condición de carrera */
    /* Algoritmo del Bebedor de Cerveza Holandesa */

    #include "rshmem.h"    /* Libreria donde se encuentra las funciones de memoria compartida */

    /* Función para incrementar y decrementar una variable */

    void incrementa(int *mem, int k) {
            int i;
            i=*mem; TP
            i=i+k;     TP
            *mem=i;
    }

    /* Función principal */

    int main( ) {
             int *recurso;      /* Variable a incrementar y decrementar */
             int *n1, *n2;     /* Variables de acceso a la seccion critica*/

    /* crear zona de memoria compartida */

              if (!crearMemoria( ))
              fprintf(stderr, "error de crearMemoria\n");
              recurso = (int *) memoria ;         /* Memoria necesaria */
              n1=recurso+sizeof(int);
              n2=n1+sizeof(int);
              *recurso = 0 ;
              *n1=0;
              *n2=0;
               if (0!=fork( )) {       /* proceso padre */
                    int i;
                    for (i=0; i<1000; i++){
                          *n1=1;
                          *n1=*n2+1;
                           while(*n2 !=0 && *n2 < *n1);         /* Entra en la secccion critica */
                           incrementa(recurso, -5);
                          *n1=0;
                     }
                    printf("El recurso valia 0 y ahora vale %d\n", *recurso);
                    if (!eliminarMemoria( ))
                    fprintf(stderr, "error de eliminarMemoria\n");
                    exit(0);
               }
               else {             /* proceso hijo */
                          int i;
                          for (i=0; i<1000; i++){
                                *n2=1;
                                *n2=*n1+1;
                                 while(*n1 !=0 && *n1 < *n2);       /* Entra en la secccion critica */
                                 incrementa(recurso, 5);
                                 *n2=0;
                          }
               exit(0);
               }

    }

                              VOLVER (menú práctica)




    Estudio del tiempo

    En el estudio de los tiempos vemos que el tiempo utilizado por el sistema es casi nulo ,para cualquier número de iteraciones. El tiempo real empleado aumenta de forma muy rapida a medida que aumenta el número de iteraciones, mientras que el tiempo usado aumenta , pero de forma más lenta.

    Las estadisticas obtenidas de una muestra de tiempos son:

                                          TREAL                                   TUSER                                      TSYS
    Media                            55.8500                                  16.8929                                     0.0314
    Moda                            0.04000                                   0.01000                                     0.0200

    El valor mas frecuente para los diferentes tiempos los vemos en la moda.

                              VOLVER (menú práctica)