Tema 4: Padre e hijo

Documentos relacionados
Introducción a Java LSUB. 30 de enero de 2013 GSYC

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

Tema 1: Introducción al S.O.

Si el fichero hashes existe, el script debe notificar el error y salir como corresponde. A continuación se muestra un ejemplo:

Sistemas Operativos. Pedro Cabalar TEMA III. PROCESOS. Depto. de Computación Universidade da Coruña

Prácticas de Sistemas Operativos

Sistemas Operativos Práctica 3

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

Procesos e Hilos en C

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

Usando el Sistema Operativo

Sistemas Operativos Practica 1: procesos y concurrencia.

Parte I:Teoría. Tema 3:Introducción a los Sistemas operativos. Instalación

Desarrollo de programas seguros

; hcomment.rc aa.es ;

Laboratorios Linux: mini-curso de supervivencia

Sistemas Operativos I Manual de prácticas

Introducción a Sistemas Operativos: Procesos

1. Sistema Operativo Unix

Llamadas al Sistema. Laboratorio de Arquitectura de Ordenadores

Tema 2: Programas y procesos

GNU/Linux desde la línea de comandos. Pablo Garaizar Sagarminaga (txipi) Alvaro Uría Avellanal (Fermat)

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

Introducción a Java LSUB. 15 de enero de 2015 GSYC

This obra by Sergio Belkin is licensed under a Creative Commons Atribución-CompartirDerivadasIgual 2.5 Argentina License. Procesos.

MOM LSUB. 3 de abril de 2013 GSYC

Examen de Fundamentos de sistemas distribuidos

Sistemas Operativos Ingeniería de telecomunicaciones Sesión 2: Procesos e hilos (modificado 29/10)

Sistema Operativo Linux

Sistemas Operativos Tema 5. Procesos José Miguel Santos Alexis Quesada Francisco Santana

Anexo: Lenguajes de Scripting

Red LSUB. 4 de marzo de 2015 GSYC

Introducción a C++ y Code::Blocks

Shell Script de instalación y configuración para el servicio DHCP en CentOS v5.x. Manual de instrucciones.

Concurrencia y paralelismo

5. Sentencias selectivas o condicionales

TEMA 2: Sistemas Operativos

SOLUCION EXAMEN junio 2006

COMPARTIR ES BUENO <3 UN ZINE PARA TI Y PARA MÍ

DISPONE DE 50 MINUTOS PARA REALIZAR EL EJERCICIO

Procesos 1 / 31. Para entender el concepto de hebra, necesitamos compreender el concepto de proceso

Programación. Test Autoevaluación Tema 3

BUAP FACULTAD DE CIENCIAS DE LA COMPUTACIÓN SISTEMAS OPERATIVOS 2 PRACTICA 2 JAIME MORALES FLORES

Sistemas Operativos. Curso 2016 Procesos

Crear un lanzador, un icono de aplicación, en Gnome

Administración de Redes

S.O.: Asignación de memoria dinámica

Apartado TGR Puntuación. No Presentado. EXAMEN DE SISTEMAS OPERATIVOS (Grado en Ing. Informática) 17/1/2013.

DESARROLLO DE FUNCIONES EN EL SISTEMA INFORMÁTICO EJEMPLO DE CUESTIONES BÁSICAS A CONOCER:

PASOS PARA CREAR FUNCIONES CON VBA

Clases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos

AmayaOS 0.06 UPGRADE. Guía de usuario. 1ª Edición

2 Programas y procesos

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

Sistemas Operativos. Iván Bernal, Ph.D. 4. Escuela Politécnica Nacional I.

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada.

PROGRAMACIÓN DEL SHELL

CURSO: APACHE SPARK CAPÍTULO 3: SPARK CONCEPTOS BÁSICOS.

Generador de analizadores léxicos FLEX

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Tutorial MPLAB v6.x PROYECTO. Creación de Proyecto

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

Unidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas

Tema 6 Organización y gestión de la memoria

Tema: Clases y Objetos en C#. Parte II.

The Atomik Microkernel API Reference, version 0.1 february 2014 (Spanish)

Arquitectura de Computadores: Exámenes y Controles

Cuentas. Guía 1er laboratorio Linux - Comandos - Fork. Programación en C. Linux. Linux: Cuenta (passwd): sisop@labs.cs.uns.edu.ar (sis2013op..

4. DIAGRAMAS DE INTERACCIÓN INTRODUCCIÓN DIAGRAMAS DE SECUENCIA Objetos Mensajes

Procesos. Lecturas recomendadas. Ejemplo: gcc. Modelo de procesamiento. Modelo de procesamiento. Jean Bacon Operating Systems (4)

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

Modelo de procesamiento

Manual de turbo pascal

LEER Y ESCRIBIR ARCHIVOS DE TEXTO CON PHP. FUNCIONES FOPEN (MODOS), FGETS, FPUTS, FCLOSE Y FEOF. EJEMPLOS (CU00836B)

Typeset by GMNI & FoilTEX

- Bajo que condiciones el algoritmo de planifiación de procesos FIFO (FCFS) resultaría en el tiempo de respuesta promedio más pequeño?

Colecciones de Java LSUB. 17 de febrero de 2016 GSYC

1.El objetivo de un depurador

Depurar programas

TEMA 6. Implementación de UNIX. Contenido

Lenguaje programación limbo

Gestión de procesos en UNIX

Departamento de Soporte Occidente. Módulo Misceláneos. Cambiar usuarios:

Software de control y adquisición de datos SCM4000

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior. Trabajo Final

3. Sistemas operativos

Definición de Memoria

Arrays. Programación. Licenciatura de Lingüística y Nuevas Tecnologías

3. Sistemas operativos

Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009

TP N 4 Redirección de entrada y salida estándar

Guía práctica de estudio 02: GNU/Linux

TIPOS DE DATOS EN ABAP

Instalación de Cacti. Marco Antonio Álvarez Iglesias

ATRIBUTOS DE LOS FICHEROS EN LINUX

Comandos Básicos de Linux

Construyendo Programas más Complejos

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

Transcripción:

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 trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial - SinObraDerivada (by-nc-nd). Para obtener la licencia completa, véase http://creativecommons.org/licenses/by-sa/2.1/es. También puede solicitarse a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Hasta ahora...... sólo hemos creado procesos con el Shell. P. ej. term % ls RC PID=344 LS PID=349

Llamadas al sistema Una para crear un proceso (fork) y otra para ejecutar un programa (exec). Podemos crear un nuevo flujo de control, para ejecutar el mismo programa o para ejecutar otro. Podemos configurar el nuevo proceso antes de que ejecute otro programa. Se podría hacer todo en una función, pero tendría demasiados parámetros.

Fork int fork(void); Se crea un proceso con nuevo PID. En el padre, retorna el PID del hijo. En el hijo, retorna 0. ver fork0.c

El hijo es un clon exacto del padre. Padre e hijo ejecutan concurrentemente. El hijo es totalmente independiente del padre: abstracción de proceso. Se copia la memoria: TEXT, DATA, STACK. Qué valor tienen las variables? ver fork1.c, fork2.c, dos.c

Fork: compartiendo recursos La tabla de FDs se copia, pero los Chans abiertos se comparten. Los ficheros abiertos después del fork no estarán el la tabla del otro. PADRE HIJO Tabla de Descriptores 0 1 2 3 4... n Tabla de Descriptores 0 1 2 3 4... n Chan offset: 6 mode: OWRITE file: Sistema de Ficheros

Condiciones de carrera No se sabe el orden en el que se van a ejecutar las instrucciones de los dos procesos. El resultado final depende de la carrera entre los dos procesos: condición de carrera. Programación concurrente: evitar condiciones de carrera.

Exec int exec(char *name, char *argv[]); name es la ruta del fichero ejecutable que queremos cargar. argv[] es un array de strings con los argumentos para el programa. Tiene que terminar en nil. No se puede usar sintaxis del shell! P. ej, $home como argumento, * etc... ver exec.c

Execl int execl(char *name,...); Ideal para cuando se saben los argumentos de antemano. El último argumento tiene que ser nil. ver execl.c

Fork + exec Las dos funciones juntas nos permiten crear procesos para cualquier programa. Desde init, todos los procesos se crean así. ver forkexec.c

Wait Waitmsg *wait(void); Retorna cada vez que un hijo muere. Devuelve una estructura Waitmsg reservada con malloc. pid: id del proceso. time: ms usuario, sistema y real del proceso y descendientes. msg: estatus del proceso. Si no hay hijos por los que esperar, devuelve nil. Si sólo nos interesa el pid, hay otra función: int waitpid(void);. ver wait.c

En el shell comando & : el comando se ejecuta de forma asíncrona, el shell no le espera. $pid : el pid del shell. $apid : el pid del último procesos ejecutado en background.

Programas interpretados Son programas que son interpretados por otros programas. P. ej. scripts de shell. La primera ĺınea del fichero tiene que indicar el programa intérprete. P. ej.: #!/bin/rc

Programas interpretados Son ejecutables, se pueden ejecutar con exec. Cuando Plan 9 ejecuta un fichero de este tipo, ejecuta el programa indicado en esta ĺınea, pasándole el programa interpretado. ver cd.rc, add.hoc