COMUNICACIÓN ENTRE PROCESOS
|
|
- Daniel Flores Gómez
- hace 6 años
- Vistas:
Transcripción
1 COMUNICACIÓN ENTRE PROCESOS () 1
2 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 aunque no todo mecanismo u objeto la asegura Los procesos pueden comunicarse entre sí mediante: - espacios de memoria - elementos de file system - otros mecanismos de como ser señales, cola de mensajes, semáforos, etc. - System V (Unix System V, AT&T) Colas de mensaje, semáforos y memoria compartida - Posix Los objetos son mantenidos en la memoria del kernel 2
3 Tipos de comunicación Sincrónica El emisor se bloquea a la espera de respuesta del receptor Asincrónica El emisor continua ejecutándose mientras se comunica con el receptor Persistente (Persistent) El receptor no tiene que estar operativo durante la comunicación, los mensajes se almacenan el tiempo que sea necesario hasta que los reciba. Ejemplo: Momentánea (Trasient) Los mensajes se descartan si el receptor no está operativo. Ejemplo: teléfono Entre dos o más procesos 3
4 Tipos de comunicación Full duplex: Envío y recepción simultánea Half duplex: En ambos sentidos pero no de forma simultánea Semi duplex Simplex: Comunicación unidireccional 4
5 Shared Memory Permite que dos o más procesos accedan simultáneamente a una misma porción o segmento de memoria Es un mecanismo de eficiente respecto a otros (como ser FIFO y sockets) pero impone la limitaciones: - que los procesos convivan en el mismo sistema - si los procesos que se comunican se ejecutan sobre distintas CPUs en un mismo sistema éste debe ser cache coherente Si un proceso cuenta con los permisos de acceso a un segmento de memoria puede accederlo mapeándolo a su propio espacio privado de memoria Todo cambio realizado sobre un segmento de memoria resulta visible para el resto de los procesos que la comparten Por tanto deben evitarse las condiciones de competencia que puedan presentarse 5
6 Shared Memory Un segmento creado por un proceso puede ser leído y/o escrito por otros procesos Cada proceso recibe su propio mapa de la memoria compartida en su espacio privado de memoria Proceso A RAM Proceso C Segmento SHM attachado Proceso B Segmento SHM attachado Segmento SHM Proceso D 6
7 Shared Memory Procedimiento: - Un proceso debe allocar el segmento de memoria - Los procesos deben attachar (mapear) el segmento a su propio espacio de direcciones - Al finalizar la comunicación cada proceso debe dettachar el segmento - El proceso creador debe desallocar el segmento de memoria La memoria virtual de los procesos es dividida en páginas. Todo proceso hace referencia a direcciones de memoria virtual. Cada proceso mantiene un mapeo de sus propias direcciones de memoria a estas páginas de memoria virtual Allocar un nuevo segmento (no existente) de shared memory provoca la creación de páginas de memoria virtual 7
8 Shared Memory: Allocation Función #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> // shmid int shmget(key_t key, size_t size, int shmflag) - key entero que indica el segmento a crear _PRIVATE garantiza la creación de un segmento nuevo - size especifica (en bytes) el tamaño del segmento, se redondea a n*pagesize - shmflag _CREAT un nuevo segmento debe ser creado _EXCL uso junto a _CREAT, shmget falla en caso de que el segmento key ya exista Modos: 9 bits que indican permisos para owner, group y world de control de acceso Los bits de ejecución son ignorados, constantes en sys/stat.h Ejemplo size_t seg_id= shmget(key, getpagesize(), _CREAT S_IRUSR S_IWUSR) 8
9 Shared Memory: Attach & Dettach Función void* shmat(size_t shmid, const void *shmaddr, int shmflag) - shmid identificador del segmento - shmaddr puntero que especifica donde mapear el segmento en el espacio de direcciones del proceso. NULL o 0 = El sistema operativo lo determina - shmflag. SHM_RND especifica que la dirección indicada por shmaddr debe redondearse. SHM_RDONLY indica que se attache el segmento en sólo lectura, por defecto L/E Los hijos heredan los segmentos attachados del proceso padre Se realiza un dettach mediante la función int shmdt(const void *shmaddr) shmaddr es el valor retornado por shmat Al invocar a exit o exec se dettachan los segmentos automáticamente 9
10 Shared Memory: Deallocation & Control Función void shmctl(size_t shmid, int cmd, struct shmid_ds *buf) - retorna información acerca de un segmento y permite modificarlo - cmd=_stat para obtener información - cmd=_rmid y buf=null para borrar un segmento - cada segmento debe ser explícitamente desallocado usando shmctl Un proceso puede modificar un segmento mediante shmctl si se trata del proceso dueño o creador del shmid Otros valores para cmd SHM_LOCK SHM_UNLOCK _SET: establece permisos 10
11 Shared Memory: Ejemplo shm.c 11
12 Shared Memory: Comandos # ipcs l # ipcs m (nattach) 12
13 Mapped Memory Permite que procesos (relacionados o no) se comuniquen a través de un archivo Puede emplearse para o para optimizar el acceso a archivos Este mecanismo de establece una relación entre un archivo y la memoria de un proceso Un archivo se divide en trozos o bloques de tamaño de una página de memoria los cuales se copian a páginas en memoria virtual para su posterior acceso Los procesos pueden leer o modificar el contenido del archivo mediante simples accesos a memoria 13
14 Mapped Memory Archivo RAM Proceso 14
15 Mapped Memory Funciones - es posible mapear un archivo total o parcialmente #include <sys/mman.h> #include <sys/types.h> void* mmap(void *addr, size_t len, int prot, int flags, int fd, off_t off) addr: dirección del espacio de direcciones del proceso en donde se desea mapear el archivo len: tamaño del mapeo en bytes prot: indica nivel de protección (PROT_READ, PROT_WRITE, PROT_EXEC) flags:opciones MAP_FIXED: addr se considera tal cual está, debe ser page_aligned MAP_PRIVATE: escrituras a archivo privado, no apto para MAP_SHARED: escrituras a memoria van a archivo subyacente, útil para fd: file descriptor relacionado con el archivo mapeado off: offset desde el principio del archivo desde donde se comienza a mapear 15
16 Mapped Memory Funciones int munmap(void *addr, size_t len) addr: dirección retornada por mmap len: tamaño del mapeo en bytes 16
17 Mapped Memory - Escritor #include <stdlib.h> #include <fcntl.h> #include <sys/stat.h> #define FILE_LENGTH 0x100 #define INTEGER #include <stdio.h> #include <sys/mman.h> #include <unistd.h> int main (int argc, char* const argv[]) { int fd; void* file_memory; fd = open(argv[1], O_RDWR O_CREAT, S_IRUSR S_IWUSR); lseek (fd, FILE_LENGTH+1, SEEK_SET); write (fd, "", 1); lseek (fd, 0, SEEK_SET); /* Crea el mapeo de memoria. */ file_memory = mmap(0, FILE_LENGTH, PROT_WRITE, MAP_SHARED, fd, 0); close (fd); /* Escribe un entero al area de memoria mapeada. */ sprintf((char*)file_memory, "%d\n", INTEGER); /* Libera la memoria. */ munmap (file_memory, FILE_LENGTH); } return 0; 17
18 Mapped Memory - Lector #include <stdlib.h> #include <fcntl.h> #include <sys/stat.h> #define FILE_LENGTH 0x100 #include <stdio.h> #include <sys/mman.h> #include <unistd.h> int main (int argc, char* const argv[]) { int fd; void* file_memory; int integer; /* Abre el archivo. */ fd = open (argv[1], O_RDWR, S_IRUSR S_IWUSR); /* Create the memory mapping. */ file_memory = mmap (0, FILE_LENGTH, PROT_READ PROT_WRITE, MAP_SHARED, fd, 0); close (fd); /* Lee el entero, lo imprime y lo duplica. */ sscanf ((char*)file_memory, "%d", &integer); printf ("El valor del entero es: %d\n", integer*2); /* Libera la memoria */ munmap (file_memory, FILE_LENGTH); } return 0; 18
19 Pipes Permite la comunicación half-duplex entre dos procesos relacionados Son dispositivos seriales, se mantiene el orden de datos en emisión/recepción Son dispositivos non_seekables (no pueden manipularse con funciones tipo lseek) Usos típicos: - comunicar dos threads de un mismo proceso - comunicar dos procesos relacionados (o emparentados) Son conocidos también con el nombre pipes sin nombre 19
20 Pipes Cuando se crean el kernel le asigna. - un i-nodo - dos entradas en la tabla de archivos - dos entradas en la tabla de descriptores de archivo 20
21 Pipes Cuando se escribe en un pipe el kernel asigna bloques de disco (bloques directos de inodo) Cuentan con capacidad limitada bloques directos x tamaño bloque 12 x 8KB = 96KB Debido a esto se sincronizan procesos - escritor rápido se bloquea al llenarse el pipe empleado para comunicarse con lector lento Un proceso hijo hereda los descriptores de archivo presentes en el proceso padre 21
22 Pipes En el shell, el símbolo crea un pipe $ ls sort A los comandos tipo $ cmd 1 cmd 2... cmd n se los denomina pipelines 0 cmd cmd cmd n
23 Pipes: Apertura y cierre Apertura <unistd.h> int pipe(int fds[2]) Retorno: 0=éxito, 1=fracaso En caso de éxito - abre dos descriptores de archivo y los almacena en el array fds - fds[0]: se utiliza para lectura, O_RDONLY - fds[1]: se utiliza para escritura, O_WRONLY Se pueden presentar errores debido a - EMFILE: el proceso que ejecutó la llamada sobrepasó la cantidad de archivos abiertos - EFAULT: array argumento inválido - ENFILE: tabla de archivos del kernel llena Cierre int close(int fd) 23
24 Pipes: Lectura y escritura Opción 1 ssize_t read(int fd, void *buf, size_t count) ssize_t write(int fd, void *buf, size_t count) se lee de un extremo del pipe y se escribe en el otro Opción 2 convertir los descriptores de archivo en objetos FILE* empleando FILE *fopen(char *nombre_archivo, char *modo) int fprintf (FILE * stream, const char *format,... ) char * fgets (char *str, int num, FILE *stream ) int fscanf(file *stream, const char *format,... ) int fclose(file *pf); Pasos: comunicación padre-hijo con un pipe - un proceso invoca a pipe y posteriormente a fork - el hijo hereda los descriptores de archivo que el padre mantiene abiertos - cualquiera de los procesos puede actuar como emisor o receptor, pero sólo puede tomar un rol durante la comunicación - cuando un proceso lee del pipe debe cerrar el extremo de escritura y viceversa 24
25 Pipes Comunicación entre PADRE e HIJO, el padre es emisor, el hijo es receptor PADRE (escribe) close(fds[0]) write(fds[1], buf, n) close(fds[1]) HIJO (lee) close(fds[1]) read(fds[0], buf, n) close(fds[0]) Si se desea establecer una comunicación bidireccional entre padre e hijo se deben emplear dos pipes, no es posible realizarlo con uno solo 25
26 Pipes #include <stdlib.h> #include <stdio.h> #include <unistd.h> #define READ 0 #define WRITE 1 int main () { int fds[2]; pid_t pid; pipe(fds); pid = fork(); } /* Proceso PADRE. Escribe en el pipe*/ FILE* stream; close(fds[read]); /* Cierra su extremo de lectura */ stream = fdopen(fds[write], "w"); fprintf(stream, "Mensaje del padre para el hijo..."); fflush(stream); close(fds[write]); } return 0; if (pid == (pid_t) 0) { /* Proceso HIJO. Lee desde el pipe. */ char buffer[1024]; FILE* stream; close(fds[write]); /* Cierra su copia del extremo de escritura */ stream = fdopen(fds[read], "r"); fgets(buffer, sizeof(buffer), stream); fputs(buffer, stdout); close(fds[read]); } else { 26
27 Pipes 27
28 Redirecciones de entrada, salida y error estándar Generalmente queremos realizar esta operación padre hijo 0 padre hijo 1 2 En definitiva lo que se pretende es igualar dos file descriptors 28
29 Redirecciones de entrada, salida y error estándar Funciones #include <unistd.h> int dup(int fildes) int dup2(int fildes, int fildes2) - Son interfaces alternativas del servicio ofrecido por fcntl (file control) #include <fnctl.h> int fcntl(int fildes, int cmd,...); dup(fildes) fcntl(fildes, F_DUPFD, 0) dup usa el file descriptor en desuso de número más bajo para el nuevo file descriptor Ejemplo #include <unistd.h>... int fd;... close(1); dup(fd); close(fd); 0 padre fd 2 29
30 Redirecciones de entrada, salida y error estándar Funciones dup2(fildes, fildes2) close(fildes2); && fcntl(fildes, F_DUPFD, fildes2); dup2 hace que fildes2 sea la copia del file descriptor fildes Ejemplo #include <unistd.h>... dup2(1, 2);... 0 padre 1 2 copia 30
31 Atajo Es muy común emplear pipes para enviar o recibir datos a o desde un subproceso Existen dos funciones que eliminan la necesidad de invocar la serie de funciones pipe fork dup2 exec... estas son: FILE* popen (const char* comando, const char *type) int plcose(file* stream) #include <stdio.h> #include <unistd.h> int main () { FILE* stream = popen( sort, w ); fprintf(stream, Hola\n ); fprintf(stream, Hijo\n ); fprintf(stream, Hasta pronto\n ); } pclose(stream); return 0; 31
32 FIFOS Denominados como pipe con nombre Tienen presencia (nombre) a nivel file system Dado que poseen un nombre localizable por cualquier proceso pueden comunicar procesos no relacionados A través de un FIFO se transfieren datos en una única dirección según cada proceso En línea de comandos $ mkfifo /tmp/mi_fifo $ ls l /tmp/mi_fifo prw r r 1 diego diego :17 /tmp/mi_fifo $ ls lf /tmp/mi_fifo pprw r r 1 diego diego :17 /tmp/mi_fifo $ rm /tmp/mi_fifo tty1 $ cat > /tmp/mi_fifo tty2 $ cat < /tmp/mi_fifo 32 escritor lector
33 FIFOS Ejemplo práctico $ mkfifo mi_fifo $ gzip 9 c < mi_fifo > out.gz En otra consola $ cat *.c > mi_fifo 33
34 FIFOS Pueden comunicar múltiples escritores y/o lectores Cuando un proceso abre un FIFO para lectura se bloquea hasta que otro proceso escriba en el Un lector se bloquea en un FIFO vacío y un escritor en uno lleno La escritura en un FIFO es atómica y no excede los 4KB $ grep PIPE_BUF /usr/include/linux/limits.h #define PIPE_BUF 4096 /* # bytes in atomic write to a pipe */ Las escrituras provenientes de escritores simultáneos pueden intercalarse 34
35 FIFOS Creación de FIFOS mediante C #include <sys/types.h> #include <sys/stat.h> int mkfifo(const char* nombre_fifo, mode_t modo) - nombre_fifo se especifica mediante path absoluto - modo expresado en octal Valores de retorno 0 = éxito -1 = falla, debido a EEXIST: nombre de archivo existente ENAMETOOLONG: path excesivamente largo ENOTDIR: path incorrecto o no existente Apertura y cierre Se emplean las mismas funciones que para archivos aprovechando el concepto de que en *nix todo es un archivo Para cierre se puede usar colse() y para eliminación unlink() 35
36 Lector #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <stdlib.h> #include <unistd.h> #include <limits.h> #include <fcntl.h> #include <errno.h> int main (int argc, char **argv) { int fd; char data[pipe_buf]; mode_t modo = 0666; if (argc!= 2) { perror("error de uso:./fifo-reader path"); exit(1); } if(mkfifo(argv[1], modo) < 0) { perror("error en mkfifo"); exit(2); } if ((fd=open(argv[1], O_RDONLY)) < 0) { perror("error de open"); exit(3); } } /* Leer desde el FIFO y mostar datos */ while (read(fd, data, PIPE_BUF-1) > 0) printf("-> %s\n", data); close(fd); return 0; 36
37 Escritor printf("yo soy el proceso %d\n", pid); #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <limits.h> #include <fcntl.h> #include <errno.h> int main (int argc, char **argv) { int fd, nbytes, nmsg=0; char data[pipe_buf]; pid_t pid = getpid(); if (argc!= 2) { perror("error de uso:./fifo-writer path\n"); exit(1); } while (1) { /* Mensaje a enviar */ nbytes = sprintf(data, "Mensaje Nro. %d del escritor [%d]", nmsg++, pid); /* Escritura (envio) del mensaje */ if (write(fd, data, nbytes+1) < 0) { perror("error en write"); exit(2); } sleep(2); } close(fd); return 0; } /* Apertura del FIFO */ if ((fd = open(argv[1], O_WRONLY)) < 0) { perror("error en open"); exit(2); } 37
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
Asignación de disco en UNIX
SISTEMA DE FICHEROS Asignación de disco en UNIX Asignación de disco indexada (i-nodes) Bloques libres enlazados. Bloques de datos (y índices) Boot area Superblock Lista de i-nodes Introducció als Sistemes
Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009
Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009 1. [PROCESOS] a) Considerar el siguiente código: void main() { int j=10; pid_t pid; for (int i=0; i
Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.
Tema 8 : Gestión de memoria Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Introducción programa fuente otros objetos
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
Sistemas Operativos Práctica 3
Sistemas Operativos Práctica 3 Ing. Andrés Bustamante afbustamanteg@unal.edu.co Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que
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
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
Prueba de Laboratorio Modelo B01 Semáforos y Memoria Compartida
Prueba de Laboratorio APELLIDOS: NOMBRE: GRUPO DE LABORATORIO: Indicaciones: No se permiten libros, apuntes ni teléfonos móviles. Cuando tenga una solución al ejercicio muéstrela al profesor (compilación
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.
Programación de Sistemas. Programación de Sistemas con Ansi C sobre UNIX. Gestión de errores. Gestión de errores. Ficheros regulares
Programación de Sistemas con Ansi C sobre UNIX Pedro Merino Gómez Jesus Martínez Cruz Dpto. Lenguajes y Ciencias de la Computación Universidad de Málaga Programación de Sistemas Llamadas al sistema Gestión
Sistemas Operativos. Iván Bernal, Ph.D. 4. Escuela Politécnica Nacional email: imbernal@mailfie.epn.edu.ec. Copyright @2002, I.
Sistemas Operativos Clase # 9 Tipos de llamadas al Sistema Viernes, 3 de Mayo de 2002 Agenda Sorpresa! no hay prueba. Tipos de llamadas al sistema. Iván Bernal, Ph.D. Escuela Politécnica Nacional email:
Si el fichero hashes existe, el script debe notificar el error y salir como corresponde. A continuación se muestra un ejemplo:
Examen de Sistemas Operativos ITIS Fuenlabrada Junio 2009 Tiempo total: 3 horas. Problema: Llamadas al sistema (5 puntos) Escriba en C para Plan 9 un programa llamado catsha1 cuyo propósito es crear un
Capitulo VI Arquitectura del sistema de archivos
Capitulo VI Arquitectura del sistema de archivos Las características que posee el sistema de archivos de UNIX son las siguientes: Posee una estructura jerárquica. Realiza un tratamiento consistente de
TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O
TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO Definición y objetivos de un S.O Definición y objetivos del sistema operativo Estructura, componentes y servicios de un S.O Llamadas al sistema
Sea el siguiente programa de nombre "c0p1" para copiar archivos (por simplicidad se ha eliminado todo control de errores): Se pide:
Sea el siguiente programa de nombre "c0p1" para copiar archivos (por simplicidad se ha eliminado todo control de errores): 1 /* c0p1 origen destino 2 * Copia "origen" sobre "destino" byte a byte, 3 * haciendo
Sistemas Operativos I Manual de prácticas
Sistemas Operativos I Manual de prácticas Grupo de Sistemas Operativos (DSIC/DISCA) Práctica 3: Procesos POSIX ANTES DE EMPEZAR...... 2 PRÁCTICA 3: PROCESOS POSIX... 2 CREACIÓN DE PROCESOS MEDIANTE FORK...
LLAMADAS AL SISTEMA SISTEMAS OPERATIVOS
LLAMADAS AL SISTEMA SISTEMAS OPERATIVOS 26/05/2013 eduar14_cr@hotmail.com cilred_tlapa@hotmail.com LLAMADAS AL SISTEMA Las llamadas al sistema proporcionan la interfaz entre un proceso y el sistema operativo,
Sockets (TCP) Tema 2.- Nivel de aplicación en Internet
Sockets (TCP) Tema 2- Nivel de aplicación en Internet Dr Daniel Morató es de Computadores Ingeniero Técnico en Informática de Gestión, 2º curso Material parcialmente adaptado del libro Computer Networking:
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
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
Procesos 1 / 31. Para entender el concepto de hebra, necesitamos compreender el concepto de proceso
Procesos 1 / 31 Concepto de proceso Para entender el concepto de hebra, necesitamos compreender el concepto de proceso Un proceso es un programa en ejecución Una instancia de un programa corriendo en un
Por ejemplo, para declarar un arreglo de enteros llamado a con diez elementos se hace de la siguiente forma:
Arreglos unidimensionales y multidimensionales Los arreglos son una colección de variables del mismo tipo que se referencian utilizando un nombre común. Un arreglo consta de posiciones de memoria contigua.
Matías Zabaljáuregui
El buffer de la entrada estándar en GNU/Linux Matías Zabaljáuregui (matiasz@info.unlp.edu.ar) http://linux.linti.unlp.edu.ar 0. Introducción Se intentará describir en términos sencillos la forma de tratar
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, Sergio Segura y José Ángel Bernal Boletín 4: Procesos Curso
Llamadas al Sistema en UNIX.
Gestión de ficheros: creat, open, read, write, close. Un fichero en UNIX: Es una secuencia de Byte sin formato, se accede a ellos de forma directa. La interpretación del contenido depende de las variables
PRÁCTICAS DE SS.OO. Universidad de Murcia. I.I./I.T.I. Sistemas/I.T.I. Gestión
Universidad de Murcia Facultad de Informática Departamento de Ingeniería y Tecnología de Computadores Área de Arquitectura y Tecnología de Computadores PRÁCTICAS DE SS.OO. I.I./I.T.I. Sistemas/I.T.I. Gestión
; hcomment.rc HTTP://AA.ES/INFO.HTML http://www.bb.com http://www.cc.org/a.html aa.es www.bb.com www.cc.org ;
Examen de Sistemas Operativos ITIS Fuenlabrada Mayo 2011 Problema: Llamadas al sistema (3 puntos) Implemente en C para Plan 9 un programa hlines que a partir de una URL que se le pasa como argumento, escriba
Analista Universitario en Sistemas Sistemas Operativos Llamadas al sistema en Linux 2009
Analista Universitario en Sistemas Sistemas Operativos Llamadas al sistema en Linux 2009 Introducción: Todo procesador moderno posee al menos dos modos de funcionamiento distintos modo kernel (Protected
- Bajo que condiciones el algoritmo de planifiación de procesos FIFO (FCFS) resultaría en el tiempo de respuesta promedio más pequeño?
Sistemas Operativos. Grado Ingeniería Informática. TGR-2.1 Procesos. Noviembre 2014 Problemas para hacer en clase FIFO cpu C A 1. Dos procesos A y B tienen una ráfaga de CPU de 50 ms y un proceso C tiene
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
REPRESENTACIÓN INTERNA DE FICHEROS
REPRESENTACIÓN INTERNA DE FICHEROS Inodos Existe un inodo para cada fichero del disco. Los inodos se encuentran: o o En disco, en la lista de inodos. En memoria, en la tabla de inodos, de estructura semejante
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
Sistemas Operativos: Programación de Sistemas. Curso 2006-07. Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.
Tema 2 : entorno programación linux Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Francisco J. Santana 1 Programación
Informática Electrónica Manejadores de Dispositivos (Device Drivers)
Informática Electrónica Manejadores de Dispositivos (Device Drivers) DSI-EIE-FCEIA 2015 Que es un DD? Es una pieza de software que interactúa con (entre) el sistema operativo y con uno o mas dispositivos
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.
Sistemas Operativos. Curso 2016 Procesos
Sistemas Operativos Curso 2016 Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor
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
Examen de Fundamentos de sistemas distribuidos
Examen de Fundamentos de sistemas distribuidos Tiempo total: 2 horas Problema: Programa: Rendezvous con semáforos(5 puntos) Utilizando como único mecanismo de sincronización los semáforos descritos en
Sistemas Operativos. Curso 2016 Sistema de Archivos
Sistemas Operativos Curso 2016 Sistema de Archivos Agenda Interfaz. Archivos. Directorios. Seguridad en archivos. Implementación. Definiciones. Sistema de archivos virtual. Estructura de los directorios.
Sistemas operativos. Entrada Salida
Sistemas operativos. Entrada Salida Diciembre April 26, de 2012 1 de 77 -- Sistemas Operativos- E/S () Sistemas operativos. Entrada Salida April 26, 2012 1 / 54 Contenidos I Entrada/salida Estructura de
Qué es un socket? Dominios de comunicación. Tipos de sockets en el dominio AF_INET. Sockets Stream. Sockets Datagram. Sockets Raw
Qué es un socket? Es una interfaz de entrada salida de datos que permite la intercomunicación entre procesos. Los procesos pueden estar ejecutándose en el mismo o en distintos sistemas, unidos mediante
COMUNICACIÓN ENTRE PROCESOS SOCKETS
COMUNICACIÓN ENTRE PROCESOS SOCKETS Diseño de Sistemas Operativos Curso 2007/08 Grupo: Mi30 Martín Santana, A. David Martínez Santana, Luis Ignacio Qué son?(definición) n) Los sockets son mecanismos de
Paradigma de paso de mensajes
Paradigma de paso de mensajes Curso 2011-2012 Índice Visión lógica del paradigma de paso de mensajes. Operaciones básicas en paso de mensajes. Operaciones bloqueantes. Operaciones no bloqueantes. MPI:
sockets Flujo (SOCK_STREAM) Comunicación bidireccional Confiable (entrega garantizada) Información ordenada en el destino Datagrama (SOCK_DGRAM)
s s Comunicación punto-a-punto entre procesos Los s son los extremos de la comunicación Diferentes dominios UNIX: Entre procesos de un mismo equipo Internet: Entre procesos de diferentes equipos (TCP/IP)
Estructuras y funciones de programación de sockets.
Estructuras y funciones de programación de sockets. Introducción. En estos apuntes se incluye una breve descripción de las estructuras y funciones cuyo uso puede ser necesario para el desarrollo de las
Sistemas Operativos. Pedro Cabalar TEMA III. PROCESOS. Depto. de Computación Universidade da Coruña
Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS. P. Cabalar Sistemas( Operativos Depto. de Computación Universidade Tema da Coruña III. Procesos ) 1 /
FACULTAD DE INFORMATICA SISTEMAS OPERATIVOS 3º de Informática.
FACULTAD DE INFORMATICA SISTEMAS OPERATIVOS 3º de Informática. PROBLEMAS SOBRE SISTEMAS DE FICHEROS 1. Calcular el número de accesos a disco necesarios para leer 20 bloques lógicos consecutivos (no necesariamente
Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1
Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1 Preguntas cortas Pregunta 1.1: Si configuro mi servidor Web para que no acepte conexiones desde
Arquitecturas Cliente/Servidor
Arquitecturas Cliente/Servidor Integrantes: Arellano Santiago Víctor Manuel Girón Capistrán Aldo Iván Guerrero Ramirez Eduardo Daniel Rosas Peña Ramiro SOCKETS EN C. LLAMADAS PARA EL MANEJO DE SOCKETS
Apartado TGR Puntuación. No Presentado. EXAMEN DE SISTEMAS OPERATIVOS (Grado en Ing. Informática) 17/1/2013.
Apartado 1 2 3 4 5 TGR Puntuación No Presentado EXAMEN DE SISTEMAS OPERATIVOS (Grado en Ing. Informática) 17/1/2013. APELLIDOS Y NOMBRE:....................................................... Justificar
Llamadas al Sistema. Laboratorio de Arquitectura de Ordenadores
Llamadas al Sistema Laboratorio de Arquitectura de Ordenadores Índice Introducción Procesos Señales Sistema de ficheros Bibliografía 2 Introducción Llamadas al Sistema: Un API compuesto por una serie de
Programación Estructurada
Programación Estructurada PROGRAMACIÓN ESTRUCTURADA 1 Sesión No. 11 Nombre: Manejo de archivos Contextualización En los lenguajes de programación estructurada como C, que carecían de una conexión a base
Trabajo Práctico 1 Sistema de archivos FAT16 en lenguaje ensamblador
Trabajo Práctico 1 Sistema de archivos FAT16 en lenguaje ensamblador Organización del Computador 2 1er. Cuatrimestre 2010 Versión 3 1. Introducción teórica En las viejas epocas de Windows 95, aparecieron
GNU/Linux: Programación de Sistemas. Pablo Garaizar Sagarminaga
GNU/Linux: Programación de Sistemas Pablo Garaizar Sagarminaga GNU/Linux: Programación de Sistemas Pablo Garaizar Sagarminaga Facultad de Ingeniería Universidad de Deusto Bilbao, octubre de 2002 Tabla
Sockets: funcionamiento y programación. Sockets tipo UNIX. MSc. Ivan A. Escobar
Sockets tipo UNIX MSc. Ivan A. Escobar Creación socket: socket() int socket(familia, tipo, protocolo) Regresa un valor entero Parecido descriptor de archivos: descriptor socket sockfd int familia familia
7. Manejo de Archivos en C.
7. Manejo de Archivos en C. Los datos que hemos tratado hasta el momento han residido en la memoria principal. Sin embargo, las grandes cantidades de datos se almacenan normalmente en un dispositivo de
Problemas de Redes de Computadores. Conjunto de problemas 1
Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1 Pregunta 1.1: Si configuro mi servidor Web para que no acepte conexiones desde la dirección IP 130.206.1.1,
Universidad Simón Bolívar Departamento de Computación y Tecnología de la Información Curso de Redes I CI-4815 Trimestre Septiembre Diciembre 2013
Universidad Simón Bolívar Departamento de Computación y Tecnología de la Información Curso de Redes I CI-4815 Trimestre Septiembre Diciembre 2013 Proyecto I Autores: Lairon Acosta. Carnet: 09-10927 Jueves
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
Repaso 03: Manejo de Archivos en C
Repaso 03: Manejo de Archivos en C Solicitado: Ejercicios 03: Programa con Archivos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras
El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */
Principios de Programación El lenguaje C 1. Variables locales y globales 1.1. Variables locales Las funciones permiten al programador modularizar un programa. Todas las variables declaradas en las definiciones
Formatos para prácticas de laboratorio
Fecha de efectividad: CARRERA PLAN DE ESTUDIO CLAVE ASIGNATURA NOMBRE DE LA ASIGNATURA LSC 2003-1 5221 Lenguaje de Programación Estructurada PRÁCTICA No. 8 LABORATORIO DE NOMBRE DE LA PRÁCTICA Licenciado
Informática Ingeniería en Electrónica y Automática Industrial
Informática Ingeniería en Electrónica y Automática Industrial Entrada y salida estándar V1.3 Autores Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato:
Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 9 de Febrero de 2007
Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 9 de Febrero de 2007 Planteamiento del examen de TEORIA: El examen constará de 5 preguntas/cuestiones que pueden ser libremente
EDITRAN/TR. Windows/Unix. Manual de referencia
EDITRAN/TR Windows/Unix Manual de referencia INDRA 30 de octubre de 2014 ÍNDICE 1. INTRODUCCIÓN.... 1-1 2. INTERFAZ DE PROGRAMACIÓN.... 2-1 2.1. DESCRIPCION... 2-1 2.2. FUNCIONES DE ENVIO Y RECEPCION...
Guía rápida para gestionar el puerto paralelo del PC
Guía rápida para gestionar el puerto paralelo del PC Descarga desde: http://eii.unex.es/profesores/jisuarez/descargas/ip/guia_rapida_pp.pdf José Ignacio Suárez Marcelo Universidad de Extremadura Escuela
Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia
Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por
CURSO DE LENGUAJE C. 4.1 Conceptos básicos de funciones 4.2 Funciones que regresan valores no enteros 4.3 Variables externas 4.4 Reglas de alcance
Capítulo 1. Introducción general 1.1 Comencemos 1.2 Variables y expresiones aritméticas 1.3 La proposición FOR 1.4 Constantes simbólicas 1.5 Entrada y salida de caracteres 1.6 Arreglos 1.7 Funciones 1.8
Estructuras y funciones de programación de sockets.
Estructuras y funciones de programación de sockets. Introducción. Autor: Enrique Bonet En estos apuntes se incluye una breve descripción de las estructuras y funciones cuyo uso puede ser necesario para
Ingeniería Superior de Informática. Curso 3º. Sistemas Operativos. Examen Final. TEORÍA. 31 de Enero de 2005
Ingeniería Superior de Informática. Curso º. Sistemas Operativos. Examen Final. TEORÍA. de Enero de 005 Nombre: DNI:. ( puntos). La TFA es la tabla que, en UNIX, guarda los punteros de posición de cada
Capítulo 3: Procesos. n Concepto de Proceso. n Despacho (calendarización) de Procesos. n Operaciones en Procesos. n Procesos en cooperación
3.- Procesos Capítulo 3: Procesos Concepto de Proceso Despacho (calendarización) de Procesos Operaciones en Procesos Procesos en cooperación Compunicación Interprocesos Communicación en sistemas Cliente-Servidor
TEMA 6. Implementación de UNIX. Contenido
TEMA 6 Implementación de UNIX Contenido 6.1. Introducción 6.2. El Núcleo (Kernel) de UNIX 6.3. Gestión de Procesos 6.3.1. Estructuras de Control de Procesos 6.3.2. Contexto de un proceso 6.3.3. Estados
Sistemas de ficheros en Servidores de Información multimedia
Sistemas de ficheros en Servidores de Información multimedia 2º Ingeniero Técnico de Telecomunicación Imagen y Sonido Departamento de Ingeniería Telemática Universidad Carlos III de Madrid 2 Indice Concepto
UNIVERSIDAD DE CANTABRIA DEPARTAMENTO DE INGENIERÍA DE COMUNICACIONES GRUPO DE INGENIERÍA TELEMÁTICA
UNIVERSIDAD DE CANTABRIA DEPARTAMENTO DE INGENIERÍA DE COMUNICACIONES GRUPO DE INGENIERÍA TELEMÁTICA MANUAL DE SOCKETS EN C TABLA DE CONTENIDOS Introducción.. 4 Sockets en C.. 7 2.1 Conceptos Básicos..
Aspectos básicos de la programación de entrada/salida
Plataformas de Tiempo Real: Dispositivos y Drivers Tema 2. Programación básica de E/S en Linux Aspectos básicos de la programación de E/S Arquitectura y programación de la E/S en el sistema operativo Módulos
Crear y Abrir fichero de datos (se supone que no existe). Si existe no pasa nada. o Ej: escritura
Usos Open Abrir fichero que ya existe o Para leer ret=read(fd,.); o Para escribir o Para leer/escribir fd=open( datos,o_rdwr); Ret=read(fd, ); Crear y Abrir fichero de datos (se supone que no existe).
Esquema de un programa en C: bloques básicos
Esquema de un programa en C: bloques básicos // Incluimos los ficheros de cabecera que necesitemos. // Esto es un comentario #include #include // Si queremos definir alguna constante,
Programación I Ficheros de texto
1 Ficheros de texto Iván Cantador 2 Ficheros (I) 3 Un ficheroo archivoes un conjunto de bits que es tratado por el sistema operativo como única unidad lógica Un fichero está identificado por su nombre
-> Todo socket viene definido por dos características fundamentales:
LOS SOCKETS. Los sockets no son más que puntos o mecanismos de comunicación entre procesos que permiten que un proceso hable (emita o reciba información) con otro proceso incluso estando estos procesos
Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C
Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS Departamento de Ciencias de la Computación e IA Subprogramas en C Objetivo Una vez que tengamos un programa que resuelva un problema concreto, ser capaces de usarlo
Lenguaje C Entrada y Salida de Datos. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia
Lenguaje C Entrada y Salida de Datos Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia E/S por consola Se refiere a las operaciones que ocurren
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
LABORATORIO 2. La biblioteca a nivel de usuario semso (semáforos Sistemas Operativos) brinda las siguientes primitivas:
1 Introducción LABORATORIO 2 En esta tarea se desea implementar un servicio sincronización de procesos a través de semáforos binarios con prioridad para el sistema operativo Linux. Para esto se deberá
UNIDAD DIDACTICA 3 REDIRECCIONAMIENTO Y TUBERIAS
UNIDAD DIDACTICA 3 REDIRECCIONAMIENTO Y TUBERIAS Eduard Lara 1 1. INTRODUCCIÓN En los sistemas GNU/LINUX y UNIX los dispositivos como los discos duros y sus particiones, el terminal de pantalla, el teclado,
Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE
Contenidos 1. Introducción 2. El operador NEW 3. El operador DELETE 1 Introducción Hasta ahora hemos visto que cada vez que queremos usar una variable debemos reservarle un lugar de la memoria al comenzar
Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.
Punteros Definición Un puntero es un dato que contiene una dirección de memoria. NOTA: Existe una dirección especial que se representa por medio de la constante NULL (definida en ) y se emplea
TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero
TEMA 7: Ficheros 7.1.-Concepto de fichero Todas las estructuras de datos que hemos visto hasta ahora utilizan memoria principal. Esto tiene dos limitaciones importantes: 1. Los datos desaparecen cuando
Ficheros y streams. Desde el punto de vista de Java, cada fichero no es más que una secuencia o flujo de bytes [stream].
Ficheros y streams Desde el punto de vista de Java, cada fichero no es más que una secuencia o flujo de bytes [stream]. Los streams pueden ser de entrada () de salida (). Los ficheros pueden almacenar
APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.
APUNTADORES Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección de memoria con el contenido
Mecanismos IPC: sockets
Mecanismos IPC: sockets Ampliación de Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Sockets Los sockets son una abstracción lógica que permiten la comunicación bidireccional
PRACTICA 1. ARRANQUE DE Linux y COMPILACIÓN DEL kernel.
PRACTICA 1. ARRANQUE DE Linux y COMPILACIÓN DEL kernel. 1.1. Introducción 1.2. Las órdenes en UNIX 1.3. Ayuda en línea: orden man 1.4. Manejo básico de directorios y archivos 1.5. Órdenes comunes de Linux
Vdd MIC29302. Vss PF.0 CS DI DAT CLK PE.7 PD.4 PD.5 PB.0. CAN-054, Utilización de tarjetas MMC en bajo nivel
Nota de Aplicación: CAN-054 Título: Utilización de tarjetas MMC en bajo nivel Autor: Sergio R. Caprile, Senior Engineer, colaboración IT&T (distr. Cika en Mendoza) Revisiones Fecha Comentarios 0 02/09/06
Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior PUNTEROS
PUNTEROS 1 Punteros en C Un puntero es una variable que almacena direcciones de memoria tipo *puntero; tipo variable; puntero = &variable; ffd0 valor variable fff0 ffd0 puntero A partir de la última sentencia
ARQUITECTURA DE REDES Laboratorio
1nsloo.cl ARQUITECTURA DE REDES Laboratorio Práctica 2: Ejercicios de aplicación de Sockets en C 1. OBJETIVOS. El objetivo de esta práctica es que el alumno llegue a conocer los principales conceptos relacionados
Facultad de Ingeniería Universidad de Buenos Aires. 75.08 Sistemas Operativos Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio.
Facultad de Ingeniería Universidad de Buenos Aires 75.08 Sistemas Operativos Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Shell Scripting I Qué es Unix? Evolución desde Multics Sistemas Abiertos Sabores Dennis
Sockets Básicos. APIS para acceso a TCP/IP. APIS para acceso a TCP/IP. APIS para acceso a TCP/IP. APIS para acceso a TCP/IP. Temas a tratar...
Sockets Básicos Pedro Merino Gómez Jesus Martínez Cruz Dpto. Lenguajes y Ciencias de la Computación Universidad de Málaga Temas a tratar... Sockets Básicos El como descriptor para E/S Funciones básicas
Entrada/Salida. Nano Semelman Maximiliano Geier Maximiliano Sacco. Sistemas Operativos, 2c DC - FCEyN - UBA
Nano Semelman Maximiliano Geier DC - FCEyN - UBA Sistemas Operativos, 2c-2014 Repaso de discos Repaso de discos Un disco tiene p pistas de s sectores cada una, y h cabezas. El disco gira a R RPM y para
Herramientas Informáticas I Software: Sistemas Operativos
Herramientas Informáticas I Software: Sistemas Operativos Facultad de Ciencias Económicas y Jurídicas Universidad Nacional de La Pampa Sistemas Operativos. Es el software base que permite trabajar como
Linux Devices DriversDesarrollo de un char device
Linux Devices Drivers Desarrollo de un char device Noviembre 2010 Agenda Prerequisitos 1 Prerequisitos. 2. 3 Registro y funcionalidades. 4 5 6 Linux Headers Prerequisitos Que tenemos que instalar antes