Universidad de Costa Rica - ECCI

Prácticas de laboratorio

Laboratorio #4

Acciones
Inicio
Regresar

Objetivos

Requisitos

Notas

Notas de Unix

Procedimiento

  1. Lo primero que debe hacer es utilizar el comando "man" en una terminal para encontrar una descripción de lo que se puede hacer con semáforos. Por ejemplo, puede utilizar el comando "man" con la función "semget", "semctl" o "semop".

  2. Cree una nueva clase de C++ que encapsule la funcionalidad de los semáforos que ofrece UNIX, brindando al menos los siguientes métodos: un constructor, un destructor, un método Signal (o V) y un método Wait (o P). Recuerde que puede utilizar el comando man para asegurarse de que los llamados al sistema poseen los parámetros adecuados. Recuerde que algunos de los parámetros necesarios pueden ser declarados como miembros privados de la clase.
  3. Construya un programa que utilice la clase creada en el punto anterior para sincronizar dos procesos (fork), compruebe que su implantación de la clase es funcional y cumple con lo visto en clase para sincronizar procesos. Para hacer que el padre espere a que el hijo termine se puede utilizar el llamado al sistema "wait", utilice man para ver su descripción, o puede leer algún valor del teclado.

  4. Haga que su programa del punto anterior se "caiga" sin liberar los recursos de manera que pueda listarlos con el comando "ipcs"
  5. En la terminal, liste los recursos empleados utilizando "ipcs"
  6. Trate de remover el recurso creado utilizando el comando "ipcrm"

  7. Repita los pasos anteriores a fin de crear una clase para el paso de mensajes.
  8. Para este caso de los mensajes, también haga que el programa se "caiga" antes de enviar un mensaje, luego hágalo cuando se ha enviado un mensaje, anote las diferencias en su informe.

  9. Utilice los llamados para manipular memoria compartida y construya un programa que cree un segmento de memoria compartida entre dos procesos (padre e hijo). Haga que el padre escriba una tira de caracteres en el área compartida, luego despliegue esta tira en el hijo. No es necesario crear una clase para esto, pero si usted lo considera conveniente hágalo.
  10. Ejemplos adicionales