SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más...
-
Upload
rafael-roldan-soler -
Category
Documents
-
view
217 -
download
0
Transcript of SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más...
![Page 1: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/1.jpg)
SEMÁFOROS
Conceptos Mecanismo para prevenir la colisión que
se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que deben compartir.
Tabla de semáforos
![Page 2: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/2.jpg)
ESTRUCTURAS BÁSICAS Estructura semid_ds:Asociada a cada conjunto de semáforos.
Struct semid_ds{
struct ipc_perm
time_t sem_otime
time_t sem_ctime
struct sem* sem_base
struct sem_queue* sem_pending
struct sem_queue** sem_pending_last
struct sem_undo* undo
ushort sem_nsems
...
};
![Page 3: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/3.jpg)
ESTRUCTURAS BÁSICAS
Estructura sembuf:Operación a realizar sobre un semáforo.
Struct sembuf{
ushort sem_num;
short sem_op;
short sem_flg;
};
![Page 4: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/4.jpg)
ESTRUCTURAS BÁSICAS
Estructura semun:Almacenar o recuperar información sobre los semáforos.
Struct semun{
int val;
struct semid_ds buf;
ushort * array;
struct seminfo* __buf;
void __pad;
};
![Page 5: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/5.jpg)
SEMÁFOROS
Estructura Seminfo.Permite conocer valores límite o actuales del sistema(semctl).
Struct seminfo{
int semmap;
int semmni;
int semmns;
int semmnu;
int semmsl;
![Page 6: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/6.jpg)
SÉMAFOROS
int semmopm;
int semume;
int semusz;
int semvmx;
int semaem;};
![Page 7: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/7.jpg)
SÉMAFOROS
LLAMADAS AL SISTEMA
Semget: Creación y búsqueda de grupos de semáforos.
Semctl: Control de los semáforos. Semop: Operaciónes sobre los semáforos.
![Page 8: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/8.jpg)
SEMÁFOROS
Semget (creación y búsqueda de grupos de semáforos)
#include <sys/types.h> #include<sys/ipc.h> #include<sys/sem.h>
int (key, int nsems,int semflg);
![Page 9: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/9.jpg)
SEMÁFOROS
Keynsemssemflg
Campo II:
Campo I: 00X00
IPC_CREAT 000X0
IPC_EXCL 0000X
![Page 10: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/10.jpg)
SEMÁFOROS
Descripción: Retorna un descriptor de semáforo. Si no existe el descriptor y si se especifica IPC_CREAT creará uno.
Error: Retornará un -1 y errno tendrá el código de error.
![Page 11: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/11.jpg)
SEMÁFOROS
En este último caso, la variable errno toma uno de los valores siguientes: EACCES EEXIST EIDRM ENOMEN ENOSPC
![Page 12: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/12.jpg)
SEMÁFOROS
Semop(operaciones sobre los semáforos)
#include <sys/types.h> #include <sys/ipc.h> #include<sys/sem.h>
int semop(int semid, struct sembuf * sops,
unsigned nsops);
![Page 13: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/13.jpg)
SEMÁFOROS
SemidsopsnsopsOperaciones:
Valor estrictamente positivo Valor nulo Valor estrictamente negativo
![Page 14: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/14.jpg)
SEMÁFOROS
Ejecución correcta: Operará según el valor que tenga sem_op asociado a cada semáforo.
Error: Retornará un -1 y errno tendrá el código de error.Valores de la variable errno seguidamente:
![Page 15: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/15.jpg)
SEMÁFOROS
E2BIGEACCESEAGAINEFAULTEFBIG
EIDRMEINTREINVALENOMENERANGE
![Page 16: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/16.jpg)
SEMÁFOROS
Semctl(el control de los semáforos)
#include <sys/types.h> #include <sys/ipc.h> #include<sys/sem.h>
int semctl(int semid, int semnum, int cmd,union semun arg);
![Page 17: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/17.jpg)
SEMÁFOROS
semidsemnumargcmdEl parámetro cmd indica indica pues la
operación a realizar, y según su valor puede ser:
![Page 18: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/18.jpg)
SEMÁFOROS
IPC_STAT IPC_SET IPC_RMIDGETPID
GETNCNTGETVAL/SETVALGETALL/SETALL
![Page 19: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/19.jpg)
SEMÁFOROS
Descripción: Se accede a los valores que definen un semáforo.Dependiendo de la operación realizada su retorno será 0 o un valor positivo.
Error: Retornará un -1 y errno tendrá el código de error.
![Page 20: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/20.jpg)
SEMÁFOROS
En caso de error en errno:
EACCES EFAULT EIDRM EINVAL EPERM ERANGE
Exito se devuelve valor positivo o nulo dependiendo de cmd:
GETPID GETVAL GETNCNT GET2CNT
![Page 21: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/21.jpg)
MEMORIA COMPARTIDA
Conceptos Enviar datos de un proceso a otro Compartir una parte de su espacio de
direccionamiento. Obligan implementar un mecanismo de
sincronización de accesos
![Page 22: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/22.jpg)
MEMORIA COMPARTIDA
Estructura shmid_ds:Entrada en la tabla de memorias compartidas.
Struct shmid_ds{
struct ipc_perm;
int shm_shmgsz;
time_t shm_atime;
time_t shm_dtime;
time_t shm_ctime;
unsigned short shm_cpid;
![Page 23: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/23.jpg)
MEMORIA COMPARTIDA
unsigned short shm_lpid;
short shm_nattch;
unsigned short shm_npages;
unsigned long * shm_pages;
struct attaches;
vm_area_struct *;
};
![Page 24: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/24.jpg)
MEMORIA COMPARTIDA
Estructura shminfo:Utilizada sólo por el núcleo. Se utiliza en una llamada a shmctl con IPC_INFO como argumento.
struct shminfo{
int shmax;
int shmmin;
int shmmni;
int shmseg;
int shmall;
};
![Page 25: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/25.jpg)
MEMORIA COMPARTIDA
Llamadas al sistema:
shmget: Creación y búsqueda de una zona de memoria compartida.
shmctl: Control de las zonas de memorias compartidas.
shmat: Vincular una zona de memoria.
shmdt: Desvincular una zona de memoria.
![Page 26: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/26.jpg)
MEMORIA COMPARTIDA
shmget (creación y búsqueda de una zona de memoria
compartida) #include <sys/ipc.h> #include<sys/shm.h> int shmget (key_t, int size, int option);
![Page 27: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/27.jpg)
MEMORIA COMPARTIDA
key_t
size
option
Campo I: IPC_CREAT IPC_EXL
Campo II:
00X00 Usuario 000X0 Grupos 0000X Otros
![Page 28: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/28.jpg)
MEMORIA COMPARTIDA
Descripción: Retorna un descriptor de región de memoria compartida. Si no existe descriptor y se especifica IPC_CREAT creará uno.
Error: Retornará un -1 y errno tendrá el código de error.
![Page 29: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/29.jpg)
MEMORIA COMPARTIDA
• Tamaño especificado debe ser inferior o igual al de
la memoria existente.
• En otro caso el tamaño asignado debe ser múltiplo
de PAGE_SIZE
![Page 30: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/30.jpg)
MEMORIA COMPARTIDA
Valores que puede tomar la variable errno:
ENOMEN EINVAL ENOENT EEXIST
EIDRM EACCES, EPERM EFAULT ENOSPC
![Page 31: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/31.jpg)
MEMORIA COMPARTIDA
shmat (vincular de una zona de memoria)
#include <sys/ipc.h> #include<sys/shm.h> void *shmat (int shmid, const void *shmaddr,
int option);
![Page 32: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/32.jpg)
MEMORIA COMPARTIDA
shmid*shmaddroption
shmaddr == NULL entonces el SO intenta encontrar una zona de memoria libre
![Page 33: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/33.jpg)
MEMORIA COMPARTIDA
Si no, el sistema operativo intenta vincular la memoria compartida a la dirección especificada
Si se especifica la opción SHM_RND, el
sistema intenta vincular la zona de
memoria a una dirección múltiplo de
SHMLBA lo más próxima posible a la
especificada.
![Page 34: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/34.jpg)
MEMORIA COMPARTIDA
SHM_RDONLYNo existe un medio para escritura exclusiva Esta llamada al sistema actualiza los
parámetros siguientes de la estructura shmid_ds: shm_atime recibe la fecha actual; shm_lpid recibe el pid del proceso que llama; shm_nattch se incrementa en una unidad.
![Page 35: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/35.jpg)
MEMORIA COMPARTIDA
Ejecución correcta: conectará una región de
memoria compartida a la memoria de
usuario.
Error: Retornará un -1 y errno tendrá el código de error.
![Page 36: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/36.jpg)
MEMORIA COMPARTIDA
La variable errno puede tomar uno de los valores siguientes: EACCES EINVAL ENOMEN EIDRM
![Page 37: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/37.jpg)
MEMORIA COMPARTIDA
Shmdt (desvincular una zona de una zona de memoria)
#include<sys.types.h>
#include <sys/ipc.h>
#include<sys/shm.h>
void *shmat (int shmid, const void *shmaddr,
int option);
![Page 38: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/38.jpg)
MEMORIA COMPARTIDA
Shmct (Control de las zonas de memoria compartidas)
#include <sys/ipc.h>
#include<sys/shm.h>
int shmct (int shmid, int cmd,
struct shmid_ds *buf);
![Page 39: SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.](https://reader035.fdocumento.com/reader035/viewer/2022062520/5665b49c1a28abb57c92a42d/html5/thumbnails/39.jpg)
MEMORIA COMPARTIDA
Diferentes usos: IPC_STAT IPC_SET IPC_RMID
opciones específicas de Linux SHM_LOCK SHM_UNLOCK