La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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.

Presentaciones similares


Presentación del tema: "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."— Transcripción de la presentación:

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 deben compartir. l Tabla de semáforos

2 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... };

3 ESTRUCTURAS BÁSICAS §Estructura sembuf:Operación a realizar sobre un semáforo. Struct sembuf{ ushort sem_num; short sem_op; short sem_flg; };

4 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; };

5 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;

6 SÉMAFOROS int semmopm; int semume; int semusz; int semvmx; int semaem; };

7 SÉMAFOROS §LLAMADAS AL SISTEMA l Semget: Creación y búsqueda de grupos de semáforos. l Semctl: Control de los semáforos. l Semop: Operaciónes sobre los semáforos.

8 SEMÁFOROS §Semget ( creación y búsqueda de grupos de semáforos) l #include l int (key, int nsems,int semflg);

9 SEMÁFOROS §Key §nsems §semflg Campo II: Campo I: 00X00 IPC_CREAT 000X0 IPC_EXCL 0000X

10 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.

11 SEMÁFOROS §En este último caso, la variable errno toma uno de los valores siguientes: l EACCES l EEXIST l EIDRM l ENOMEN l ENOSPC

12 SEMÁFOROS §Semop( operaciones sobre los semáforos) l #include l int semop(int semid, struct sembuf * sops, unsigned nsops);

13 SEMÁFOROS §Semid §sops §nsops §Operaciones: l Valor estrictamente positivo l Valor nulo l Valor estrictamente negativo

14 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:

15 SEMÁFOROS §E2BIG §EACCES §EAGAIN §EFAULT §EFBIG §EIDRM §EINTR §EINVAL §ENOMEN §ERANGE

16 SEMÁFOROS §Semctl( el control de los semáforos) l #include l int semctl(int semid, int semnum, int cmd,union semun arg);

17 SEMÁFOROS §semid §semnum §arg §cmd §El parámetro cmd indica indica pues la operación a realizar, y según su valor puede ser:

18 SEMÁFOROS §IPC_STAT §IPC_SET §IPC_RMID §GETPID §GETNCNT §GETVAL/SETVAL §GETALL/SETALL

19 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.

20 SEMÁFOROS §En caso de error en errno: l EACCES l EFAULT l EIDRM l EINVAL l EPERM l ERANGE §Exito se devuelve valor positivo o nulo dependiendo de cmd: l GETPID l GETVAL l GETNCNT l GET2CNT

21 MEMORIA COMPARTIDA §Conceptos l Enviar datos de un proceso a otro l Compartir una parte de su espacio de direccionamiento. l Obligan implementar un mecanismo de sincronización de accesos

22 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;

23 MEMORIA COMPARTIDA unsigned short shm_lpid; short shm_nattch; unsigned short shm_npages; unsigned long * shm_pages; struct attaches; vm_area_struct *; };

24 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; };

25 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.

26 MEMORIA COMPARTIDA §shmget ( creación y búsqueda de una zona de memoria compartida ) l #include l int shmget (key_t, int size, int option);

27 MEMORIA COMPARTIDA §key_t §size §option §Campo I: l IPC_CREAT l IPC_EXL §Campo II: l 00X00 Usuario l 000X0 Grupos l 0000X Otros

28 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.

29 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

30 MEMORIA COMPARTIDA §Valores que puede tomar la variable errno: l ENOMEN l EINVAL l ENOENT l EEXIST l EIDRM l EACCES, EPERM l EFAULT l ENOSPC

31 MEMORIA COMPARTIDA shmat ( vincular de una zona de memoria ) l #include l void *shmat (int shmid, const void *shmaddr, int option);

32 MEMORIA COMPARTIDA §shmid §*shmaddr §option l shmaddr == NULL entonces el SO intenta encontrar una zona de memoria libre

33 MEMORIA COMPARTIDA l Si no, el sistema operativo intenta vincular la memoria compartida a la dirección especificada l 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.

34 MEMORIA COMPARTIDA §SHM_RDONLY §No existe un medio para escritura exclusiva §Esta llamada al sistema actualiza los parámetros siguientes de la estructura shmid_ds: l shm_atime recibe la fecha actual; l shm_lpid recibe el pid del proceso que llama; l shm_nattch se incrementa en una unidad.

35 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.

36 MEMORIA COMPARTIDA §La variable errno puede tomar uno de los valores siguientes: l EACCES l EINVAL l ENOMEN l EIDRM

37 MEMORIA COMPARTIDA Shmdt (desvincular una zona de una zona de memoria) #include void *shmat (int shmid, const void *shmaddr, int option);

38 MEMORIA COMPARTIDA Shmct ( Control de las zonas de memoria compartidas ) #include int shmct (int shmid, int cmd, struct shmid_ds *buf);

39 MEMORIA COMPARTIDA §Diferentes usos: l IPC_STAT l IPC_SET l IPC_RMID §opciones específicas de Linux l SHM_LOCK l SHM_UNLOCK


Descargar ppt "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."

Presentaciones similares


Anuncios Google