Unidad de Arquitectura de Ordenadores y Sistemas Operativos. Shared Memory & Semaphores

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Unidad de Arquitectura de Ordenadores y Sistemas Operativos. Shared Memory & Semaphores"

Transcripción

1 Unidad de Arquitectura de Ordenadores y Sistemas Operativos Shared Memory & Semaphores Recopilado por: Remo Suppi Octubre 1997 Publicación exclusiva para fines docentes Bibliografia: Advanced Unix Programming-Rockhind, Solaris 2.5 User s manuals o comando man Semáforos en Unix System V Estos apuntes son una breve introducción a la utilización de semáforos en sistema operativo Unix SV. Para mayor detalle recurra a la bibliografía recomendada y a los manuales de usuario/programador. Introducción: La utilización de mensajes para sincronizar procesos, si bien es mucho más eficiente que utilizar archivos, introducen una carga considerable en el sistema ya que el contenido del mensaje se 'mueve' entre los procesos. Una alternativa más eficiente sería incrementar/decrementar en forma controlada una variable. Unix SV posee un conjunto de llamadas específicas para trabajar con estas variables denominadas semáforos. Estas llamadas son más elaboradas que las utilizadas P & V (Wait & Signal - Down & Up) utilizadas en la bibliografía de Sistemas Operativos (por ejemplo W. Stalling). Estas llamadas son complejas para describirlas completamente debido a sus múltiples prosibilidades ( "To be honest, I must admit that I don t understand them completely" Rockhind). Aqui se describirá su utilización y la implementación de las primitivas P & V, pero para mayor referencia utilizar el Programmer User s Manual - Solaris 2.5 (o comando man). Existen tres llamadas para trabajar con semáforos: #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> int semget(key, nsems, flags) /*obtiene el sid (identificador del semáforo)*/ key_t key; /*Llave del semáforo*/ int sems; /*Cantidad de semáforos*/ int flags; /*Opciones*/ Retorna el sid (semaphore set identificator) del semáforo o -1 sobre un error int semop(sid, ops, nops) /*opera sobre un semáforo*/ int sid; /*ID del semáforo*/ struct sembuf (*ops)[]; /*Ptr al array de operaciones*/ size_t nops; /*Nº de operaciones*/ Retorna el valor del semáforo previo a la última operación o -1 sobre un error int semctl(sid, snum, cmd, arg) /*Control sobre un semáforo*/ int sid; /*ID del semáforo*/ int snum; /*Nº del semáforo*/ int cmd; /*Comando*/ union *arg; /*Argumentos*/ Retorna el valor dependiendo del comando o -1 sobre un error Semget obtiene un array de semáforos, y ellos son manjados todos a la vez -atómicamente- por un array de operaciones dado en Semop. Semget traslada una LLAVE (key) sobre un ID que representa un conjunto de semáforos. Si el bit de IPC_CREAT que existe en flags está activo, el set de semáforos es

2 creado si no existe. Existen nsems semáforos en el conjunto y la numeración de los semáforos comineza en 0. NO existe ningún problema que nsems=1 por lo cual el conjunto de semáforos tendrá solo un elemento. Semop es utilizado para operar sobre el semáforo (adquire & release). Ops es una estructura con tres enteros: struct sembuf short sem_num; /*Nº del semáforo*/ short sem_op; /*Operación*/ short sem_flg; /*Opciones de operación*/ La operación puede ser positiva o negativa o cero. A diferencia de la primitiva P, la cual se espera hasta que el semáforo pueda ser decrementado en 1, esta permite esperar hasta que el semáforo pueda ser decrementado por una cantidad arbitraria. Esta característica incluye los valores -1 y 1 las cuales corresponderían a P y V. If op=-1 el proceso se bloqueará hasta que el semáforo pueda ser decrementado en 1 sin que el valor sea negativo. Si op=1 el semáforo es incrementado en 1. Para ambas operaciones, flags puede ser igual a SEM_UNDO, el cual permite que P y V sean balanceadas automáticamentecuando el proceso realiza un exit. Semctl puede ser utilizado para interrogar o cambiar el dueño de un semáforo, permisos, etc. También permite obtener cuantos procesos están esperando sobre un semáforo y el identificador del proceso (pid) del último que cambio su valor. P & V implementadas con las llamadas Semget & Semop Para implementar estas primitivas, se ha utilizado una función -semcreat- que traslada la LLAVE al SID (indentificador del conjunto de semáforos). En general, semcreat será llamada una vez al cominezo de cada proceso que utiliza el semáforo. #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> int semcreat(key) /*Traslada key en SID*/ int key; int sid; if ((sid = semget ((key_t)key, 1, 0666 IPC_CREAT)) == -1) perror("semcreat: "); return (sid); static void semcall(sid, op) /*Opera sobre el semáforo*/ int key; int op; struct sembuf sb; sb.sem_num = 0; sb.sem_op = op; sb.sem_flg = 0; if (semop (sid, &sb, 1) == -1) perror("semcall: "); void P(sid) /*Adquiere el semáforo*/ int sid; semcall (sid, -1);

3 void V(sid) /*Libera el semáforo*/ int sid; semcall (sid, 1); Esta implementación de P & V es mucho más rápida en tiempo de ejecución que utilizando mensajes o FIFOS y por supuesto que utilizando archivos. Memoria compartida (Shared Memory) - Introducción La forma más rápida de que un proceso tenga la misma información que otro es no mover los datos entre procesos sino compartirlos. El que envía (Sender) y el que recibe (Receiver) comparten alguna zona de memoria principal, y cuando el dato es colocado aquí por el S, el dato es instantaneamente disponible para ser utilizado por el R. Un semáforo o mensaje deberá ser utilizado para preveer que el R no lea los datos antes que los mismos estén disponibles y prevenir que el S escriba nuevos datos antes que los anteriores hayan sido leídos por el R. Unix SV soporta shared memory entre un conjunto (cualquiera) de procesos. La memoria compartida es llamada segmento. Cada proceso puede tener diferentes zona de memoria compartida entre diferentes subconjuntos de procesos y cada proceso podrá acceder a las zonas de memoria que comparte. El segmento de memoria es creado al inicio fuera del espacio de direcciones de cada proceso, por ello cada proceso que desee acceder a esta zona compartida ejecutará una llamada al sistema para "mapear" esta zona dentro de su espacio de direcciones. Una vez realizada esta operación, acceder a la zona compartida es equivalente a acceder a una variable local del proceso. Memoria compartida (Shared Memory) en Unix SV Las llamadas de al Shared Memory (SHM) tienen algún parecido a las utilizadas en semáforos. #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> int shmget(key, nbytes, flags) /*obtiene el segment-id de la SHM*/ key_t key; /*Llave*/ int nbytes; /*tamaño del segmento*/ int flags; /*Opciones*/ Retorna el segment-id o -1 sobre un error int *shmat(segid, addr, flags) /*"Mapea" el segment en la zona de memoria del usuario*/ int segid; /*ID del segment*/ char *addr;/*posición deseada*/ int flags; /*Opciones*/ Retorna la dirección del segmento o -1 sobre un error int shmdt(addr) /*"Libera" el segment de la zona de memoria del usuario*/ char *addr;/*dirección del segmento*/ Retorna 0 si bien o -1 sobre un error int shmctl(segid, cmd, sbuf) /*Control sobre un segment*/ int sid; /*ID del segment*/ int cmd; /*Comando*/ struct shmid_ds *sbuf; /*Puntero al status buffer*/ Retorna 0 si bien o -1 sobre un error Shmget traslada la LLAVE en un identificador de segmento. Si el flags es IPC_CREATE, el segmento es creado. Los 9 bits menos significativos de flags son los permisos; permiso de lectura significa sólo lectura, mientras que escritura significa lectura y escritura.

4 Shmat "mapea" (attach) un segmento de SHM creado con shmget dentro del espacio de direcciones del usuario. El usuario de este segmento puede solicitar un lugar en particular indicando la dirección por medio de addr. Si este valor es igual a 0, el kernel del operativo seleccionará un dirección (recomendable). Shmat retornará un puntero al número de bytes solicitados. A partir de aquí se puede leer-escribir datos utilizando los operadores normales de C. Otro proceso que necesite compartir estos datos, "mapeará" este segmento (identificado por key) en su espacio de direcciones. A partir de este momento los procesos puede comaprtir datos libremente. Shmdt es ultizado para liberar un segmento compartido cuando se lo no necesite más. El segmento de memoria no desaparece, sino que desde el proceso que realiza el shmdt no es visible, pudiendo mapearlo nuevamente. El segmento puede ser destruido utilizando Shmctl con el comando IPC_RMID. Debe tenerse cuidado con esta llamada ya que es un error serio destruir un segmento que está "mapeado" en el espacio de direcciones de otro proceso. Detalles sobre las Llamadas: Los flags que utiliza shmat() están dados por una unión de diferentes elementos (generalmente se hace con un and o un or ). En el manual cada uno de los operandos del or se denominan token. Los token que pueden ser utilizados como permisos para la zona de memoria asociada pueden ser interpretados como los siguientes: READ by user WRITE by user READ by group WRITE by group READ by others WRITE by others Cualquier combinación válida de estos valores es posible por ejemplo Consultar Shared Memory Operation Permissions de intro en la sección 2 del manual para más información (man -s 2 intro). El SHM segment es "mapeado" al segmentos de datos de un proceso cuando el proceso lo solicita a través de shmat() (Cuando (flags&shm_share_mmu) es verdadero el segmento en cuestión es shared y además puede ser compartido por los restantes procesos que los soliciten) y la dirección especificada sigue algunos de los criterios siguientes: Si shmadd es igual a ( void *) 0, el segmento es "mapeado" a la primera dirección disponible seleecionada por el SOp. Si shmadd es igual a (void *) 0 y (flags&shm_share_mmu) es verdadero, el segmento es "mapeado a la primera dirección "aliñada" (first available aligned address). Ver las NOTAS en el manual para más detalles. Si shmadd NO es igual a ( void *) 0 y (flags&shm_rnd) es verdadero el segmento es "mapeado en la dirección dada por ( shmaddr - ( shmaddr modulus SHMLBA)). Si shmadd NO es igual a ( void *) 0 y (flags&shm_rnd) es falso, el segmento es "mapeado en la dirección dada por shmaddr. El segmento es asociado para lectura si (flags&shm_ronly) es verdadero, caso contario es asociado como lectura escritura. Cuando (flags&shm_share_mmu) es verdadero, los permisos dados por semget() determinan si el segmento asociado es de lectura o lectura/escritura. La llamada shmat retorna la dirección del segmento asociado cuando no existen errores o -1 cuando existen, la variable errno indica el tipo del error (utilizar perror() para visualizar el error) que pueden ser de los siguiente tipos (ver el manual para su significado): EMFILE ENOMEM

5 Los flags que utiliza shmctl() provee una variedad de control sobre las operaciones efectuadas sobre la SHM y es especificado por cmd. Los valores para los permisos de lectura/escritura son equivalente a los antes mencionados en shmat(). Existen un conjunto de operaciones específicas ue deben ser indicadas por los siguientes tokens: IPC_STAT: Ubica el valor actual de cada mienbro de la estructura de datos asociada con segid dentro de la estructura apuntada por sbuf. IPC_SET: Inicializa el valor de los mienbros de la estructura de datos asociada a segid al acoorespondiente valor en la estructura apuntada por sbuf: shmperm.uid, shmperm.gid, shmperm.mode /*solo accede a los bits de permisos*/. Este comando sólo puede ser ejecutado por el proceso que tiene el "effective user ID" igual al del super-usuario o al valor del shm_perm.cuid, o shm_perm.uid en la estructura de datos asociada con segid. IPC_RMID: Borra el SHM segment especidicado por segid del sistema y destruye las estructura de datos asociada a él. Este comando sólo puede ser ejecutado por el proceso que tiene el "effective user ID" igual al del super-usuario o al valor del shm_perm.cuid, o shm_perm.uid en la estructura de datos asociada con segid. SHM_LOCK: Bloquea la SHM segment especificada por segid. Este comando sólo puede ser ejecutado por el proceso que tiene el "effective user ID" igual al del super-usuario. SHM_UNLOCK: Desbloquea el SHM segmend especificada por segid. Este comando sólo puede ser ejecutado por el proceso que tiene el "effective user ID" igual al del super-usuario. Los errores que retorna esta función pueden ser del tipo: EFAULT ENOMEM EOVERFLOW EPERM Para shmget() un identificador de segmento y al estructura de datos asociada es creada para los bytes solicitados si uno de los siguientes valores es verdadero: key es igual a IPC_PRIVATE. key no tiene asociado un SHM y (flags&ipc_creat) es verdadero. La estructura de datos asociada con el nuevo segmento (cuando es creado) es inicializado con: shm_perm.cuid, shm_perm.uid, shm_perm.cgid y shm_permgid con el ID del usuario y grupo efectivo respepectivamnete del proceso que lo solicita. Los bits de permiso de shm_perm.mode con los bits indicados en flags (menos significativos). shm_segsz con el valor del tamaño del segmento. shm_lpid, shm_nattch, shm_atime y shm_dtime igual a 0. shm_ctime igual al valor del time actual. Como retorno da un entero no negativo que es el identificador del segmento. Caso contrario retorna un -1 y errno es inicializado con el tipo de errror. Los errores que retorna esta función pueden ser del tipo: EEXIST

6 ENOENT ENOMEM ENOSPC semctl() provee una variedad de operaciones de control indicadas por cmd. Los permisos son idicados por tokens análogos a los utilizados en shmctl(). Las operaciones sobre un semáforo identificado por sid, snum son las siguientes: GETVAL: retorna el valor del semáforo semval. SETVAL: inicializa el valor de semval al valor indicado en arg.val. (Cuando este comando es realizado, el valor semadj correspondiente a este semáforo en todos los procesos es borrado). Para ver el significado de estos valores consultar man -s 2 intro en el apartado de semáforos. GETPID: retorna el valor de sempid. GETCNT: retorna el valor de semncnt. GETZCNT: retorna el valor de semzcnt. GETALL: Lee los valores de los semáforos (semvals) en el array apuntado por arg.array SETALL: Inicializa los valores de los semáforos con el array apuntado por arg.array. Esta operación borra la variable semadj correspondiente al semáforo en todo los procesos. IPC_STAT: Inicializa el valor de cada mienbro de la estructura de datos asociada com sid en la estructura apuntada por arg.buf. El contenido de esta estructura está definido en man -s 2 intro. IPC_SET: Inicializa el valor de los datos del semáforo (asociado con sid) a partir de los valores pasados en la estructura arg.buf (sem_perm.uid, sem_perm.gid, sem_perm.mode) (solo puede ser ejecutado por el superusuario, o por el proceso que figura en sem_perm.cuid, sem_perm.uid asociado con sid -quien lo creó-). IPC_RMID: Borra el semáforo especificado por sid del sistema y destruye las estructuras de datos asociadas. Solo puede ser ejecutado por el superusuario, o por el proceso que figura en sem_perm.cuid, sem_perm.uid asociado con sid -quien lo creó-. Valores de retorno: Los siguientes cmd retornan como valor: GETVAL: el valor del semáforo. GETPID: el valor de sempid (int). GETNCNT: el valor de semncnt. GETZCNT: el valor de semzcnt. Todos los otros: 0 cuando todo está bien, -1 cuando existe error. Los errores que retorna esta función pueden ser del tipo: EFAULT EPERM EOVERFLOW ERANGE semget() retorna el id del semáforo asociado con la llave. El semáforo será creado si: key es igual IPC_PRIVATE key aún no tiene un semáforo asociado con esta y (flags&ipc_creat) es verdadero.

7 Cuando se crea un semáforo, sem_perm.cuid, sem_perm.uid, sem_perm.cgid, sem_perm.gid son inicializados con el ID del usuario efectivo y del grupo que está ejecutando el proceso. sem_perm.mode es inicializado con los bits menos significativos de flags, sem_nsems es inicializado a nsems, sem_otime igual a 0 y sem_ctime igual a la hora actual. La función retorna 0 si todo bien, -1 si existe errores (el valor del error estará en errno). Los errores (errno) que retorna esta función pueden ser del tipo: EEXIST ENOENT ENOSPC semop() es utilizada para realizar operaciones (en forma atómica -indivisible-) sobre todos los semáforos. La llamada int semop(int semid, struct sembuf *sops, size_t nops) utiliza sops que es un puntero a un array de estructuras que contendrán la operaciones para los semáforos en cuestion (recordar que el conjunto de semáforo está identificado por semid). Los miembros de cada una de estas estructuras está definido por: short sem_num /*número del semáforo*/ short sem_op /*operación a realizar*/ short sem_flg /*flags de operación*/ Se debe tener en cuenta que cada semáforo esta especificado por la pareja semid, sem_num. Por lo cual con la semop le podemos indicar en sops el array de punteros a esta estructura para modificar a la vez todo los semáforos de semid. nops es el número de estructuras que existe en el array sops. sem_op puede ser un valor negativo, positivo o 0, y la función realizará diferentes acciones según sea: Sem_op es un entero negativo Si el valor del semáforo (semval) es mayor o igual al valor absoluto de sem_op, el valor abs de sem_op es restado del valor de sem_val. También si (sem_flg&sem_undo) es verdadero el valor abs de sem_op es sumado al valor semadj de los procesos que lo utilizan (ver exit(2)). Si sem val es menor que el valor abs de sem_op y (sem_flg&ipc_nowait) es verdadero, semop() retorna inmediatamente. Si sem val es menor que el valor abs de sem_op y (sem_flg&ipc_nowait) es falso, semop() incrementa el semncnt (proceso bloqueados en el semáforo) asociado con el semáforo y suspende la ejecución del proceso hasta que una de las acciones siguientes ocurra: Semval cambia a un valor mayor o igual que el valor abs de sem_op. Cuando esto ocurre semncnt es decrementado y el valor se sem_op es restado de semval (idem 1er caso). El proceso está esperando por un semáforo -semid- y este es borrado del sistema con semctl(). La llamada semop() retornará con un error y erno será igual a EIDRM. El proceso que espera recibe una señal para terminar (abortar la ejecución), por lo cual el valor de semncnt es decrementado para mantener la coherencia del semáforo. Sem_op es un entero positivo El valor del sem_op es sumado al valor semval y si (sem_flg&sem_undo) es verdadero el valor de semopj es decrementado a semadj de lo procesos que lo utilizan.

8 Sem_op es cero Si el valor del semáforo semval es 0 semop() retorna inmediatamente. Si semval no es igual a cero y (sem_flg&ipc_nowait) es verdadero semop() retorna inmediatamente. Si semval no es igual a cero y (sem_flg&ipc_nowait) es falso, semop incrementa el valor de semzcnt asociado con el semáforo y bloque el proceso hasta que una de las siguiente situaciones ocurre: Semval cambia a cero, además el valor de semzcnt es decrementado. El semáforo es borrado del sistema por lo cual la operación retornará con un error EIDRM. El proceso que espera recibe una señal para terminar (abortar la ejecución), por lo cual el valor de semzcnt es decrementado para mantener la coherencia del semáforo. Los errores que retorna esta función pueden ser del tipo: EAGAIN EFAULT EFBIG EIDRM EINTR ENOSPC ERANGE Ejemplo de comunicación entre procesos utilizando Shared Memory y semáforos Consideremos cinco procesos ABCDE que necesitan compartir datos. A crea los procesos-estructuras de datos y pone los datos en SHM, BCDE leen de SHM y realizan algua modificación de los datos, DE escriben en la SHM los datos modificados, y finalmente BC leen de la SHM dichos datos. Para ello utilizaremos dos semáforos: el primero de ellos permitirá a DE escribir en la SHM cuando todos (4 procesos) hayan teminado de leer. El otro semáforo, permitirá que BC posteriormente lean los datos escritos por DE: Proceso A -sólo se muestra el código relevante- #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> #include <sys/sem.h> #define LLAVE ((key_t) 13) union semun /*estructura utilizada por semctl para inicializar los semáforos*/ int val; /*valor inicial del semáforo*/ struct semid_ds *buf; ushort *array; arg; DefinirEstructuras(int *shmid, int **shmptr, int *semid) *shmid = shmget(llave, 100*sizeof(int), IPC_CREAT 0666); /*SHM*/ if (*shmid < 0) perror("shmget"); exit(-1) *shmptr = (int *) shmat(*shmid,0,0); /*Mapea el segmento en cuestión*/ if ((*semid = semget (LLAVE, 2, IPC_CREAT 0666))

9 == -1) perror("semget"); exit(-2) /*Creo dos semáforos*/ arg.val = 4; semctl(*semid, 0, SETVAL, &arg); Inicializo el semáforo 0 a 4 arg.val = 2; semctl(*semid, 1, SETVAL, &arg); Inicializo el semáforo 1 a 2... /* aqui el proceso introduce los datos en la SHM */ CrearProcesos() char vid[2] /*... declaración de variables varias*/ for (i=1; i<5; i++) /*Creo Procesos*/ if (fork() == 0 ) printf ("Proceso %d creado", i); sprintf(vid, "%d", i); execlp("codigo_de_su_hijo", "Codigo _de_su_hijo", vid, NULL); Ejecuto el código del hijo con arg pasado en vid*/ for (i=1; i<5; i++) wait(0); /* Me espero que los hijos terminen*/ Liberar(int shmid, int *shmptr, int semid) shmdt ((char *)shmptr); shmctl (shmid, IPC_RMIID, 0); semctl (semid, 0, IPC_RMID, 0); semctl (semid, 0, IPC_RMID, 0); main(int argc, char *argv[]); int shmid, semid; Identificador de la SHM y conjunto de semáforos*/ int *shmptr; Puntero a la SHM DefinirEstructuras(&shmid, &shmptr, &semid); CrearProcesos(); ImprimirResultado(shmptr); Liberar(shmid, shmptr, semid); Proceso Xi (BCDE) -sólo se muestra el código relevante- #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> #include <sys/sem.h> #define LLAVE ((key_t) 13) struct sembuf ops; main(int arg_n, char *arg[]); int *ptr; /*puntero a la SHM */ int *mem_local; /*Memoria Local*/ int ident, semid;

10 mem_local = (int *)malloc (100*sizeof(int)); /*Obtengo la memoria local*/ ident = shmget (LLAVE, 100*sizeof(int), 0666); /*Obtengo la SHM*/ ptr = (int) shmat (ident, 0, 0); /*Mapeo la SHM en el espacio de usuario - ptr -*/ semid = semget (LLAVE, 2, 0666); /*Obtengo el identificador del semáforo*/ switch (arg[1][0]) case 1 : /* los procesos BC (1,2) hacen los mismo*/ case 2 : Load();/* leo los datos desde ptr y realizo algún trabajo - recordar que este será el B(C) y debe leer, esperar, y leer*/ ops.sem_num = 0; ops.sem_op = -1; /*decremento el semáforo 0 en 1*/ ops.sem_flg = 0; semop (semid, &ops, 1); ops.sem_num = 1; ops.sem_op = 0; /*Con este valor semop esperará hasta que el semáforo en cuestión sea 0 -aquí el sem Nº 1-*/ ops.sem_flg = 0; semop (semid, &ops, 1); Load();/*Ahora el proceso B(C) puede leer por segunda vez desde ptr*/ break; case 3 : /* los procesos DE (3,4) hacen los mismo*/ case 4 : Load();/* leo los datos desde ptr y realizo algún trabajo - recordar que este será el D(E) y debe leer, esperar y escribir */ ops.sem_num = 0; ops.sem_op = -1; /*decremento el semáforo 0 en 1*/ ops.sem_flg = 0; semop (semid, &ops, 1); ops.sem_num = 0; ops.sem_op = 0; /*Con este valor semop esperará hasta que el semáforo en cuestión sea 0 -aquí el sem Nº 0-*/ ops.sem_flg = 0; semop (semid, &ops, 1); Store();/*Ahora el proceso D(E) puede guardar la información en ptr porque cuando sem[0]=0 indicará que todos han terminado de leer*/ ops.sem_num = 1; ops.sem_op = -1; /*Decremento el sem[1] que es el que esperará BC para saber que DE han terminado de escribir*/ ops.sem_flg = 0; semop (semid, &ops, 1); break; shmdt ((char *) ptr);

Los semáforos en Unix

Los semáforos en Unix Los semáforos en Unix Semáforos multi-valuados, no binarios Se puede crear un arreglo de semáforos con una simple llamada Posibilidad de especificar una sola operación en un solo semáforo Posibilidad de

Más detalles

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Tema 6 : IPC del Unix System V Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Introducción El paquete de comunicación

Más detalles

Memoria Compartida. Llave de acceso. Segmento Compartido. estructura definida en A. estructura definida en B. Proceso B. Proceso A

Memoria Compartida. Llave de acceso. Segmento Compartido. estructura definida en A. estructura definida en B. Proceso B. Proceso A Memoria Compartida Llave de acceso 1234 Segmento Compartido apuntador estructura definida en A apuntador estructura definida en B Proceso A Proceso B Dr. Roberto Gómez Diapo No. 1 Librerías y estructuras

Más detalles

IPC SYSTEM V. Técnicas Digitales III Ing. Gustavo Nudelman 2011. Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

IPC SYSTEM V. Técnicas Digitales III Ing. Gustavo Nudelman 2011. Universidad Tecnológica Nacional - Facultad Regional Buenos Aires IPC SYSTEM V Técnicas Digitales III Ing. Gustavo Nudelman 2011 IPC System V En la década del 70, se incorpora a Unix una gran cantidad de funcionalidades llamadas System V entre las cuales aparecen tres

Más detalles

Memoria Compartida. Por: Samuel Díaz Cabrera

Memoria Compartida. Por: Samuel Díaz Cabrera Memoria Compartida Por: Orlando Alemán Ortiz Samuel Díaz Cabrera Qué veremos? Introducción Comunicación entre procesos Comunicación en Unix (IPC) Memoria Compartida tda Utilización de M.C. Llamadas al

Más detalles

Prácticas de Sistemas Operativos

Prácticas de Sistemas Operativos Prácticas de Sistemas Operativos Toñi Reina, David Ruiz, Juan Antonio Álvarez, Antonio Tallón, Javier Gutiérrez, Pablo Neira, Paco Silveira, Francisco Javier Cuberos y Sergio Segura Boletín 6: Semáforos

Más detalles

Parte Práctica Adicional del Coloquio o Examen Final de Sistemas Operativos 2014.

Parte Práctica Adicional del Coloquio o Examen Final de Sistemas Operativos 2014. Parte Práctica Adicional del Coloquio o Examen Final de Sistemas Operativos 2014. Probar los códigos presentados en el trabajo de Semáforos que se encuentra a continuación, probarlos, corregirlo y establecer

Más detalles

Prácticas de Sistemas Operativos

Prácticas de Sistemas Operativos Prácticas de Sistemas Operativos Juan Antonio Álvarez, Toñi Reina, David Ruiz, Antonio Tallón, Pablo Neira, José Ángel Bernal y Sergio Segura Boletín 6: Semáforos Curso 2006/07 Índice 1. Introducción 2

Más detalles

Prácticas de Sistemas operativos

Prácticas de Sistemas operativos Prácticas de Sistemas operativos David Arroyo Guardeño Escuela Politécnica Superior de la Universidad Autónoma de Madrid Séptima semana: semáforos 1 Cronograma semanal 2 Introducción 3 Ejemplo 1 4 Ejemplo

Más detalles

Mecanismos de IPC's. Pipes

Mecanismos de IPC's. Pipes Mecanismos de IPC's Para la comunicación entre procesos se disponen de varios mecanismos: Pipes Named Pipes (FIFOS) File Locking System V IPC's Message queues Semaphores Shared Memory Mem. Mapped Files

Más detalles

Práctica 2. Teoría. Memoria Compartida y Semáforos

Práctica 2. Teoría. Memoria Compartida y Semáforos Práctica 2 Grupos Realización Entrega/Evaluación Lunes 22 de Marzo, 12 y 19 de Abril 26 de Abril Martes 23 de Marzo, 13 y 20 de Abril 27 de Abril Miércoles 24 de Marzo, 14 y 21 de Abril 28 de Abril Viernes

Más detalles

Prácticas de Sistemas operativos

Prácticas de Sistemas operativos Prácticas de Sistemas operativos David Arroyo Guardeño Escuela Politécnica Superior de la Universidad Autónoma de Madrid Octava semana: semáforos 1 Cronograma semanal 2 Introducción 3 Ejemplo 1 4 Ejemplo

Más detalles

Comunicación entre Procesos

Comunicación entre Procesos Sincronización y Comunicación de Procesos Sincronización y Comunicación de Procesos Sincronización Sincronización Comunicación Comunicación Condiciones de Condiciones de Carrera Carrera Memoria Memoria

Más detalles

Semáforos. Eloy García Martínez Lorena Ascensión Olivero

Semáforos. Eloy García Martínez Lorena Ascensión Olivero Semáforos Eloy García Martínez Lorena Ascensión Olivero 1 Introducción El concepto de semáforo nace de la necesidad de crear un sistema operativo en el que puedan trabajar procesos cooperantes -> Dijkstra(1965)

Más detalles

LECCIÓN 23: SEMÁFOROS

LECCIÓN 23: SEMÁFOROS LECCIÓN 23: SEMÁFOROS LECCIÓN 23: SEMÁFOROS... 1 23.1 Conceptos... 1 23.2 Estructuras... 2 23.3 Llamadas al sistema... 5 23.4 Ejemplo de uso de semáforos... 11 23.5 Código fuente de semáforos... 13 sys_semget...

Más detalles

Mecanismos IPC System V

Mecanismos IPC System V Mecanismos IPC System V Ampliación de Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Mecanismos IPC System V: generalidades (1) Existen tres tipos de mecanismos IPC

Más detalles

Sistemas Operativos I. Enxeñería Informática. Curso 2007/08. Práctica 2: Concurrencia de procesos: Productores/Consumidores.

Sistemas Operativos I. Enxeñería Informática. Curso 2007/08. Práctica 2: Concurrencia de procesos: Productores/Consumidores. Sistemas Operativos I. Enxeñería Informática. Curso 2007/08. Práctica 2: Concurrencia de procesos: Productores/Consumidores. En esta práctica se tratará de resolver el problema de los productores/consumidores

Más detalles

System V MENSAJES. Francisco Javier Montero Vega Francisco García Rodríguez DSO 2004-05

System V MENSAJES. Francisco Javier Montero Vega Francisco García Rodríguez DSO 2004-05 IPC en Unix System V MENSAJES Francisco Javier Montero Vega Francisco García Rodríguez DSO 2004-05 1 Inter-Proces Comunicaction Paso de mensages(colas) Sincronización (semáforos, cerrojos) Memoria compartida

Más detalles

Prácticas de Sistemas operativos

Prácticas de Sistemas operativos Prácticas de Sistemas operativos David Arroyo Guardeño Escuela Politécnica Superior de la Universidad Autónoma de Madrid Sexta semana: memoria compartida Segunda práctica 1 Memoria compartida: ejercicio

Más detalles

PROGRAMACIÓN CON LLAMADAS AL SISTEMA POSIX (INTRODUCCIÓN A LA PROGRAMACIÓN CON UNIX/LINUX)

PROGRAMACIÓN CON LLAMADAS AL SISTEMA POSIX (INTRODUCCIÓN A LA PROGRAMACIÓN CON UNIX/LINUX) PROGRAMACIÓN CON LLAMADAS AL SISTEMA POSIX (INTRODUCCIÓN A LA PROGRAMACIÓN CON UNIX/LINUX) 1- LLAMADAS AL SISTEMA: 1.1- Interfaz del programador: La interfaz del sistema operativo con el programador es

Más detalles

MC Hilda Castillo Zacatelco PROCESOS

MC Hilda Castillo Zacatelco PROCESOS MC Hilda Castillo Zacatelco hildacz@gmail.com PROCESOS Definición y atributos Un proceso es la instancia de un programa en ejecución. Desde el punto de vista del SO, un proceso es la entidad más pequeña

Más detalles

IPC Repaso: Procesos

IPC Repaso: Procesos Inter-process Communication (C): Repaso Un repaso al uso de Procesos Estructura de un proceso Creación de procesos Señales Inter-Process Communication (C) Tuberías (pipes) y FIFOs Mecanismos C Semáforos

Más detalles

Seguridad en el Sistema de Archivos. Dr. Alonso Ramírez Manzanares 23-Nov-2010

Seguridad en el Sistema de Archivos. Dr. Alonso Ramírez Manzanares 23-Nov-2010 Seguridad en el Sistema de Archivos Dr. Alonso Ramírez Manzanares 23-Nov-2010 Seguridad La protección de la información es algo muy valioso, la información es una moneda en si. Esto va muy asociado a los

Más detalles

Memoria compartida y semáforos r/w. La página del manual que podría servir para describir estas funciones es la siguiente:

Memoria compartida y semáforos r/w. La página del manual que podría servir para describir estas funciones es la siguiente: (3 ptos) Memoria Compartida y Semáforos R/W 1. Objetivo En esta práctica se pretende crear una librería que dé la funcionalidad de un semáforo para resolver problemas con múltiples lectores y escritores

Más detalles

Introducción a Sistemas Operativos: Ficheros

Introducción a Sistemas Operativos: Ficheros Introducción a Sistemas Operativos: Ficheros Clips Fr ancisco J Ballesteros 1. Entrada/Salida Es importante saber cómo utilizar ficheros. En UNIX, es aún más importante dado que gran parte de los recursos,

Más detalles

Redirecciones y Tuberías

Redirecciones y Tuberías Redirecciones y Tuberías Ampliación de Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Redirecciones Redirección de la entrada y la salida estándar Unix/Linux definen

Más detalles

SISTEMAS OPERATIVOS I. CURSO 2010/11. PRÁCTICA 2: Problema de los Productores/Consumidores (concurrencia de procesos)

SISTEMAS OPERATIVOS I. CURSO 2010/11. PRÁCTICA 2: Problema de los Productores/Consumidores (concurrencia de procesos) SISTEMAS OPERATIVOS I. CURSO 2010/11 PRÁCTICA 2: Problema de los Productores/Consumidores (concurrencia de procesos) INTRODUCCIÓN: En esta práctica se tratará de resolver el problema de los productores/consumidores

Más detalles

PRÁCTICAS DE APLICACIONES DISTRIBUIDAS EN EQUIPO. Introducción: Cada práctica con lleva una previa investigación, la cual debe realizar cada equipo.

PRÁCTICAS DE APLICACIONES DISTRIBUIDAS EN EQUIPO. Introducción: Cada práctica con lleva una previa investigación, la cual debe realizar cada equipo. FECHA DE ENTREGA: Pendiente PRÁCTICAS DE APLICACIONES DISTRIBUIDAS EN EQUIPO Los equipos deberán están formados de la siguiente manera: - Tres equipos de 4 integrantes cada uno. Introducción: Cada práctica

Más detalles

Sistemas Operativos Practica 1: procesos y concurrencia.

Sistemas Operativos Practica 1: procesos y concurrencia. Sistemas Operativos Practica 1: procesos y concurrencia. Objetivos: Introducir al alumno a los conceptos de programa, concurrencia, paralelismo y proceso o tarea. Manejo del concepto de concurrencia haciendo

Más detalles

Sistemas Operativos Ingeniería de telecomunicaciones Sesión 3: Concurrencia

Sistemas Operativos Ingeniería de telecomunicaciones Sesión 3: Concurrencia Sistemas Operativos Ingeniería de telecomunicaciones Sesión 3: Concurrencia Calendario Comienzo: Lunes 2 de noviembre y miércoles 4 de noviembre. Entrega: 16 de noviembre y 18 de noviembre. 1. Requisitos

Más detalles

Taller de Sistemas Operativos. Linux Programming Interface Inter Process Communication (IPC)

Taller de Sistemas Operativos. Linux Programming Interface Inter Process Communication (IPC) Taller de Sistemas Operativos Linux Programming Interface Inter Process Communication (IPC) Agenda Introducción Colas de mensajes Memoria compartida Semáforos Implementación en el kernel GNU C Library

Más detalles

Biblioteca de sistema

Biblioteca de sistema * Para la realización del presente examen se aconseja un tiempo de 2 horas. Teoría 1. Explique en detalle cómo se pasa una llamada al sistema operativo. El sistema operativo se activa cuando debe responder

Más detalles

Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria

Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria Sistemas operativos UPCO ICAI Departamento de Electrónica y Automática 1 Hasta ahora hemos visto Relación programa-sistema operativo Gestión de memoria Reserva para la ejecución Pilas, heap, memoria de

Más detalles

COMUNICACIÓN ENTRE PROCESOS

COMUNICACIÓN ENTRE PROCESOS COMUNICACIÓN ENTRE PROCESOS () 1 Inter-Process Communication () Conjunto de técnicas para el intercambio de datos entre múltiples threads de diferentes procesos también permite la sincronización de procesos

Más detalles

Gestión de memoria. Yolanda Becerra Fontal Juan José Costa Prats

Gestión de memoria. Yolanda Becerra Fontal Juan José Costa Prats Gestión de memoria Yolanda Becerra Fontal Juan José Costa Prats Facultat d'informàtica de Barcelona Universitat Politècnica de Catalunya BarcelonaTech 2014-2015QT Índice Memoria dinámica Memoria virtual

Más detalles

Taller de Sistemas Operativos. Procesos 2012

Taller de Sistemas Operativos. Procesos 2012 Taller de Sistemas Operativos Procesos 2012 Agenda Introducción PCB (task_struct) Agrupaciones de procesos Estado de un proceso Cambio de proceso (task switch) Creación y destrucción de un proceso Threads

Más detalles

Sistemas operativos: una visión aplicada. Capítulo 5 Comunicación y sincronización de procesos

Sistemas operativos: una visión aplicada. Capítulo 5 Comunicación y sincronización de procesos Sistemas operativos: una visión aplicada Capítulo 5 Comunicación y sincronización de procesos Sistema multiprogramado con un una CPU Proceso A Proceso B Proceso C Tiempo Sistemas operativos: una visión

Más detalles

1. Interfaz de llamadas a la librería de fluxes

1. Interfaz de llamadas a la librería de fluxes 1. Interfaz de llamadas a la librería de fluxes Se presenta a continuación un interfaz de threads de usuario construido sobre los PThreads de OSF/1 (sistema operativo de alabi/alaba). El motivo de no utilizar

Más detalles

Funciones POSIX (I): Introducción

Funciones POSIX (I): Introducción Funciones POSIX I Funciones POSIX I Llamadas al Llamadas al Sistema Sistema Gestión Básica Gestión Básica de Procesos de Procesos Procesos Procesos fork fork Señales Señales getpid getpid Memoria Memoria

Más detalles

Tema 4: Gestión de Procesos

Tema 4: Gestión de Procesos Tema 4: Gestión de Procesos SSOO - Curso 2005/06 E. Domínguez C. Villarrubia Departamento de Tecnologías y Sistemas de Información Escuela Superior de Informática Universidad de Castilla - La Mancha Marzo

Más detalles

Sistemas Operativos. Procesos

Sistemas Operativos. Procesos Sistemas Operativos Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor de proceso

Más detalles

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Tema 5 : Comunicación entre Procesos mediante Tuberías Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Introducción Algunas

Más detalles

Clases 04 y 05: Repaso de programación de sistemas basados en UNIX

Clases 04 y 05: Repaso de programación de sistemas basados en UNIX Clases 04 y 05: Repaso de programación de sistemas basados en UNIX Prof. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco efranco.docencia@gmail.com Estructuras de datos (Prof.

Más detalles

Computación de Alta Performance Curso 2009 PROGRAMACIÓN PARALELA EN LENGUAJE C

Computación de Alta Performance Curso 2009 PROGRAMACIÓN PARALELA EN LENGUAJE C Computación de Alta Performance Curso 2009 MECANISMO DE PROGRAMACIÓN PARALELA EN LENGUAJE C AGENDA Mecanismos a estudiar. Fork. Pipes y FIFOs. System V IPC: Semáforos. Cola de mensajes. Memoria compartida.

Más detalles

Formatos para prácticas de laboratorio

Formatos para prácticas de laboratorio CARRERA PLAN DE ESTUDIO CLAVE ASIGNATURA NOMBRE DE LA ASIGNATURA IC 2003-1 5314 Sistemas Operativos PRÁCTICA No. 6 LABORATORIO DE NOMBRE DE LA PRÁCTICA Comunicación entre procesos Tuberías DURACIÓN (HORA)

Más detalles

Examen Final de Teoría. Grupo de teoría:

Examen Final de Teoría. Grupo de teoría: Preguntas Cortas (2 puntos) 1. Respecto a la optimización de gestión de memoria CoW, explica brevemente: a. Qué soporte hardware utiliza el sistema para poder implementarla? b. Qué permisos aplica el sistema

Más detalles

Prácticas de Sistemas operativos

Prácticas de Sistemas operativos Prácticas de Sistemas operativos David Arroyo Guardeño Escuela Politécnica Superior de la Universidad Autónoma de Madrid Tercera Semana: Comunicación entre procesos con Tuberías 1 Entregas 2 Introducción

Más detalles

directamente indirectamente

directamente indirectamente PUNTEROS EN C PUNTEROS Permiten simular el pasaje de parámetros por referencia. Permiten crear y manipular estructuras de datos dinámicas. Su manejo es de fundamental importancia para poder programar en

Más detalles

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS Caso 1: 1.- Necesitamos un cd o Dvd para grabar alguna de las versiones de livecd de Linux. 2.- Liga de una

Más detalles

SOLUCION EXAMEN junio 2006

SOLUCION EXAMEN junio 2006 SOLUCION EXAMEN junio 2006 1. Explique razonadamente si las siguientes afirmaciones son verdaderas o falsas: I) (1 p) En UNIX únicamente se distinguen dos tipos de procesos: los procesos de usuario y los

Más detalles

Tema 2. El lenguaje JAVA

Tema 2. El lenguaje JAVA Tema 2. El lenguaje JAVA Nomenclatura habitual Variables Tipos de variables Tipos primitivos Referencias Arrays Operadores Operadores de Java Precedencia de operadores Sentencias de control Sentencias

Más detalles

Sistemas Operativos sesión 12: tuberías

Sistemas Operativos sesión 12: tuberías Sistemas Operativos sesión : tuberías Grado en Ingeniería Informática Universidad Carlos III de Madrid Agenda Linux Comunicación con tuberías Ejercicios Agenda Linux Comunicación con tuberías Ejercicios

Más detalles

Práctica 1: Intérprete de mandatos. Sistemas Operativos Área de Arquitectura y Tecnología de Computadores

Práctica 1: Intérprete de mandatos. Sistemas Operativos Área de Arquitectura y Tecnología de Computadores Práctica 1: Intérprete de mandatos Introducción Desarrollo de un intérprete de mandatos (minishell) en UNIX/Linux en lenguaje C. Debe permitir: Ejecución de mandatos simples ls, cp, mv, rm, etc. Ejecución

Más detalles

Ejercicios sobre tuberías

Ejercicios sobre tuberías Boletín 3. Ejercicios sobre tuberías July 14, 016 1. Indica de manera justificada si las siguientes afirmaciones sobre la utilización de tuberías como mecanismo de sincronización entre dos procesos son

Más detalles

Usando el Sistema Operativo

Usando el Sistema Operativo Sistemas Operativos Pontificia Universidad Javeriana Enero de 2010 Los sistemas operativos Los sistemas operativos Perspectivas del Computador Concepto general El sistema operativo es parte del software

Más detalles

Funciones POSIX III Funciones POSIX III. No Nombrados Nombrados. sem_open sem_open. sem_close sem_close. sem_unlink sem_unlink

Funciones POSIX III Funciones POSIX III. No Nombrados Nombrados. sem_open sem_open. sem_close sem_close. sem_unlink sem_unlink Funciones POSIX III Funciones POSIX III Sincronización Sincronización Procesos Procesos Semáforos Semáforos (sem_t) (sem_t) Sincronización Sincronización Threads Threads Mutex Mutex (pthread_mutex_t) (pthread_mutex_t)

Más detalles

Punto muerto-interbloqueo

Punto muerto-interbloqueo Punto muerto-interbloqueo Que es interbloqueo? Un grupo de procesos permanentemente parados esperando cada uno por el otro. Ejemplo de interbloqueo Process P Process Q (1) Obtener A (5) Obtener B (2) Obtener

Más detalles

Introducción a Sistemas Operativos: Concurrencia

Introducción a Sistemas Operativos: Concurrencia Introducción a Sistemas Operativos: Concurrencia Clips xxx Fr ancisco J Ballesteros 1. Semáforos Quizá la abstracción más conocida para sincronizar procesos en programación concurrente controlar el acceso

Más detalles

Concurrencia, exclusión mutua y sincronización. Capítulo 5 HungriaBerbesi

Concurrencia, exclusión mutua y sincronización. Capítulo 5 HungriaBerbesi Concurrencia, exclusión mutua y sincronización Capítulo 5 HungriaBerbesi 1 Concurrencia Múltiples aplicaciones Aplicaciones estructuradas Estructura del sistema operativo 2 Concurrencia 3 Sección Crítica:

Más detalles

Bloque I: Principios de sistemas operativos

Bloque I: Principios de sistemas operativos Bloque I: Principios de sistemas operativos Tema 1. Principios básicos de los sistemas operativos Tema 2. Concurrencia Tema 3. Ficheros Tema 4. Sincronización y programación dirigida por eventos Tema 5.

Más detalles

Práctico 2: Funciones y Punteros en C La teoría general para este práctico puede consultarse en los Capítulos 4 y 5 Notas de Clase

Práctico 2: Funciones y Punteros en C La teoría general para este práctico puede consultarse en los Capítulos 4 y 5 Notas de Clase Práctico 2: Funciones y Punteros en C La teoría general para este práctico puede consultarse en los Capítulos 4 y 5 Notas de Clase 1. Ejecute el siguiente programa y diga que hace la función calcula: #include

Más detalles

Entrada y Salida de Archivos

Entrada y Salida de Archivos Entrada y Salida de Archivos E/S Básica de Archivo El servicio básico es sin buffering, a diferencias de la E/S estándar (stdio.h), dado que las primeras generan llamadas al sistema (read y write). Son

Más detalles

Tema 4: Modelos Teóricos de Control de la Concurrencia

Tema 4: Modelos Teóricos de Control de la Concurrencia Tema 4: Modelos Teóricos de Control de la Concurrencia CONTENIDO: El Problema de la Exclusión Mutua Concepto de Sección Crítica Algoritmos de Espera Ocupada Semáforos. Protocolos de E. Mutua, Sincronización

Más detalles

Procesos e Hilos en C

Procesos e Hilos en C Procesos e Hilos en C 6 de febrero de 2012 En esta sesión vamos a escribir programas en lenguaje C que utilicen hilos y procesos para comparar el rendimiento del sistema ante la gestión de unos y otros.

Más detalles

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos

Más detalles

Apellidos: Nombre: DNI: Parte Sistema Ficheros (Se deben contestar correctamente todas las cuestiones de cada pregunta para puntuar la misma).

Apellidos: Nombre: DNI: Parte Sistema Ficheros (Se deben contestar correctamente todas las cuestiones de cada pregunta para puntuar la misma). Apellidos: Nombre: DNI: Sistemas Operativos Grado Ingeniera Informática UDC. Julio 2016 Sólo puede usar lápiz, bolígrafo y calculadora. Tiempo máximo para todo el examen: 3h Parte Sistema Ficheros (Se

Más detalles

Procesos en UNIX. LABORATORIO DE SISTEMAS DE OPERACIÓN I (ci 3825) Prof. Yudith Cardinale

Procesos en UNIX. LABORATORIO DE SISTEMAS DE OPERACIÓN I (ci 3825) Prof. Yudith Cardinale LABORATORIO DE SISTEMAS DE OPERACIÓN I (ci 3825) Prof. Yudith Cardinale Un proceso en Unix es un programa en ejecución que tiene los siguientes atributos: Área de código, Área de datos, Área de stack,

Más detalles

Realizar el ejercicio anterior utilizando Punteros

Realizar el ejercicio anterior utilizando Punteros PUNTEROS Y ARRAYS En C existe una relación entre punteros y arrays tal que cualquier operación que se pueda realizar mediante la indexación de un arrays, se puede realizar también con punteros. Para clarificar

Más detalles

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

Laboratorio de Arquitectura de Redes. Entrada y salida estándar Laboratorio de Arquitectura de Redes Entrada y salida estándar Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato: scanf() El buffer de teclado Entrada

Más detalles

Prácticas de Sistemas operativos

Prácticas de Sistemas operativos Prácticas de Sistemas operativos David Arroyo Guardeño Escuela Politécnica Superior de la Universidad Autónoma de Madrid Segunda Semana: Procesos, Procesos Padre y Procesos Hijo, familia exec() 1 Entregas

Más detalles

Teoría. Procesos. Escuela Politécnica Superior Universidad Autónoma de Madrid 1

Teoría. Procesos. Escuela Politécnica Superior Universidad Autónoma de Madrid 1 Grupos Realización Entrega/Evaluación Lunes 22 de Febrero, 1, 8, 15 de Marzo 22 de Marzo Martes 23 de Febrero, 2, 9 y 16 de Marzo 23 de Marzo Miércoles 24 de Febrero, 3, 10 y 17 de Marzo 24 de Marzo Viernes

Más detalles

05 Funciones en lenguaje C. Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales

05 Funciones en lenguaje C. Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales 05 Funciones en lenguaje C Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales 1 Temario Programación funcional Declaración (prototipos) y definición de funciones

Más detalles

Facultad de Ingeniería Industrial y de Sistemas v1.1 MA781U CONCEPTOS INICIALES CASOS DE USO

Facultad de Ingeniería Industrial y de Sistemas v1.1 MA781U CONCEPTOS INICIALES CASOS DE USO CONCEPTOS INICIALES CASOS DE USO Preparado por: Angel Chata Tintaya (angelchata@hotmail.com) Resumen Se presenta el analisis funcional basico del sistema operativo desarrollado en RationalRose. I. PAQUETES

Más detalles

Objetos y memoria dinámica

Objetos y memoria dinámica Objetos memoria dinámica 1. Punteros a objetos 2. Vectores dinámicos de objetos 3. Uso de objetos dinámicos 4. Atributos dinámicos 5. Creación de objetos con atributos dinámicos 6. Destrucción de objetos

Más detalles

Sistemas Operativos 1

Sistemas Operativos 1 Ejercicio 1. Se desea implementar una aplicación de n procesos concurrentes, donde cada proceso ejecuta una determinada tarea en forma de pipeline. Un ejemplo de esta aplicación con n=4 sería la siguiente:

Más detalles

Tema 18: Memoria dinámica y su uso en C

Tema 18: Memoria dinámica y su uso en C Tema 18: Memoria dinámica y su uso en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1

Más detalles

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERIA MANUAL DE PRACTICAS DE APLICACIONES DISTRIBUIDAS

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERIA MANUAL DE PRACTICAS DE APLICACIONES DISTRIBUIDAS UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERIA MANUAL DE PRACTICAS DE APLICACIONES DISTRIBUIDAS Introducción: Cada practica con lleva una previa investigación y un tema visto en clase.

Más detalles

Archivos de números. Tema 10c. Archivos de números. Archivos de números. Archivos mixtos. Archivos mixtos. Manejo de archivos de datos en C

Archivos de números. Tema 10c. Archivos de números. Archivos de números. Archivos mixtos. Archivos mixtos. Manejo de archivos de datos en C Archivos de números Tema 10c Manejo de archivos de datos en C Para leer datos desde un archivo de texto como enteros (o números en general) se puede utilizar fscanf. Para escribir datos numéricos en archivos

Más detalles

Un ejemplo: UNIX PROCESOS UNIX

Un ejemplo: UNIX PROCESOS UNIX PROCESOS UNIX Un ejemplo: UNIX Cada proceso sólo puede tener un flujo: el concepto proceso engloba todo Dos llamadas implicadas en la creación de procesos crear proceso cargar programa La relación de procesos

Más detalles

TEMA 8. ESTRUCTURAS Y UNIONES.

TEMA 8. ESTRUCTURAS Y UNIONES. TEMA 8. ESTRUCTURAS Y UNIONES. Este capítulo examina estructuras, uniones, enumeraciones y s definidos por el usuario que permite a un programador crear nuevos s de datos. La capacidad para crear nuevos

Más detalles

Función monitoreo descriptor archivo #include <sys/types.h> #include<unistd.h> #include<errno.h> extern void procesamiento_datos(char *, int); void pr

Función monitoreo descriptor archivo #include <sys/types.h> #include<unistd.h> #include<errno.h> extern void procesamiento_datos(char *, int); void pr Introducción al concepto de threads Dr.. Roberto Gómez Cárdenas DCC del ITESM-CEM rogomez@itesm.mx http://homepage.cem.itesm.mx/rogomez Función monitoreo descriptor archivo #include #include

Más detalles

Tema 13: Manejo de archivos en lenguaje C

Tema 13: Manejo de archivos en lenguaje C Tema 13: Manejo de archivos en lenguaje C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco)

Más detalles

Analista Universtiario en Sistemas. Sistemas Operativos. IPC - Sockets SOCKETS

Analista Universtiario en Sistemas. Sistemas Operativos. IPC - Sockets SOCKETS SOCKETS Introducción Permiten la comunicación entre dos o más procesos ejecutando en un mismo equipo o equipos independientes La comunicación que posibilitan es full-duplex (bi-direccional) Sigue el modelo

Más detalles

Tema 3. Estructuras de control

Tema 3. Estructuras de control Tema 3. Estructuras de control 3.1. Secuencial 3.2. Selección 3.3. Repetición 2 Objetivos Objetivos del tema: Conocer y saber la utilidad de las tres estructuras de control (secuencial, alternativa y repetitiva)

Más detalles

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador. Departamento de Práctica Nº 9: Rango y precisión de representación de números en el ordenador. Uso de punteros Objetivos de la práctica: - Entender la representación de números (enteros y reales) en el

Más detalles

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto

Más detalles

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Procesos concurrentes y problemas en la comunicación y la sincronización

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Procesos concurrentes y problemas en la comunicación y la sincronización SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS Procesos concurrentes y problemas en la comunicación y la sincronización Contenido 2 Concurrencia. Condiciones de carrera. Exclusión mutua

Más detalles

Punteros y Memoria Dinámica I

Punteros y Memoria Dinámica I Memoria Punteros y Memoria Dinámica I Curso INEM. Programación en C++ Santiago Muelas Pascual smuelas@fi.upm.es! Lugar donde almacenan los datos y las instrucciones! Compuesta de un gran número de bytes!

Más detalles

Mensajes LECCIÓN 21: MENSAJES

Mensajes LECCIÓN 21: MENSAJES LECCIÓN 21: MENSAJES 21.1 Colas de mensajes... 1 21.2 Las estructuras básicas... 1 21.3 Creación y búsqueda de colas de mensajes... 3 21.4 Control de las colas de mensajes... 4 21.5 Emisión de mensajes...

Más detalles

Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C. Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas.

Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C. Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas. Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas. Febrero 2016 [Curso de programación en C] - Archivos & Cadenas 1/17 Archivos

Más detalles

Apuntadores (Punteros)

Apuntadores (Punteros) Apuntadores (Punteros) x9ff10 X int 209 SESION 7 *ptr Definición Llamados también punteros. Un Apuntador es una variable que contiene una dirección de memoria, la cual corresponderá a un dato o a una variable

Más detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

Introducción a la Programación

Introducción a la Programación Introducción a la Programación Fundamentos de Programación Ingeniería Informática en Sistemas de Información Alicia Troncoso 1 Contenido l Introducción l Mi primer programa l Etapas a seguir en la programación

Más detalles

Laboratorio de Sistemas Operativos

Laboratorio de Sistemas Operativos Laboratorio de Sistemas Operativos Juan Antonio Álvarez, Toñi Reina, David Ruiz, Antonio Tallón, Pablo Neira, José Ángel Bernal y Sergio Segura Boletín 7: Colas de Mensajes Curso 2006/07 Índice 1. Introducción

Más detalles

Introducción y Gestión de Procesos

Introducción y Gestión de Procesos Introducción y Gestión de Procesos Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Llamadas al sistema Concepto Constituye el juego de instrucciones del sistema operativo

Más detalles

PARTE II PROGRAMACION CON THREADS EN C

PARTE II PROGRAMACION CON THREADS EN C PARTE II PROGRAMACION CON THREADS EN C II.1 INTRODUCCION Una librería o paquete de threads permite escribir programas con varios puntos simultáneos de ejecución, sincronizados a través de memoria compartida.

Más detalles