Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Semaforos

No description
by

Cristian Cardenas

on 1 December 2012

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Semaforos

Que es un Semaforo Funcionamiento Ejemplo Semabinit.c Sema.c Pasos para utilizar los semaforos * Obtener una clave de semáforo

* Obtener un array de semáforos

* Uno de los procesos debe inicializar el semáforo

* Ya está todo preparado, ahora sólo queda usar los semáforos.

* Cuando el proceso termine de usar el recurso común, debe incrementar el semáforo. Un semáforo es una variable especial (o tipo abstracto de datos) que constituye el método clásico para restringir o permitir el acceso a recursos compartidos (por ejemplo, un recurso de almacenamiento del sistema o variables del código fuente) en un entorno de multiprocesamiento El funcionamiento del semáforo es como el de una variable contador. Imaginemos que el semáforo controla un archivo y que inicialmente tiene el valor 1 (está "verde"). Cuando un proceso quiere acceder al archivo primero debe decrementar el semáforo. El contador queda a 0 y como no es negativo, deja que el proceso siga su ejecución y, por tanto, acceda al archivo Semaforos en Linux El ejemplo realizado, creamos 3 archivos
en c, uno que va inicializar nuestro semáforo
y los otros dos son los procesos que vamos
a interactuar con nuestro semáforo.
Lo primero es tener encuenta la libreria
que vamos a manejar nuestros semaforos que
es la "#include <sys/sem.h> " En este archivo vamos a crear
nuestro semáforo con la función
"semget", en la cual en nuestro
archivo fuente lo llamamos de
esta forma:

id = semget (KEY, 1, 0666 | IPC_CREAT); Tenemos dos programas, Sema y Semb. Semb puede ser iniciado en cualquier tiempo, pero se verá obligado a esperar hasta sema se ejecuta. Sema y Semb no tienen que ser ejecutados por el mismo usuario Cristian Arteaga Cardenas Donde id es el identificador de nuestro
semáforo, semget es la función para
crear nuestro semáforo, donde tiene
unos parámetros, KEY es la llave que
colocamos al principio como una constante
el 1 es el numero de arreglos de semáforos
que queremos, el 0666 son los permisos de
lectura y escritura entre semáforos, y
IPC_CREAT es una bandera que nos indica
que si no existe ningún semáforo el lo
creara. La función union
es la que nos indica
como se van unir los
semáforos. La llave es la que nos da direccion a nuestro semáforo La función semctl es la que inicializa el semáforo id= es el id del semáforo que vamos a inicializar.
0= el id del arreglo
SETVAL= Indica que vamos a inicializarlo
Argumento= El valor que se va inicializar el semáforo, como es 0 eso significa que comienza en rojo valores de la estructura principal sem_num= es el numero de semáforos que vamos a modificar.
sem_op= la accion que va a tomar "va a incrementar es decir que va ponerse en verde" semop= Realiza la acción del semáforo Semb.c Tenemos dos programas, Sema y Semb. Semb puede ser iniciado en cualquier tiempo, pero se verá obligado a esperar hasta sema se ejecuta. Sema y Semb no tienen que ser ejecutados por el mismo usuario sem_num= es el numero de semáforos que vamos a modificar.
sem_op= la accion que va a tomar "va a decrementar es decir que va ponerse en rojo" Muchas Gracias
Full transcript