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

Documentos relacionados
2. Problema de Análisis y Diseño Orientado a Objetos (4 puntos - 25 minutos)

MC Hilda Castillo Zacatelco PROCESOS

Nº Mat. Calificación APELLIDOS NOMBRE. CURSO 4º GRUPO Octubre 2014 ASIGNATURA: SISTEMAS INFORMÁTICOS INDUSTRIALES

Impresión por pantalla. 3. Indicar la salida por pantalla (2 puntos-20 minutos)

Nº Mat. Calificación APELLIDOS NOMBRE. CURSO 4º GRUPO Julio 2014 ASIGNATURA: SISTEMAS INFORMÁTICOS INDUSTRIALES

Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid

ASIGNATURA: SISTEMAS INFORMÁTICOS INDUSTRIALES. CURSO 4º GRUPO Diciembre 2013

2. Problema de Algoritmia (5 puntos - 15 minutos)

3.- Resolución a) Salida por pantalla A B B says Ladra! C C says Ladra! D

Introducción y Gestión de Procesos

Capítulo IV: UML estructural.

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

3. Indicar la salida por pantalla (2 puntos-10 minutos)

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo.

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

Programación 1 Tema 5. Instrucciones simples y estructuradas

Introducción a C++ Índice

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

TEMA CÁLCULO DE DISTANCIA ENTRE DOS PUNTOS

Prácticas de Sistemas operativos

Programación 1 Tema 2. Lenguaje de programación y ejecución de un programa

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

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

2. Problema de Análisis y Diseño Orientado a Objetos (5 puntos - 30 minutos)

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

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

Biblioteca de sistema

Programación 1 Tema 5. Instrucciones simples y estructuradas

Ejercicio Sockets Suma Resta. Descripción

Programación 1 Tema 7. Desarrollo modular y descendente de programas

Llamadas al Sistema para la Creación de Procesos

EDITRAN/TR. Windows/Unix. Manual de referencia

2. Problema de Algoritmia (5 puntos - 15 minutos)

Sistemas Operativos Practica 1: procesos y concurrencia.

Programación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 2. Lenguaje de programación y ejecución de un programa

Sistemas Operativos sesión 12: tuberías

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 1

Un ejemplo: UNIX PROCESOS UNIX

Funciones POSIX (I): Introducción

Impresión por pantalla

Fundamentos de la programación

Apellidos: Nombre: Matrícula: Examen Programación para Sistemas Grado en Ingeniería Informática (2009)

Macros LENGUAJE DE PROGRAMACIÓN ESTRUCTURADO

Tema: Plantillas en C++.

Arboles Binarios de Búsqueda en C++

BENEMERITA UNIVERSIDADD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++

Programación 1 Problemas del Composición condicional

Programación 1. Tema II. Diseño de programas elementales. Lección 7. Diseño modular y descendente de programas

Examen de junio de Informática Industrial (04/05)

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Desarrollo de servidores concurrentes

Apunte de clase C++ C++ introduce la posibilidad de realizar comentarios de una sola línea a partir de una doble barra de división "//"

Programación 1 Problemas 3. Composición condicional

ÁRBOL BINARIO. T der. Árbol binario homogéneo es aquel cuyos nodos tienen grado 0 ó 2(no hay ninguno de grado 1).

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

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

Llamadas al sistema básicas de control de procesos

Prof. Dr.Paul Bustamante

Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy. Febrero 2009

Sistemas Operativos Primer Recuperatorio Parcial 1

Guía de la asignatura de Sistemas Informáticos Industriales (ADOO)

Escuela Politécnica Superior de Elche

Prof. Dr. Paul Bustamante

Estructuras de Datos Estáticas. Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos estáticas

Programación I Teoría : Entrada/Salida - Archivos.

Estructuras Enlazadas AyED UTN-BA

Lista de Cotejo. Práctica # 21 Calculo de Volumen de Figuras Geométricas

Introducción y Gestión de Procesos

UTN FRBA Algoritmos y Estructura de Datos Examen Final 13/02/2015. Apellido y nombre: Legajo: Cursó con Prof:

APUNTES PROII 2º PARCIAL.

Prueba de Laboratorio Modelo B01 Semáforos y Memoria Compartida

Prof. Dr. Paul Bustamante

Clases, Objetos y Métodos (I)

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

Programación 1. Tema II. Diseño de los primeros programas. Lección 4. Diseño de algunos programas elementales

Técnicas Informáticas PRÁCTICA 7 Curso PRÁCTICA 7: Cadenas y Estructuras.

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Abstracción. Encapsulamiento. Polimorfismo. Objeto. método / objeto / clase / módulo. Separación de las propiedades de un

TEMA 5: Subprogramas. Programación modular EJERCICIOS DE TRAZAS

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

Procesos e Hilos en C

Sintaxis de los aspectos generales de un lenguaje de programación

Redirecciones y Tuberías

Programación C++(3 Parte) Dr. Oldemar Rodríguez Rojas Maestría en Computación Universidad de Costa Rica

INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS

El lenguaje de Programación C. Fernando J. Pereda

Introducción 1. Fundamentos C++ //programa para imprimir texto #include <iostream>

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

Clases, Objetos y Métodos (II)

Prácticas de Sistemas operativos

Apartado a.- Obtenga un listado de todos los ficheros regulares del sistema terminados en.y ó.c, con permiso de lectura para el grupo.

Sistemas Operativos Primer Examen Parcial 13/07/15

SISTEMAS OPERATIVOS:

HERENCIA. TCuenta. - int numcuenta - string nomcliente - double saldo - double tipointeres

Repaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)

Tema 3. Estructuras de control

Tema: Arreglos de Objetos en C++.

Transcripción:

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 (7.5 puntos). // Código de test int main() Pizarra pizarra; pizarra.add_figuras(figura::factoria(circulo,1)); pizarra.add_figuras(figura::factoria(rectangulo,1,2)); cout << "Lista de figuras:" << endl; pizarra.list(); cout<<"suma total area: "<<pizarra.sumar_areas()<<endl; return 0; ////////////////////////////////////// //Resultado en consola ////////////////////////////////////// Lista de figuras: Circulo de radio 1 Rectangulo de ancho 1 y alto 2 Suma total area: 5.14152

#include <vector> #include <iostream> #include <algorithm> using namespace std; #define PI 3.141516f typedef enumcirculo, RECTANGULO TipoFigura; class Figura protected: TipoFigura eltipo; float area; float getarea() return area; TipoFigura gettipo() return eltipo; static Figura *Factoria(TipoFigura, float, float); ; class Circulo : public Figura friend class Figura; float radio; Circulo(float param):radio(param) eltipo=circulo;area=pi*radio*radio; friend ostream& operator<<(ostream& os, const Circulo * p) return os << "Circulo de radio " << p->radio << endl; ; class Rectangulo : public Figura friend class Figura; float ancho, alto; Rectangulo(float param1, float param2):ancho(param1),alto(param2) eltipo=rectangulo;area=ancho*alto; friend ostream& operator<<(ostream& os, const Rectangulo * p) return os << "Rectangulo de ancho: " << p->ancho << " y alto: " << p->alto << endl; ; void visualizar(figura *); class Pizarra vector<figura *> listafiguras; void add_figuras(figura *p) listafiguras.push_back(p); float sumar_areas() float area = 0; for(int i=0;i<listafiguras.size();i++) area+=listafiguras[i]->getarea(); return (area); void list() for_each(listafiguras.begin(),listafiguras.end(),visualizar); ~Pizarra() for(int i=0;i<listafiguras.size();i++) delete listafiguras[i]; ; Figura * Figura::Factoria(TipoFigura eltipo, float param1, float param2 = 0) if(eltipo == CIRCULO) return new Circulo(param1); else return new Rectangulo(param1,param2); void visualizar(figura *p) if(p->gettipo() == CIRCULO) cout << (Circulo *)p; else cout << (Rectangulo *)p;

3. Problema de Sistemas Operativos (15 puntos - 30 minutos) Dado el siguiente programa: 1 #include <error.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <string.h> 5 #include <unistd.h> 6 #include <sys/types.h> 7 #include <sys/wait.h> 8 9 int main (int argc, char **argv) 10 11 int i, n, estado; 12 pid_t idh; 13 14 n = atoi (argv[1]); 15 fprintf (stdout,"proceso padre: %d, P: %d\n", (int)getppid(), (int)getpid()); 16 17 for (i = 1; i < n; i++) 18 idh = fork (); 19 if(idh == -1) 20 perror ("Error en el fork"); 21 exit (1); 22 23 else if (idh == 0) 24 fprintf (stdout, "Hijo: %d, Padre: %d\n", (int)getpid(), (int)getppid()); 25 break; 26 27 else 28 fprintf (stdout, "Padre: %d, Padre: %d\n", (int)getpid(), (int)getppid()); 29 30 31 32 if (idh == 0) 33 fprintf (stdout, "Finalizado el hijo: %d\n", (int) getpid ()); 34 else 35 wait (&estado); 36 fprintf (stdout, "Finalizado el proceso P: %d\n", (int) getpid ()); 37 38 39 return 0; 40 Responda de forma breve y concisa las siguientes cuestiones teniendo en cuenta que el proceso padre P tiene el 500, que los procesos siguientes incrementan en una unidad el según se van creando y que durante la ejecución de P no se crean más procesos en el sistema:

1. (3 puntos) Dibuje el diagrama jerárquico de procesos creados indicando los de los procesos al invocar la ejecución del proceso desde una shell de la forma siguiente:./p 4 500 501 502 503 2. (2 puntos) Indique una posible traza de ejecución obtenida en la invocación anterior. Se supone que el proceso bash tiene el 100. Proceso padre: 100, P: 500 Padre: 500, Padre: 100 Hijo: 501, Padre: 500 Finalizado el hijo: 501 Finalizado el proceso P: 500 Hijo: 502, Padre: 100 Hijo: 503, Padre: 100 Finalizado el hijo: 502 Finalizado el hijo: 503 3. (2 puntos) Razone si en el caso anterior podría existir algún proceso huérfano y/o algún proceso zombie. En caso de que pudiera existir, escriba el código necesario para solucionarlo, indicando las líneas donde lo incluiría. Sí que pueden existir procesos huérfanos ya que, como el padre no hace un wait por todos los hijos, si el padre finaliza antes que los hijos, éstos se quedan huérfanos y son heredados por el proceso Init. También pueden existir procesos en estado zombie ya que pueden finalizar antes que el padre y desde que los hijos terminan hasta que el padre hace un wait por ellos se quedan en dicho estado. Para solucionarlo, en la línea 35 se pondría este código para que el padre espere a que todos los hijos finalicen: 35 for (i = 1; i < n; i++) 36 wait (&estado); 37 4. (3 puntos) Si se añade la siguiente línea de código en la primera ejecución del hijo (línea 24): execlp(argv[2], argv[2], NULL); y se ejecuta el programa desde la shell mediante:./p 4 date, indique cómo cambiaría la jerarquía de procesos respecto a la del apartado 1 e indique una posible traza de ejecución. NOTA: El mandato date imprime la hora del sistema.

La jerarquía de procesos no cambia respecto al apartado 1. Sin embargo, la traza de ejecución sí. Una posible traza es: Proceso padre: 100, P: 500 Padre: 500, Padre: 100 Finalizado el proceso P: 500 5. (3 puntos) Escriba el código necesario para que tanto el proceso P como sus hijos ignoren la señal SIGINT (interrupción desde teclado mediante Control+C). Hay que declarar la siguiente variable: struct sigaction act; Las siguientes líneas hay que ponerlas antes del bucle for para que tanto el proceso P como los hijos hereden el armado de la señal: act.sa_handler=sig_ign; act.sa_flags=0; act.sa_mask=null; sigaction(sigint, act, NULL); 6. (2 puntos) Si en la línea 35 se incluye la siguiente sentencia: alarm(5); Indique qué significado tiene y qué comportamiento se podría obtener en la ejecución de los procesos. El proceso P genera la recepción de la señal SIGALRM pasados 5 segundos. Si transcurridos esos segundos los procesos no hubieran terminado, como no han armado esa señal, se ejecutaría la acción por defecto que es la de abortar proceso.