Prácticas de Sistemas operativos

Documentos relacionados
Prácticas de Sistemas operativos

Prácticas de Sistemas operativos

Prácticas de Sistemas operativos

Biblioteca de sistema

Tema 4: Gestión de Procesos

Procesos y Threads Procesos y Threads. Concurrencia Concurrencia Ventajas Ventajas. Rendimiento Rendimiento (paralelismo) (paralelismo)

MC Hilda Castillo Zacatelco PROCESOS

Introducción y Gestión de Procesos

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

Funciones POSIX (I): Introducción

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

Boletín 4- Procesos. Departamento de Lenguajes y Sistemas Informáticos

Sistemas Operativos Práctica 3

Procesos Definición y Estados

Boletín 4- Procesos. Departamento de Lenguajes y Sistemas Informáticos

Sistemas Operativos Practica 1: procesos y concurrencia.

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

1. Sistema Operativo Unix

Concurrencia en UNIX / LINUX. Introducción: Procesos e Hilos POSIX

Sistemas Operativos sesión 12: tuberías

Sistemas Operativos. Procesos

Prácticas de Sistemas Operativos

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

Tema 2. Administración de procesos

Un ejemplo: UNIX PROCESOS UNIX

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

PROCESOS. Sistemas Operativos

Contenido. Principales requisitos de los sistemas operativos. Proceso. Tema 3

Tema 3. Descripción y Control de Procesos. Stallings:

Sistemas Operativos Procesos Descripción y Control

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

Tema II. Descripción y control de procesos. UNED Manuel Fernández Barcell. Blog:

Llamadas al Sistema para la Creación de Procesos

Gestión de procesos en UNIX

Sistemas Operativos I Manual de prácticas

SISTEMAS OPERATIVOS: PROCESOS. Introducción a la gestión de Procesos

Sistemas Operativos Primer Parcial Tema2

Sistemas operativos: una visión aplicada. Capítulo 3 Procesos

Tema 3. Estructuras de control

Fundamentos de los Sistemas Operativos. Tema 2. Procesos José Miguel Santos Alexis Quesada Francisco Santana

Prácticas de Sistemas operativos

SISTEMAS OPERATIVOS:

1. Sistema Operativo Unix

PRÁCTICA 1: PROCESOS Y COMUNICACIÓN ENTRE PROCESOS

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

Formatos para prácticas de laboratorio

Sistemas Operativos. Grado Ingeniería Informática. TGR Procesos.

Procesos e Hilos en C

Estructura de los sistemas de cómputo

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

SISTEMAS OPERATIVOS: PROCESOS. Planificación de procesos

Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México

Tema 12: El sistema operativo y los procesos

Microprocesadores. Introducción al Lenguaje C - Parte IV. Prof. Luis Araujo. Universidad de Los Andes

Tema 2: Programas y procesos

Bloque I: Principios de sistemas operativos

SISTEMAS OPERATIVOS: Lección 4: Planificación de Procesos

Llamadas al sistema básicas de control de procesos

SOLUCION EXAMEN junio 2006

PROTOCOLOS PARA LA INTERCONEXIÓN DE REDES

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

Fundamentos de la programación

Ejercicios sobre tuberías

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

Relación de problemas. Sistemas Operativos II

Procesos y API. Rodolfo Baader. Departamento de Computación, FCEyN, Universidad de Buenos Aires, Buenos Aires, Argentina

Introducción a los Sistemas Operativos S.O.

PRÁCTICAS DE SS.OO. Universidad de Murcia. I.I./I.T.I. Sistemas/I.T.I. Gestión

Hilos Secciones Stallings:

Programación de Multitareas utilizando Hilos

Cilk. Un entorno de programación paralela. Tomás Muñoz Rodríguez < > 17 de noviembre de 2011

Introducción general al Lenguaje C (2010/2011)

Concepto de proceso. (c) 2006 Alexis Quesada / Francisco J. Santana 2

Características generales del lenguaje de programación C

UNIVERSIDAD DE BELGRANO FAC. ING. Y TECNOLOGIA INFORMATICA SISTEMAS OPERATIVOS UNIDAD 2 PROCESOS - CONCEPTOS

Unidad 2: Gestión de Procesos

Threads. Hilos - Lightweight process - Procesos ligeros

IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++

PRACTICA # 3 PROCESOS (CONTINUACION)

SISTEMAS. Ciclo 2014 Plan 2012

Programación I Teoría I.

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

SISTEMAS OPERATIVOS INTRODUCCIÓN. Pedro de Miguel Anasagast

Tema 4: Padre e hijo

Preliminares: programación con C++

Prof. Dr. Paul Bustamante

ASIGNATURA: SISTEMAS INFORMÁTICOS INDUSTRIALES. CURSO 4º GRUPO Octubre 2015

EJERCICIOS PRÁCTICOS: LLAMADAS A PROCEDIMIENTOS REMOTOS

Iniciación concreta a los sistemas operativos

Planificador de procesos Creación de hilos y subprocesos. terminación de un hilo y notificarla Ejecución de programas desde ficheros ejecutables

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

LENGUAJES DE PROGRAMACIÓN. Solución al Ejercicio de Autocomprobación 1

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

Prof. Dr. Paul Bustamante

Procesos y Señales. Laboratorio de Arquitectura de Ordenadores

Capítulo 2 Introducción a los sistemas operativos

Transcripción:

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 2 Procesos Fork Estados de un proceso Terminación de procesos Wait Exec

Entregas Ejercicios 2, 3, 4, 5,6, 7 y 8 Ejercicios 4, 5, 6 y 8

Definición de proceso Instancia de un programa en ejecución Programa = 1 o más procesos Proceso espacio en memoria + datos: conjunto de estructuras de datos Elemento central en un SO SO gestión de procesos

Programa Colección de instrucciones y de datos almacenados en un fichero (a.out) Conjunto de cabeceras atributos del fichero Texto del programa intrucciones lenguaje máquina bss: block started by symbol datos a inicializar al arrancar Otras secciones

Proceso Programa leído por el núcleo y cargado en memoria para ejecutarse Segmento de texto instrucciones CPU Segmento de datos variables estáticas y globales Segmento de pila marcos de pila

Marcos de pila Ejecución función marco de pila Información necesaria para restaurar el marco de pila anterior a la llamada Contador de programa y puntero de pila anteriores a la llamada a la función

Modos de ejecución Modo usuario Pila: argumentos, variables locales, datos funciones en modo usuario Modo supervisor Marcos de pila de las llamada a sistema

Estructuras de control del SO Tabla de memoria Tabla de dispositivos de E/S Tabla de ficheros Tabla de procesos

Estructuras de control del SO Tabla de memoria Gestión de la memoria principal y secundaria Asignación de memoria a procesos, atributos de protección de memoria, información para gestionar memoria Tabla de dispositivos de E/S Tabla de ficheros Tabla de procesos

Estructuras de control del SO Tabla de memoria Tabla de dispositivos de E/S Administración de dispositivos y canales de E/S Almacena si dispositivo asignado a proceso Estado del dispositivo: información en curso Tabla de ficheros Tabla de procesos

fork man fork Proceso en UNIX: entidad tras llamada a fork... salvo el proceso número 0 Proceso padre fork proceso hijo proceso PID Proceso 0: tras arrancar el sistema fork init (proceso 1 arrancar /etc/rc*): proceso 0, intercambiador gestión de la memoria virtual

Estados de un proceso llamada al sistema o interrupción 9 sacar de MP 4 exit dormir 1 2 despertar sacar de MP retorno 3 7 cambio de contexto orden en ejecución sí memoria introducir en MP 1 Ejecución modo usuario 2 Ejecución modo supervisor 3 en MP: listo para ejecutarse 4 en MP: durmiendo 5 en MS: listo para ejecutarse 6 en MS: durmiendo 8 fork 6 5 no memoria

#include <u n i s t d. h> #include <s t d l i b. h> #include <s t d i o. h> i n t main ( i n t argc, char argv [ ], char env [ ] ) { i n t i, a=1; for ( i =0; i <10; i ++){ switch ( f o r k ( ) ) { case 0: a = 3; p r i n t f ( a=%d\n, a ) ; break ; p r i n t f ( a=%d\n, a ) ; e x i t ( 0 ) ;

Llamada a fork I 1 Verificar si espacio en tabla de procesos 2 Asignar memoria al proceso hijo 3 Imagen proceso padre memoria proceso hijo 4 Hallar una ranura de proceso libro y copiar la ranura del proceso padre en él 5 Asociar mapa de memoria a la tabla del proceso 6 Elegir un pid para el proceso hijo

Llamada a fork II 7 Notificar la existencia del proceso hijo al kernel y al sistema de archivo 8 Informar del mapa de la memoria del proceso hijo al kernel 9 Enviar mensajes de notificación al proceso padre y al proceso hijo

Por qué puede fallar fork? Hay que controlar la respuesta de fork

Por qué puede fallar fork? Hay que controlar la respuesta de fork No hay recuros suficientes

Por qué puede fallar fork? Hay que controlar la respuesta de fork No hay recuros suficientes Número máximo de procesos en ejecución

#include <s t d l i b. h> #include <s t d i o. h> i n t main ( i n t argc, char argv [ ], char env ) { i n t i = 0; switch ( f o r k ( ) ) { case 1: p e r r o r ( E r r o r a l crear procesos ) ; e x i t ( 1) ; break ; case 0: while ( i <10) { sleep ( 1 ) ; p r i n t f ( \ t \ t Soy e l proceso h i j o : %d\n, i ++) ; break ; default : while ( i <10){ p r i n t f ( Soy e l proceso padre : %d\n, i ++) ; sleep ( 2 ) ; ;

Terminación de procesos #include <s t d l i b. h> void e x i t ( i n t s t a t u s ) ;... #include <sys / w ait. h> p i d t wait ( i n t s t a t l o c ) ;... p i d t pid ; i n t estado ;... pid = wait (& estado ) ; pid = wait (NULL) ;

#include <sys / w ait. h> #include <s t d l i b. h> #include <s t d i o. h> # define NUM PROCESOS 5 i n t I = 0; void codigo del proceso ( i n t i d ) { i n t i ; for ( i =0; i <50; i ++){ p r i n t f ( Proceso %d : i = %d, I = %d\n, id, i, I ++) ; e x i t ( i d ) ;

main ( ) { i n t p, pid, s a l i d a ; i n t i d [NUM PROCESOS] = {1,2,3,4,5; for ( p=0; p<num PROCESOS; p++){ pid = f o r k ( ) ; i f ( pid == 1){ p e r r o r ( E r r o r a l crear un proceso : ) ; e x i t ( 1) ; else i f ( pid == 0) codigo del proceso ( i d [ p ] ) ; for ( p=0; p < NUM PROCESOS; p++){ pid = wait (& s a l i d a ) ; p r i n t f ( Proceso %d con i d = %x terminado \n, pid, salida >>8) ;

#include <u n i s t d. h> #include <s t d i o. h> #include <s t d l i b. h> i n t main ( ) { p i d t pid, ppid ; / / obtener e l pid del proceso pid = g e t p i d ( ) ; / / obtener e l pid del padre del proceso ppid = getppid ( ) ; p r i n t f ( Mi pid e : %d\n, pid ) ; p r i n t f ( El pid de mi padre es %d\n, ppid ) ; return 0;

Familia exec No se debe realizar ningún tratamiento tras llamada a exec Sólo tratamiento de error: exec no vuelve a la función que la llaman a menos que se produzca un error

#include <u n i s t d. h> #include <s t d l i b. h> #include <s t d i o. h> i n t main ( i n t argc, char argv [ ] ) { / / Para e j e c u t a r ls, l o s argmuentos de entrada son : l s l / bin char l s a r g s [ 4 ] = { / bin / l s, l, / bin, NULL ; / / ejecuta l s execv ( l s a r g s [ 0 ], l s a r g s ) ; / / aqui solo se l l e g a s i se ha producido un e r r o r p e r r o r ( execv ha f a l l a d o ) ; return 2; / / se devuelve codigo de e r r o r

#include <u n i s t d. h> #include <s t d l i b. h> #include <s t d i o. h> i n t main ( i n t argc, char argv [ ] ) { char l s a r g s [ 4 ] = { l s, l, / bin, NULL ; execvp ( l s a r g s [ 0 ], l s a r g s ) ; p e r r o r ( execvp ha f a l l a d o ) ; return 2;

#include <u n i s t d. h> #include <s t d l i b. h> #include <s t d i o. h> #include <sys / types. h> #include <sys / w ait. h> i n t main ( i n t argc, char argv [ ] ) { char l s a r g s [ 4 ] = { l s, l, / bin, NULL ; p i d t pid 0, pid ; i n t s t a t u s ; p i d 0 = f o r k ( ) ; i f ( p i d 0 == 0) { / HIIJO / p r i n t f ( H i j o : ejecutando l s \n ) ; execvp ( l s a r g s [ 0 ], l s a r g s ) ; p e r r o r ( execvp ha f a l l a d o ) ; else i f ( p i d 0 > 0) { / PADRE / i f ( ( pid = wait (& s t a t u s ) ) < 0) { p e r r o r ( w ait ha f a l l a d o ) ; e x i t ( 1 ) ; p r i n t f ( Padre : he terminado \n ) ; else { p e r r o r ( Ha f a l l a d o e l f o r k ) ; e x i t ( 1 ) ; return 0; / / r e t o r n o con e x i t o

Referencias Francisco M. Márquez. Unix, Programación Avanzada. Editorial: Ra-Ma. 3 a Edición. ISBN: 84-7897-603-5