Introducción y Gestión de Procesos
|
|
|
- Eva María Córdoba Rubio
- hace 7 años
- Vistas:
Transcripción
1 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 Son la interfaz de programación (API, Application Program Interface) del sistema operativo A partir del conjunto de llamadas al sistema, pueden construirse órdenes e intérpretes de órdenes para el sistema operativo Shell Procesos Memoria Virtual Interfaz usuario Programas Ficheros Entorno de ventanas (KDE, Gnome) Interfaz llamadas al sistema Protocolos de red Drivers Interfaz hardware-software CPU Memoria E/S Red EUI-SG/INFOR.UVA.ES SO_PR03_
2 Llamadas al sistema El estándar POSIX IEEE Std define la interfaz estándar de un sistema operativo y su entorno, incluyendo un intérprete de órdenes (shell) y programas de utilidad comunes para soportar la portabilidad de aplicaciones a nivel de código fuente. Se pretende que sea usada tanto por los desarrolladores de aplicaciones como por implementadores de sistemas. IEEE STD se compone de cuatro componentes principales: Términos generales, conceptos e interfaces comunes a todos los documentos del estándar IEEE Std , incluyendo convenciones útiles y definiciones de archivos de cabecera en lenguaje C. Se incluye en el documento Definiciones Base del estándar. Definiciones de funciones de servicios del sistema y subrutinas, servicios del sistema específicos del lenguaje para C, y otras cuestiones sobre las funciones: portabilidad, manejo de errores, y recuperación ante errores. Se incluyen en el volumen Interfaces del Sistema del estándar. Definiciones para una interfaz estándar a nivel de código fuente para servicios de interpretación de órdenes (un shell) y programas de utilidad comunes para programas de aplicación. Se incluyen en el volumen Shell y utilidades del estándar. Cuestiones relacionadas que no encajan en la estructura documental del estándar, pero relevante, como información histórica concerniente a los contenidos del estándar y porqué determinadas características fueron incluidas o no por los desarrolladores del estándar. Estas consideraciones se encuentran en el volumen Razones del estándar. EUI-SG/INFOR.UVA.ES SO_PR03_ Llamadas al sistema fork exit wait exec getpid setsid kill alarm sigemptyset sigfillset sigaddset sigdelset sigismember sigprocmask sigaction sigsuspend Procesos Creación de procesos Terminación de procesos Esperar la terminación de un proceso Cambiar imagen de memoria por la de un ejecutable Obtención de atributos de un proceso Modificación de atributos de un proceso Señales Enviar una señal Generar una alarma Iniciar una máscara para que no tenga señales seleccionadas Iniciar una máscara para que contenga todas las señales Poner una señal específica en un conjunto de señales Quitar una señal especificada en un conjunto de señales Consultar si una señal pertenece a un conjunto de señales Examinar/modificar máscara de señales Capturar/manejar señales Esperar por una señal EUI-SG/INFOR.UVA.ES SO_PR03_
3 Llamadas al sistema open read write close lseek stat dup2 pipe mkfifo mkdir rmdir opendir readdir closedir link unlink Ficheros Apertura/creación de ficheros Lectura de ficheros Escritura de ficheros Cierre de un fichero Posicionamiento en un fichero Obtener información asociada a un fichero (tamaño, nombre, tipo,...) Redirecciones y tuberías Duplicar un descriptor de fichero Creación de una tubería sin nombre (pipe) Creación de una tubería con nombre Directorios Crear un directorio Eliminación de un directorio vacío Apertura de un directorio Leer la siguiente entrada de un directorio Cerrar un directorio Crear una nueva entrada de directorio para otra ya existente (link) Eliminar una entrada de directorio EUI-SG/INFOR.UVA.ES SO_PR03_ Llamadas al sistema chmod chown umask mount umount ioctl time times Protección Modificar los bits de protección (rwx, suid, sgid,...) de un archivo Asigna un nuevo propietario y grupo a un archivo Modificar la máscara de protección de archivos (por defecto) de un proceso Otras Montar un sistema de archivos de un dispositivo sobre un directorio Desmontar un sistema de archivos Control de dispositivos Valor del reloj de tiempo real Tiempos consumidos por un proceso EUI-SG/INFOR.UVA.ES SO_PR03_
4 Procesos Procesos UNIX Unidad de ejecución y asignación de recursos Programa en ejecución, por tanto, caracterizado por un estado entre cuyos atributos se encuentran: Imagen de memoria (en modo usuario y kernel) Identificador del proceso: PID Identificador del proceso padre: PPID Usuario propietario del proceso: ruid y euid (real y efectivo, respectivamente) Grupo propietario del proceso: rgid y egid (real y efectivo, respectivamente) Grupo de un proceso: GID Sesión de un proceso: SID Máscara de señales Tiempos de consumo de procesador Descriptores de archivos abiertos Directorio actual (CWD, Current Work Directory) Máscara de creación de archivos (umask)... EUI-SG/INFOR.UVA.ES SO_PR03_ Procesos Proceso Llamadas al sistema Modo usuario α Mb Modo núcleo 0 Mb Un único proceso, dos modos de ejecución Proceso A Llamadas al sistema Modo usuario (A) α Mb Dos procesos cualesquiera, comparten un único núcleo Proceso B Modo usuario (B) Llamadas al sistema α Mb Modo núcleo 0 Mb 0 Mb EUI-SG/INFOR.UVA.ES SO_PR03_
5 Procesos Operaciones sobre procesos Creación: fork() PADRE: bash Creación por copia. Herencia de atributos de atributos a procesos hijos Jerarquía de procesos Terminación: exit() Terminación normal: exit() Terminación anormal: señales Espera de terminación de los hijos: wait() Sustitución de la imagen de memoria: exec() Proceso bash clonado Proceso orden Proceso zombie HIJO exec orden exit fork wait Proceso bash (activo) Proceso bash (bloqueado) EUI-SG/INFOR.UVA.ES SO_PR03_ bash (activo) Procesos: llamadas al sistema fork exit wait exec getpid setsid Procesos Creación de procesos Terminación de procesos Esperar la terminación de un proceso Cambiar imagen de memoria por la de un ejecutable Obtención de atributos de un proceso Modificación de atributos de un proceso EUI-SG/INFOR.UVA.ES SO_PR03_
6 Procesos: fork fork: creación de procesos Descripción #include <sys/types.h> pid_t fork(void) Crea un proceso hijo que es un clon del padre: hereda gran parte de sus atributos Atributos heredables: todos, excepto PID, PPID, señales pendientes, tiempos/contabilidad Valor de retorno 0 al hijo PID del hijo al padre -1 al padre si error Errores Insuficiencia de recursos para crear el proceso EUI-SG/INFOR.UVA.ES SO_PR03_ Procesos: fork Ejecución en el contexto del padre Ejecución en el contexto del hijo pid= fork() fork() El núcleo crea las estructuras de datos asociadas al nuevo proceso y hace una réplica casi exacta del proceso padre. if (pid!=0) { /* código del padre*/ else { /* código del hijo*/ return <pid_hijo> PADRE NÚCLEO Cambio de contexto return 0 HIJO if (pid!=0) { /* código del padre*/ else { /* código del hijo*/ El proceso padre continúa con la siguiente instrucción después del fork, que típicamente es una comprobación de identidad, es decir, un if que comprueba el resultado de la invocación (el valor devuelto en este caso, es el pid del proceso hijo creado). Una vez creado el proceso hijo (con el mismo código de programa y el mismo valor del contador de programa) el hijo continúa con la siguiente instrucción después del fork, que típicamente es una comprobación de identidad, es decir, un if (solo que ahora, el valor devuelto ha sido 0). EUI-SG/INFOR.UVA.ES SO_PR03_
7 Procesos: fork fork: ejemplo 1 #include <stdio.h> #include <sys/types.h> int main(void) { pid_t pid; int var= 0; printf( PID antes de fork(): %d\n, (int) getpid()); if ( (pid = fork()) > 0 ) { printf ( PID del padre: %d\n, (int) getpid()); var++; else { if (pid == 0) printf ( PID del hijo: %d\n, (int) getpid()); else printf ( Error al hacer fork()\n ); printf( Proceso [%d] -> var = %d\n, (int) getpid(), var); EUI-SG/INFOR.UVA.ES SO_PR03_ Procesos: fork fork: ejemplo 2 #include <stdio.h> #include <sys/types.h> int main(void) { pid_t pid; int i, n= 4; for (i=0; i<n; i++) if ( (pid = fork()) < 0 ) break; printf ( Proceso: %d / Padre: %d\n, (int) getpid(), (int) getppid()); EUI-SG/INFOR.UVA.ES SO_PR03_
8 Procesos: exit exit: terminación de procesos #include <stdlib.h> Descripción void exit(int status) Termina normalmente la ejecución del proceso que la invoca void _exit(int status) Si no se invoca explícitamente, se hace de forma implícita al finalizar todo proceso El estado de terminación status se transfiere al padre que ejecuta wait(&status) Si el padre no está ejecutando wait, se transforma en un zombie Cuando un proceso ejecuta exit, todos los hijos pasan a ser adoptados por un proceso dependiente de la implementación (normalmente init) y su PPID pasa a ser el de este proceso (normalmente 1) Valor de retorno Ninguno Errores Ninguno EUI-SG/INFOR.UVA.ES SO_PR03_ Procesos: wait wait: esperar por la terminación de un proceso Descripción #include <sys/type.h> #include <sys/wait.h> pid_t wait(int *stat_loc) pid_t waitpid( pid_t pid, int *stat_loc, int options) Suspende la ejecución del proceso que la invoca, hasta que alguno de los hijos (wait) o un hijo concreto (waitpid) finaliza Si existe un hijo zombie, wait finaliza inmediatamente, sino, se detiene Cuando stat_loc no es NULL, contiene: Hijo termina con exit MSB: status definido por exit Hijo termina por una señal LSB: 0 0 LSB: num. Señal (bit más alto 1 si core dump) EUI-SG/INFOR.UVA.ES SO_PR03_
9 Procesos: wait Descripción (continuación) waitpid: argumento pid <-1: esperar por cualquier hijo cuyo grupo de procesos sea igual al valor absoluto del pid especificado -1: esperar por cualquier hijo (igual que wait) 0: esperar cualquier hijo con el mismo grupo de procesos que el proceso que hace la invocación >0: esperar al hijo cuyo pid es el indicado waitpid: argumento options WNOHANG: retornar inmediatamente, aunque no haya terminado el hijo Valores de retorno El PID del hijo que ha finalizado (>0) -1 si se recibe una señal o se da una condición de error (no existen hijos) Errores El proceso no tiene hijos EUI-SG/INFOR.UVA.ES SO_PR03_ Procesos: exit y wait PADRE NÚCLEO HIJO La llamada al sistema exit() no devuelve nada. El proceso que debería recibir este valor deja de existir. _exit(status) wait(&status) return status Durante este intervalo de tiempo, el proceso hijo existe como proceso zombie (sólo ocupa una entrada en la tabla de procesos en la que se mantiene su estado de terminación en espera de que lo solicite el proceso padre, pero nada más). EUI-SG/INFOR.UVA.ES SO_PR03_
10 Procesos: exit y wait (ejemplo) #include <stdio.h> #include <sys/types.h> #include <sys/wait.h> int main(void) { pid_t pid_hijo; int estado, x; long i, j; if ( (pid_hijo= fork()) == -1){ /* Código PADRE: Error */ perror( Fallo al hacer fork() ); exit(-1); else if (pid_hijo == 0) { /* Código HIJO */ fprintf(stdout, PID hijo: %ld\n, (long) getpid()); fflush(stdout); sleep(2); else { /* Código PADRE */ if ( (x=wait(&estado))!= pid_hijo) fprintf(stdout, PADRE: interrumpido por señal\n ); else fprintf(stdout, PID padre: %ld / PID hijo: %ld / estado hijo: %d\n, (long) getpid(), (long) pid_hijo, estado); fflush(stdout); exit(0); /* Código PADRE e HIJO */ EUI-SG/INFOR.UVA.ES SO_PR03_ Procesos: exec exec: cambiar la imagen de memoria por la de un ejecutable #include <sys/unistd.h> void execl (const char *path, const char *arg0,..., const char *argn, (char *) 0 ) void execle (const char *path, const char *arg0,..., const char *argn, (char *) 0, char *const envp[]) void execlp (const char *file, const char *arg0,..., const char *argn, (char *) 0 ) #include <sys/unistd.h> void execv (const char *path, const char *argv[]) void execve (const char *path, const char *argv[], const char *envp[]) void execvp (const char *file, const char *argv[]) EUI-SG/INFOR.UVA.ES SO_PR03_
11 Descripción Procesos: exec Cambia la imagen en memoria de un proceso (proceso anfitrión) por la definida en un fichero ejecutable El fichero ejecutable se puede expresar dando exclusivamente su nombre o su ruta completa (ruta + nombre) Algunos atributos del proceso anfitrión se conservan, en particular: El manejo de señales, excepto las señales capturadas para las que se toma la acción por defecto Los identificadores PID y PPID Contadores de tiempo Descriptores de archivo El directorio de trabajo (CWD, Current Work Directory), el directorio raíz y la máscara de permisos por defecto (umask) para creación de archivos Si el bit SETUID del fichero ejecutable está activado, la llamada a exec() establece como UID efectivo (euid) al UID del propietario del fichero ejecutable Ídem para el bit SETGID EUI-SG/INFOR.UVA.ES SO_PR03_ Procesos: exec Descripción (continuación) Posibles errores: Fichero no existente o no ejecutable No se tienen permisos Argumentos incorrectos Memoria o recursos insuficientes Valor de retorno Si EXEC retorna al programa que lo llamó es que ha ocurrido un error y el valor de retorno es 1 EUI-SG/INFOR.UVA.ES SO_PR03_
12 Procesos: exec El código que se ejecuta antes y después de la llamada a exec() es diferente PROCESO ANFITRIÓN Ejecución en el contexto del anfitrión NÚCLEO... if ( execl( /bin/ls, ls, -l, NULL) < 0) { perror( Fallo al ejecutar: ls ); exit(-1);... exec() return /* función main del programa ejecutado */ int main(int argc, char *argv[]) {... El núcleo se encarga además de cambiar la imagen del proceso (el código), de copiar la lista de argumentos de la llamada exec() a los parámetros de la función main() del nuevo programa EUI-SG/INFOR.UVA.ES SO_PR03_ Procesos: exec (ejemplo) #include <stdio.h> #include <sys/types.h> #include <sys/wait.h> int main(void) { pid_t pid_hijo; int estado, x; long i, j; if ( (pid_hijo= fork()) == -1){ /* Código PADRE: Error */ perror( Fallo al hacer fork() ); exit(-1); else if (pid_hijo == 0) { /* Código HIJO */ if ( execl( /bin/ls, ls, -l, NULL) < 0) { perror( Fallo al ejecutar: ls ); exit(-1); else /* Código PADRE */ if ( (x=wait(&estado))!= pid_hijo) { fprintf(stdout, PADRE: interrumpido por señal\n ); fflush(stdout); exit(0); /* Código PADRE e HIJO, aunque el hijo nunca pasará por aquí */ EUI-SG/INFOR.UVA.ES SO_PR03_
13 Redirecciones Redirección de la entrada y la salida estándar Unix/Linux definen tres descriptores con un significado especial, que suelen estar asociados al terminal 0 STD_INPUT: entrada estándar de datos 1 STD_OUTPUT: salida estándar de datos 2 STD_ERROR: salida estándar de errores Redirección de la salida estándar $ ls la > listado.txt Redirección de la entrada estándar $ write fdiaz < mensaje.txt Redirección de la salida de error estándar $ cc hilos.c 2> errores.log listado.txt mensaje.txt errores.log STD_INPUT STD_OUTPUT STD_ERROR STD_INPUT STD_OUTPUT STD_ERROR STD_INPUT STD_OUTPUT STD_ERROR EUI-SG/INFOR.UVA.ES SO_PR03_ Tuberías Comunicación de procesos Unix/Linux La comunicación entre procesos en Unix/Linux puede realizarse mediante tuberías Las tuberías son un tipo especial de ficheros de capacidad limitada con acceso secuencial Las tuberías pueden compartirse (entre procesos relacionados mediante la relación padre-hijo) gracias al mecanismo de herencia $ ls grep txt sort grep txt tuberia1 grep txt tuberia2 grep txt STD_OUTPUT STD_INPUT STD_OUTPUT STD_INPUT STD_OUTPUT 0 tuberia1 0 tuberia2 tuberia1 1 tuberia EUI-SG/INFOR.UVA.ES SO_PR03_
14 Redirecciones: dup y dup2 dup, dup2: Duplicar un descriptor de fichero Descripción int dup (int fd) int dup2 (int fd, int copia_fd) dup: retorna un descriptor de fichero cuya entrada es una copia de la que se corresponde con el parámetro fd. El descriptor que retorna es el descriptor disponible más bajo dup2: cierra el descriptor que corresponde a copia_fd y luego copia la entrada del correspondiente al primer parámetro fd sobre la del segundo parámetro copia_fd Valor de retorno Nuevo descriptor del fichero -1 en caso de error (descriptor no válido o se supera el máximo de ficheros abiertos, OPEN_MAX) EUI-SG/INFOR.UVA.ES SO_PR03_ Redirecciones: Ejemplo #include <sys/types.h> #include <sys/stat.h> #include <stdio.h> #include <fcntl.h> #define NEW (O_WRONLY O_CREAT O_EXCL) #define PERM (S_IRUSR S_IWUSR S_IRGRP S_IROTH) int redirigir_sal (const char *fich) { int fd; if ( (fd=open(fich, NEW, PERM)) == -1 ) return 1; if ( dup2(fd, STDOUT_FILENO) == -1) return 1; close(fd); return 0; int main (int argc, char * argv[]) { int fd_origen, fd_destino; if (argc < 3) { fprintf(stderr, Uso: %s fich_salida orden args\n, argv[0]); if (redirigir_sal(argv[1]) == -1) { fprintf(stderr, No se puede redirigir salida hacia %s\n, argv[1]); if ( execvp(argv[2], &argv[2]) < 0) { fprintf(stderr, no se puede ejecutar %s\n, argv[2]); EUI-SG/INFOR.UVA.ES SO_PR03_
15 Tuberías: pipe pipe: Creación de una tubería (en memoria) Descripción int pipe (int desc[2]) pipe: crea una estructura de datos en memoria, denominado tubería e inicialmente vacía, que se maneja como una cola FIFO de bytes Las tuberías son un mecanismos de comunicación entre proceso Unix/Linux Tras realizar la llamada, desc[0] es un descriptor de fichero válido para leer de la tubería (salida), mientras que desc[1] es un descriptor de fichero válido para escribir en la tubería (entrada) La capacidad máxima de una tubería está limitada por la implementación, Las tuberías junto con los descriptores de acceso son heredados por los procesos hijos y preservados tras la ejecución de exec Valor de retorno 0 si no hay error -1 en caso de error (array de descriptores desc no válido o se supera el máximo de ficheros abiertos, OPEN_MAX) EUI-SG/INFOR.UVA.ES SO_PR03_ Tuberías Lectura de una tubería Una vez abierta una tubería, por ejemplo, mediante pipe, puede leerse de la tubería, utilizando la llamada al sistema read, con una serie de consideraciones especiales: Si existen bytes disponibles, se leen como mucho los solicitados en la llamada a read Si en la tubería no hay datos, read suspende al proceso que lo invoca hasta que existan datos en la tubería (se puede evitar esta situación utilizando el modo de lectura no bloqueante O_NONBLOCK mediante la llamada al sistema fnctl) Cuando no existe ningún descriptor de escritura asociada a la tubería (tanto del proceso lector como de cualquier otro proceso) read no suspende al proceso y retorna el valor 0, indicando así la condición de final de datos en la tubería (final de fichero) EUI-SG/INFOR.UVA.ES SO_PR03_
16 Tuberías Escritura en una tubería Una vez abierta una tubería, por ejemplo, mediante pipe, puede escribirse en la tubería, utilizando la llamada al sistema write, con una serie de consideraciones especiales: Si existe capacidad suficiente en la tubería para almacenar la cantidad de bytes solicitados en la llamada a write, éstos se almacenan en la tubería al final y, además, la operación puede considerarse atómica Si no se pueden almacenar los datos de la escritura porque no hay suficiente sitio, el proceso escritor se bloquea hasta que exista disponibilidad de espacio Si se intenta escribir en una tubería que no posee ningún descriptor de lectura asociado (tanto del proceso escritor como de cualquier otro proceso), el proceso que intenta escribir recibe la señal SIGPIPE. Este mecanismo facilita la eliminación automática de una cadena de procesos comunicados por tuberías cuando se aborta inesperadamente un componente de la cadena EUI-SG/INFOR.UVA.ES SO_PR03_ Tuberías: Ejemplo 1 #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <sys/types.h> #include <sys/wait.h> int main (int argc, char *argv[]) { int i, fd[2], pid[2]; /* Comprobación argumentos */ if (argc < 2) { fprintf(stderr, Uso: %s filtro\n, argv[0]); /* Creación recurso tubería, por el padre */ pipe(fd); /* 1er hijo, ejecuta ls */ if ( (pid[0]= fork()) == 0) { dup2(fd[1], STDOUT_FILENO); close(fd[0]); close(fd[1]); execlp( /bin/ls, ls, NULL); perror( Hijo1: Fallo al hacer exec ); /* 2do hijo, ejecuta filtro */ if ( (pid[1]=fork()) == 0) { dup2(fd[0], STDIN_FILENO); close(fd[0]); close(fd[1]); execvp(argv[1], &argv[1]); perror( Hijo2: Fallo al hacer exec ); /* El padre no interviene */ close(fd[0]); close(fd[1]); for (i=0; i<2; i++) wait(pid[i], NULL); exit(0); Hijo1 ls fd[1] -> STDOUT fd[0] Padre fd[1] fd[0] -> STDIN Hijo2 filtro EUI-SG/INFOR.UVA.ES SO_PR03_
17 Tuberías: Ejemplo 2 #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/wait.h> #define TAM 256 int main (int argc, char *argv[]) { int fd[2], status; char buffer[tam]; unsigned lon; if (argc!= 1) { fprintf(stderr, Uso: %s\n,argv[0]); /* Creación recurso tubería */ pipe(fd); switch (fork()) { case 1: fprintf(stderr, Error al hacer fork ); break; case 0: /* Código del hijo */ dup2(fd[1], STDOUT_FILENO); close(fd[0]); close(fd[1]); fprintf(stderr, Hijo[%ld] va a escribir en la tuberia\n,(long)getpid()); sprintf(buffer, MENSAJE ESCRITO POR EL HIJO [%ld], (long)getpid()); lon=strlen(buffer)+1; if ( write(1, buffer, lon)!= lon ) { fprintf(stderr, Fallo al escribir el hijo\n ); break; default:/* Código del padre */ dup2(fd[0], STDIN_FILENO); close(fd[0]); close(fd[1]); fprintf(stderr, Padre[%ld] va a leer de la tuberia\n,(long)getpid()); while ( (wait(&status)==-1) && (errno==eintr) ); if ( read(0, buffer, TAM) <= 0) { fprintf(stderr, Fallo al leer el padre\n ); printf("proceso PADRE (mensaje leido): %s\n", buffer); exit(0); EUI-SG/INFOR.UVA.ES SO_PR03_
Redirecciones y Tuberías
Redirecciones y Tuberías Ampliación de Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Redirecciones Redirección de la entrada y la salida estándar Unix/Linux definen
Introducción y Gestión de Procesos
Introducción y Gestión de Procesos Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Llamadas al sistema Concepto Constituye el juego de instrucciones del sistema operativo
Práctica 1: Intérprete de mandatos. Sistemas Operativos Área de Arquitectura y Tecnología de Computadores
Práctica 1: Intérprete de mandatos Introducción Desarrollo de un intérprete de mandatos (minishell) en UNIX/Linux en lenguaje C. Debe permitir: Ejecución de mandatos simples ls, cp, mv, rm, etc. Ejecución
Funciones POSIX (I): Introducción
Funciones POSIX I Funciones POSIX I Llamadas al Llamadas al Sistema Sistema Gestión Básica Gestión Básica de Procesos de Procesos Procesos Procesos fork fork Señales Señales getpid getpid Memoria Memoria
Boletín 4- Procesos. Departamento de Lenguajes y Sistemas Informáticos
Boletín 4- Procesos Departamento de Lenguajes y Sistemas Indice 1. Introducción n (Procesos) 2. Identificadores de usuarios y procesos 3. La llamada fork() 4. Las llamadas wait() y exit() 5. La llamada
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
MC Hilda Castillo Zacatelco PROCESOS
MC Hilda Castillo Zacatelco [email protected] 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
Sistemas Operativos sesión 12: tuberías
Sistemas Operativos sesión : tuberías Grado en Ingeniería Informática Universidad Carlos III de Madrid Agenda Linux Comunicación con tuberías Ejercicios Agenda Linux Comunicación con tuberías Ejercicios
Biblioteca de sistema
* Para la realización del presente examen se aconseja un tiempo de 2 horas. Teoría 1. Explique en detalle cómo se pasa una llamada al sistema operativo. El sistema operativo se activa cuando debe responder
Llamadas al Sistema para la Creación de Procesos
Llamadas al Sistema para la Creación de Procesos Transparencias realizadas por M. Curiel. Se utiliza material ya publicado en la WEB y elaborado por todos los prof. que hemos dado el curso. Llamada al
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
Prácticas de Sistemas operativos
Prácticas de Sistemas operativos David Arroyo Guardeño Escuela Politécnica Superior de la Universidad Autónoma de Madrid Segunda Semana: Procesos, Procesos Padre y Procesos Hijo, familia exec() 1 Entregas
Concurrencia en UNIX / LINUX. Introducción: Procesos e Hilos POSIX
Concurrencia en UNIX / LINUX Introducción: Procesos e Hilos POSIX El estándar POSIX POSIX: Interfaz de sistemas operativos portables. Basado en UNIX A pesar de que UNIX es ya de por sí estándar, había
Un ejemplo: UNIX PROCESOS UNIX
PROCESOS UNIX Un ejemplo: UNIX Cada proceso sólo puede tener un flujo: el concepto proceso engloba todo Dos llamadas implicadas en la creación de procesos crear proceso cargar programa La relación de procesos
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
Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid
Manejo de Señales Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Señales Concepto Evento que interrumpe la ejecución normal de un proceso La acción por defecto suele
Sistemas Operativos Práctica 3
Sistemas Operativos Práctica 3 Ing. Andrés Bustamante [email protected] Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que
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
Clases 04 y 05: Repaso de programación de sistemas basados en UNIX
Clases 04 y 05: Repaso de programación de sistemas basados en UNIX Prof. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco [email protected] Estructuras de datos (Prof.
PROCESOS. Sistemas Operativos
PROCESOS Un proceso es un programa que se encuentra en ejecución. Un proceso no sólo es una copia del programa, sino que el núcleo le añade: un segmento de texto, un segmento de datos y un segmento de
ASIGNATURA: SISTEMAS INFORMÁTICOS INDUSTRIALES. CURSO 4º GRUPO Octubre 2015
2. Problema de Análisis y Diseño Orientado a Objetos (10 puntos - 20 minutos) Para el código de test adjunto, se pide. 1. Diagrama de clases de diseño (2.5 puntos). 2. Implementación en C++ de la solución
Ejercicios sobre tuberías
Boletín 3. Ejercicios sobre tuberías July 14, 016 1. Indica de manera justificada si las siguientes afirmaciones sobre la utilización de tuberías como mecanismo de sincronización entre dos procesos son
Prácticas de Sistemas operativos
Prácticas de Sistemas operativos David Arroyo Guardeño Escuela Politécnica Superior de la Universidad Autónoma de Madrid Tercera Semana: Comunicación entre procesos con Tuberías 1 Entregas 2 Introducción
Procesos e hilos: el downloader
Departamento de Automática 1 / 8 Descarga de archivos con procesos en paralelo Objetivo principal: descarga de un archivo de gran tamaño de forma eficiente desde Internet Otros objetivos: Utilizar la biblioteca
Introducción a Sistemas Operativos: Ficheros
Introducción a Sistemas Operativos: Ficheros Clips Fr ancisco J Ballesteros 1. Entrada/Salida Es importante saber cómo utilizar ficheros. En UNIX, es aún más importante dado que gran parte de los recursos,
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...
PRÁCTICA 1: PROCESOS Y COMUNICACIÓN ENTRE PROCESOS
PRÁCTICA 1: PROCESOS Y COMUNICACIÓN ENTRE PROCESOS v1.3.0 Rodrigo García Carmona Antes de empezar la práctica, copia los ficheros que se encuentran en la carpeta SOS-Practica_1-Materiales al directorio
TP II Procesos Pesados
TP II Procesos Pesados Objetivo: Desarrollar una serie de funciones que encapsulen cierta funcionalidad vinculada con la gestión de procesos y consola para luego reutilizarlas en la construcción de un
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
Tema 3. Estructuras de control
Tema 3. Estructuras de control 3.1. Secuencial 3.2. Selección 3.3. Repetición 2 Objetivos Objetivos del tema: Conocer y saber la utilidad de las tres estructuras de control (secuencial, alternativa y repetitiva)
Introducción a Sistemas Operativos: Comunicación entre Procesos
Introducción a Sistemas Operativos: Comunicación entre Procesos Clips xxx Fr ancisco J Ballesteros 1. Pipefroms Otra función de utilidad realiza el trabajo inverso, permite leer la salida de un comando
Examen Final de Teoría. Grupo de teoría:
Preguntas Cortas (2 puntos) 1. Respecto a la optimización de gestión de memoria CoW, explica brevemente: a. Qué soporte hardware utiliza el sistema para poder implementarla? b. Qué permisos aplica el sistema
Procesos Definición y Estados
Procesos Definición y Estados Profesorado de Informática CeRP del Suroeste, Uruguay Contenidos Qué es un proceso Estructuras de datos para gestionar procesos API para trabajar con procesos Hilos (threads).
Sistemas Operativos. Iván Bernal, Ph.D. 4. Escuela Politécnica Nacional email: [email protected]. 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:
Examen Final de SO Grau
Preguntas cortas 1. (0,5 puntos) Asumiendo que ninguna llamada devuelve error, representa las entradas nuevas de la TFA que aparecerán tras la ejecución del siguiente código: fork(); mknod( pipe, S_IFIFO
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 Quinta semana: señales 1 Cronograma semanal 2 Entregas 3 Introducción 4 Envío de
- 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
TEMA 7. Programación en UNIX. Contenido
TEMA 7 Contenido Programación en UNIX 7.1. Introducción 7.2. Gestión de Errores 7.3. Gestión de Ficheros Regulares 7.3.1. Apertura de un fichero: open() 7.3.2. Lectura de datos de un fichero: read() 7.3.3.
Teoría. Procesos. Escuela Politécnica Superior Universidad Autónoma de Madrid 1
Grupos Realización Entrega/Evaluación Lunes 22 de Febrero, 1, 8, 15 de Marzo 22 de Marzo Martes 23 de Febrero, 2, 9 y 16 de Marzo 23 de Marzo Miércoles 24 de Febrero, 3, 10 y 17 de Marzo 24 de Marzo Viernes
Gestión de procesos en UNIX
PROCESOS UNIX Gestión de procesos en 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
Sistemas operativos: una visión aplicada. Capítulo 5 Comunicación y sincronización de procesos
Sistemas operativos: una visión aplicada Capítulo 5 Comunicación y sincronización de procesos Sistema multiprogramado con un una CPU Proceso A Proceso B Proceso C Tiempo Sistemas operativos: una visión
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.
2. Problema de Análisis y Diseño Orientado a Objetos (4 puntos - 25 minutos)
APELLIDOS NOMBRE Nº Mat. UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA Y DISEÑO INDSUTRIAL Departamento Electrónica, Automática e Informática Industrial ASIGNATURA: SISTEMAS
El tiempo de búsqueda es de 3 + 0,04 x ms, siendo x el número de cilindros a recorrer.
1 SISTEMA DE FICHEROS Problema 1.1 La cola de acceso a un disco tiene las siguientes peticiones (solamente indicaremos el cilindro afectado). 10, 200, 75, 32, 450, 123. El tiempo de búsqueda es de 3 +
SISTEMAS OPERATIVOS II Tercer curso Ingeniería Informática. Curso
SISTEMAS OPERATIVOS II Tercer curso Ingeniería Informática. Curso 2008-2009 Práctica 2: Procesos en UNIX. Ejecución en esgundo plano, credenciales, prioridad, redirección. Continuar la codificación de
Funciones POSIX III Funciones POSIX III. No Nombrados Nombrados. sem_open sem_open. sem_close sem_close. sem_unlink sem_unlink
Funciones POSIX III Funciones POSIX III Sincronización Sincronización Procesos Procesos Semáforos Semáforos (sem_t) (sem_t) Sincronización Sincronización Threads Threads Mutex Mutex (pthread_mutex_t) (pthread_mutex_t)
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
Fundamentos de los Sistemas Operativos. Tema 2. Procesos José Miguel Santos Alexis Quesada Francisco Santana
Fundamentos de los Sistemas Operativos Tema 2. Procesos 1998-2015 José Miguel Santos Alexis Quesada Francisco Santana Contenidos del Tema 2 Qué es un proceso Estructuras de datos para gestionar procesos
Resuelva con una orden UNIX las siguientes tareas:
Examen de Laboratorio de Sistemas Operativos. Convocatoria Diciembre. Curso 2008/09. Tercero Ingeniería Informática Nombre: Apellidos: 25 de Noviembre de 2009 [Cuestión 1.] Resuelva con una orden UNIX
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 /
Sistemas Operativos Grado Ingeniera Informática UDC. Enero 2016 Sólo puede usar lápiz, bolígrafo y calculadora. Tiempo máximo para todo el examen: 3h
Sistemas Operativos Grado Ingeniera Informática UDC. Enero 2016 Sólo puede usar lápiz, bolígrafo y calculadora. Tiempo máximo para todo el examen: 3h Parte Sistema Ficheros (Sen deben contestar correctamente
SISTEMAS OPERATIVOS PROCESOS. Pedro de Miguel Anasagast
SISTEMAS OPERATIVOS PROCESOS Pedro de Miguel Anasagast ÍNDICE Conceptos generales de procesos Multitarea Servidores y demonios Servicios UNIX de gestión de procesos Señales y temporizadores Servicios UNIX
Objetivos y Temario CURSO LINUX. PRINCIPIOS BASICOS
Objetivos y Temario CURSO LINUX. PRINCIPIOS BASICOS OBJETIVOS Este curso sobre GNU/Linux se dirige a cualquier informático que desee dominar los principios básicos de este sistema operativo o que quiera
Sistemas Operativos Primer Recuperatorio Parcial 1
1.- El siguiente código intenta representar la solución a la siguiente problemática: Un proceso crea un conjunto de procesos hijos al mismo nivel y le asigna a cada uno una tarea determinada, cada proceso
Bloque I: Principios de sistemas operativos
Bloque I: Principios de sistemas operativos Tema 1. Principios básicos de los sistemas operativos Tema 2. Concurrencia Tema 3. Ficheros Tema 4. Sincronización y programación dirigida por eventos Tema 5.
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
Sistemas Operativos I Práctica 1. Técnica de procesos múltiples El intérprete de comandos. Diana Rosario Pérez Marín Febrero 2007 EPS-UAM
Sistemas Operativos I Práctica 1 Técnica de procesos múltiples El intérprete de comandos Diana Rosario Pérez Marín Febrero 2007 EPS-UAM Introducción La página web de la asignatura es www.ii.uam.es/~so1
Tema 4: Padre e hijo
Tema 4: Padre e hijo Enrique Soriano Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC 11 de marzo de 2010 (cc) 2010 Grupo de Sistemas y Comunicaciones. Algunos derechos reservados. Este
LINUX fork() execv() wait() exit() kill signal pipe creat close open read write fstat Chmod getuid, setuid, getgid setgid
LINUX El sistema operativo Linux nace en la Universidad de Helsinki, en Finlandia de las manos de Linux Trovalds que contaba con la ayuda de muchos colaboradores expertos en Unix. Este sistema operativo
Sistemas Operativos. Procesos
Sistemas Operativos Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor de proceso
Taller de Sistemas Operativos. Procesos 2012
Taller de Sistemas Operativos Procesos 2012 Agenda Introducción PCB (task_struct) Agrupaciones de procesos Estado de un proceso Cambio de proceso (task switch) Creación y destrucción de un proceso Threads
Taller de Sistemas Operativos Introducción
Taller de Sistemas Operativos Introducción Escuela de Ingeniería Civil en Informática Universidad de Valparaíso, Chile http:// Conceptos generales 2 Proceso stdin Descriptor Flujo (FILE*) 0 stdout 1 Proceso
1. Procesos vs Hilos 2. Cuando se ejecutan los procesos 3. Fork 4. Clone 5. Cómo se ejucuta el fork? 6. do_fork() 7. copy_process 8.
1. Procesos vs Hilos 2. Cuando se ejecutan los procesos 3. Fork 4. Clone 5. Cómo se ejucuta el fork? 6. do_fork() 7. copy_process 8. Código Proceso Manejados por el sistema operativo Memoria independiente
SISTEMAS OPERATIVOS INTRODUCCIÓN. Pedro de Miguel Anasagast
SISTEMAS OPERATIVOS INTRODUCCIÓN Pedro de Miguel Anasagast INTRODUCCIÓN AL SISTEMA OPERATIVO MÁQUINA DESNUDA Máquina desnuda: Término que se aplica a un computador carente de sistema operativo. El término
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
Apartado Puntuación. No Presentado
Apartado 1 2 3 4 5 6 7 Puntuación No Presentado EXAMEN DE SISTEMAS OPERATIVOS (Grado en Ing. Informática), Julio 2015. APELLIDOS Y NOMBRE:....................................................... Justificar
