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.

Slides:



Advertisements
Presentaciones similares
Memoria Compartida Llave de acceso Segmento Compartido 1234 estructura
Advertisements

Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Creación y destrucción de objetos
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
T5-multithreading SO-Grado Q1.
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Comunicación y sincronización de procesos
Programación I Teoría IV
Modelo de procesos de dos estados
Capitulo 4 Excepciones.
Informática II Prof. Dr. Gustavo Patiño MJ
Comunicación entre procesos en Linux
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Comunicación y sincronización de procesos Comunicación por tuberías.
Johanna Lizeth Rodríguez Lorena Fda. Chávarro Ramos
Servidor de Batalla Naval.
Unidad 3 Punteros.
Por: Santiago Toro Rendón Raquel Sepúlveda.  El SO se instala en una sección definida de la unidad de disco duro, denominada partición de disco. Existen.
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Informática Ingeniería en Electrónica y Automática Industrial
Archivos. fopen(...) Para comenzar a utilizar un archivo primero se debe abrir, invocando a la función fopen(...) FILE * fopen(char* nombre_arch, char*
Signal, kill, sigaction y máscara de señales
SCJP Sun Certified Programmer for Java 6
LENGUAJE “C” Programación.
PROGRAMACION II.  Es un conjunto de datos no necesariamente del mismo tipo, los cuales se podrán manipular o realizar cualquier operación sobre cada.
Semana 5 Subprogramas..
Unidad III Elementos del lenguaje C++
Unidad III Administración de procesos
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
Archivos.
Estructuras.
Process M.C. Juan Carlos Olivares Rojas Operating Systems February, 2009.
Informática Ingeniería en Electrónica y Automática Industrial
FACILIDADES IPC MC Hilda Castillo Zacatelco.
Clase 10: Estructuras de datos y arreglos.
Tipo de Datos Básicos.
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
OBJETOS DISTRIBUIDOS E INVOCACIÓN REMOTA ING. MARISCAL.
Asignación de Espacio No Contiguo
El lenguaje de programación C - Vectores y matrices -
Archivos Programación I MC Beatriz Beltrán Martínez.
Capítulo 7 Gestión de memoria.
Unidad III Mecanismos de protección M.C. Juan Carlos Olivares Rojas.
Sistemas Operativos Semáforos.
Informática Ingeniería en Electrónica y Automática Industrial
Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.
Programación en C para electrónicos
Memoria Compartida Distribuida José A. Gil Salinas Universidad Politécnica de Valencia Departamento de Informática de Sistemas y Computadores.
E/S Avanzada E/S Avanzada Programación de Sistemas.
Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.
Sincronización de Procesos
Elementos básicos del lenguaje
 En computación es un conjunto de líneas de señal que el microprocesador o CPU utilizan para intercambiar datos con otros componentes como teclados,
El núcleo del sistema operativo
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Computación II Capitulo VII Punteros. Presentación de la unidad Objetivos: –Ser capaces de utilizar punteros. –Comprender las relaciones entre punteros,
Unidad 2 – Gestión de Procesos
IPC : SEMÁFOROS. Carmelo Quintana Hernández, Miguel Ramírez Alemán
Lenguaje de programación c
MEMORIA DINÁMICA.
Desarrollador Profesional de Juegos Programación III Unidad II Hilos de ejecución Threads.
Tema 1. Estructuras de datos Objetivo: Objetivo: El alumno resolverá problemas de almacenamiento, recuperación y ordenamiento de datos y las técnicas de.
Módulo 7: Resolución de nombres NetBIOS mediante el Servicio de nombres Internet de Windows (WINS)
Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Sincronización de Procesos
Transcripción de la presentación:

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

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

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

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

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;

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

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.

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

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

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.

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

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

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

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:

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

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

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:

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

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.

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

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

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;

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

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

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.

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

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

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.

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

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

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

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

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.

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.

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.

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

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

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

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