Unidad de Arquitectura de Ordenadores y Sistemas Operativos. Shared Memory & Semaphores
|
|
- Benito Maestre Muñoz
- hace 7 años
- Vistas:
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 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 detallesSistemas 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 detallesMemoria 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 detallesIPC 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 detallesMemoria 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 detallesPrá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 detallesParte 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 detallesPrá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 detallesPrá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 detallesMecanismos 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 detallesPrá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 detallesPrá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 detallesComunicació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 detallesSemá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 detallesLECCIÓ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 detallesMecanismos 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 detallesSistemas 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 detallesSystem 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 detallesPrá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 detallesPROGRAMACIÓ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 detallesMC 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 detallesIPC 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 detallesSeguridad 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 detallesMemoria 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 detallesIntroducció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 detallesRedirecciones 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 detallesSISTEMAS 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 detallesPRÁ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 detallesSistemas 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 detallesSistemas 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 detallesTaller 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 detallesBiblioteca 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 detallesSistemas 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 detallesCOMUNICACIÓ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 detallesGestió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 detallesTaller 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 detallesSistemas 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 detalles1. 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 detallesFunciones 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 detallesTema 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 detallesSistemas 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 detallesSistemas 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 detallesClases 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 detallesComputació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 detallesFormatos 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 detallesExamen 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 detallesPrá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 detallesdirectamente 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 detallesUNIVERSIDAD 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 detallesSOLUCION 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 detallesTema 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 detallesSistemas 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 detallesPrá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 detallesEjercicios 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 detallesUsando 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 detallesFunciones 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 detallesPunto 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 detallesIntroducció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 detallesConcurrencia, 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 detallesBloque 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 detallesPrá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 detallesEntrada 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 detallesTema 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 detallesProcesos 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 detallesCarlos 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 detallesApellidos: 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 detallesProcesos 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 detallesRealizar 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 detallesLaboratorio 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 detallesPrá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 detallesTeorí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 detalles05 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 detallesFacultad 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 detallesObjetos 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 detallesSistemas 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 detallesTema 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 detallesUNIVERSIDAD 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 detallesArchivos 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 detallesUn 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 detallesTEMA 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 detallesFunció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 detallesTema 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 detallesAnalista 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 detallesTema 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 detallesInformá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 detallesINTRODUCCIó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 detallesSISTEMAS 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 detallesPunteros 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 detallesMensajes 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 detallesArchivos & 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 detallesApuntadores (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 detallesElementos 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 detallesIntroducció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 detallesLaboratorio 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 detallesIntroducció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 detallesPARTE 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