Sistemas Operativos Primer Recuperatorio Parcial 1

Documentos relacionados
- 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 Práctica 3

Procesos e Hilos en C

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

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

SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008

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

ARQUITECTURA DE REDES Laboratorio

Sistemas Operativos Practica 1: procesos y concurrencia.

Implementación de monitores POSIX

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

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

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

Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria

SOLUCION EXAMEN junio 2006

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

Sistemas Operativos I Manual de prácticas

2) Tenemos un sistema informático con una sola CPU que está gestionada mediante una cola multinivel con realimentación.

Lenguaje C Funciones. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

; hcomment.rc aa.es ;

Prueba de Laboratorio Modelo B01 Semáforos y Memoria Compartida

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

Estructuras de Repetición (Hacer-Mientras)

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Arquitectura de Computadores: Exámenes y Controles

Sistemas Operativos I. Tema 3. Procesos. Equipo de Sistemas Operativos DISCA / DSIC UPV

Tema 4 : señales. Sistemas Operativos: Programación de Sistemas. Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez.

Definición Tareas del sistema operativo Concurrencia y paralelismo Estados de los procesos Propiedades de un proceso en Linux CONCEPTOS 1.

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

LENGUAJE. Tema 1 - Introducción

Ingeniería Superior de Informática. Curso 3º. Sistemas Operativos. Examen Final. TEORÍA. 31 de Enero de 2005

Funciones básicas del depurador

PROGRAMACION / Clave: 11214

Sistemas Operativos. Dr. Luis Gerardo de la Fraga. Departamento de Computación Cinvestav

Examen Febrero de 2012

Tema 1: Introducción a los S.O. Ejercicios de Planificiación de Procesos

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

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

TECNOLÓGICO DE ESTUDIOS SUPERIORES DE IXTAPALUCA. Unidad 1.

UNIVERSIDAD CENTRAL. Facultad de Ingeniería. Algoritmos y programación Grupo 1.4. Taller No.3

//Esta función es llamada cuando se produce un evento //de teclado void keycallback (void *userdata, SoEventCallback *eventoteclado) {

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

Unidad III El lenguaje de programación C

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

= RETURN =3 7-. ELSE K

FUNDAMENTOS DE LOS SISTEMAS OPERATIVOS

Manipulación de procesos

Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga. Sistemas Operativos. Tema 2: Introducción a la programación concurrente

TIPOS DE DATOS BASICOS EN LENGUAJE C

Prof. Dr. Paul Bustamante

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

Modelos de Computación I. Ingeniería Informática

Fundamentos de Programción (I)

Problemas de Redes de Computadores. Conjunto de problemas 1

!! Identificar las señales que llegan a la consola.

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

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

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

TEMA 3: EL LENGUAJE C: PRESENTACIÓN

El modelo de Procesos

Mi primer proyecto en Dev-C++

Programación Estructurada

SISTEMAS OPERATIVOS:

Problema 1 (3 puntos)

Práctica 2: Realización de una Alarma Temporizada Diseño de Sistemas Operativos U.L.P.G.C.

Esquema de un programa en C: bloques básicos

Prácticas de Sistemas Operativos

Procesos. Planificación del Procesador.

Sistemas Operativos Tema 6. Planificación de procesos José Miguel Santos Alexis Quesada Francisco Santana

Llamadas al Sistema. Laboratorio de Arquitectura de Ordenadores

Prof. Dr. Paul Bustamante

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ARQUITECTURA DE COMPUTADORES II 19 de junio de 2007

Computacion de Alto Performance

Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1

PRÁCTICA DE LABORATORIO 3 Tipo Abstrato de Dato

Unidad 2: Gestión de Procesos

Sistemas Operativos. Características de la Multiprogramación. Interacción entre Procesos. Características de la Multiprogramación

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

TEMA 4. ESTRUCTURAS DE CONTROL

Administración de Redes

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */

Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 9 de Febrero de 2007

Estructuras de Decisión Simples y Dobles

Hacer ejercicios del libro (Cap. 9 Seguridad): 4,5,6,7,8,9,10,12,13

GL-PCS2201-L05M FUNCIONES Y LA ESTRUCTURA DEL PROGRAMA EN LENGUAJE C

EJEMPLOS DE PROGRAMACIÓN DE FUNCIONES EN C: Página 1 de 5

Repaso sobre lectura de datos desde la línea de comandos, manejo de memoria dinámica e introducción a la librería GSL

Programación en Paralelo con MPI en Clusters Linux

Uso avanzado de punteros

SEGUNDO PARCIAL INFORMATICA II

Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1.

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

Estructura de Computadores. Contenido. Sistema de E/S. 7.- E/S y dispositivos periféricos

Tema: Arreglos de Objetos en C++.

ARQUITECTURA DE REDES Laboratorio

6. Planificación. Los procesos tienden a tener ráfagas de ejecución (CPU-burst) y ráfagas de espera de operaciones de E/S (I/O burst).

Planificación de Procesos. Módulo 5. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco

Trabajo Práctico Nº 1 SISTEMAS DE NUMERACION

sockets Flujo (SOCK_STREAM) Comunicación bidireccional Confiable (entrega garantizada) Información ordenada en el destino Datagrama (SOCK_DGRAM)

Transcripción:

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 hijo debe indicar a su proceso padre un estado de finalización de la tarea, estado 1 tarea resuelta con éxito, estado 0 tarea no resuelta. Suponemos que el fork() no falla.(2,5) #include <sys/wait.h> #include <sys/types.h> int tarea(int); int main(int argc, char *argv[]) pid_t pid, pidter; int status = 0 ; int np = atoi(argv[1]); while(np) np -- ; if (pid == 0 ) exit(tarea(getpid())); // Aquí el alumno tiene que escribir el código para que no existan procesos zombies ni //huérfanos indicando para cada hijo PID y ESTADO DE TERMINACION. int tarea(int num) printf("tarea %d \n",num); return num % 2; 2.- Reescribir las funciones de los hilos. Reescriba las funciones de los hilos para que el siguiente código en lenguaje C permita que que tres hilos se sincronicen para escribir en pantalla soy hilo 1 soy hilo 2 soy hilo 1 soy hilo 3 infinitamente. No puede usar el concepto de variable bandera. En la pantalla se visualizará infinitamente:(2,5) Soy Hilo 2 Soy Hilo 3 Soy Hilo 2 Soy Hilo 3. 1 de 7

#include <pthread.h> void Hilo1(void); void Hilo2(void); void Hilo3(void); pthread_mutex_t m1 = PTHREAD_MUTEX_INITIALIZER ; pthread_mutex_t m2 = PTHREAD_MUTEX_INITIALIZER ; pthread_mutex_t m3 = PTHREAD_MUTEX_INITIALIZER ; pthread_mutex_t m4 = PTHREAD_MUTEX_INITIALIZER ; int main(void) pthread_t h1 ; pthread_t h2 ; pthread_t h3 ; pthread_mutex_lock(&m3); pthread_create(&h1,null,(void *)Hilo1,NULL); pthread_create(&h2,null,(void *)Hilo2,NULL); pthread_create(&h3,null,(void *)Hilo3,NULL); pthread_join(h1,null); printf("nunca Termina\n"); exit(1); void Hilo1(void) printf(" \n "); void Hilo2(void) printf("soy Hilo 2 \n "); void Hilo3(void) printf("soy Hilo 3 \n "); 3.- Señales: Un proceso padre se sincroniza con un proceso hijo usando señales, comienza el padre escribiendo Soy el Padre luego escribe el hijo Soy el Hijo y se intercalan infinitamente. Se debe completar el código para dicho objetivo y además para que los procesos padre e hijo nunca puedan recibir ninguna señal que no sean las necesarias para la sincronización.(2,5) #include <signal.h> #include <sys/types.h > void f_signalpadre(void) ; void f_signalhijo(void) ; int main(void) pid_t pid; if (pid == 0) signal(sigusr2,f_signalhijo) ; 2 de 7

else signal(sigusr1,f_signalpadre) ; void f_signalpadre(void) printf("soy el Padre \n"); void f_signalhijo(void) printf("soy el Hijo \n"); 4) Obtener el tiempo medio de espera y el porcentaje de sobrecarga del sistema operativo para la siguiente definición de procesos para un algoritmo por prioridades apropiativo. Las interrupciones son no enmascarables. Prioridad de PB mayor a la prioridad de PA. Indicar con E ejecución, con D disco, con C cinta y con S suspendido si es necesario. Los cambios de contexto duran 10 ms cada uno.(2,5) PA CPU 30 ms., E/S disco 20ms, CPU 40 ms, E/S cinta 20 ms., CPU 30ms. PB CPU 20 ms., E/S disco 20 ms., CPU 20 ms, E/S cinta 20 ms, CPU 30ms. Tiempo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 S.O. Proceso PA Proceso PB Interrupción Cola de listos 5) Qué es una interrupción? (2,5) 6) Qué diferencia hay entre trap e interrupción? (2,5) 7) Qué sucede si un proceso queda indefinidamente dentro de una sección crítica? (2,5) 8) Qué impacto tiene el tamaño de la "rodaja de tiempo" (quatum) usado en la política de "Turno Rotatorio" (Round Robin) en el rendimiento del SO? (2,5) Criterio de Aprobación: obtener 6/10 puntos en la teoría (preguntas 5 a 8) y obtener 6/10 puntos en la práctica (preguntas 1 a 4). Solo se considera un punto correcto si todos sus items se respondieron correctamente. 3 de 7

SOLUCIONES 1 #include <sys/wait.h> #include <sys/types.h> int tarea(int); int main(int argc, char *argv[]) pid_t pid, pidter; int status = 0 ; int np = atoi(argv[1]); while(np) np--; if (pid == 0 ) exit(tarea(getpid())); while((pidter = wait(&status))!= -1 ) printf("hijo %d termino ",pidter) ; printf("retorno %d\n",status/256); int tarea(int num) printf("tarea %d \n",num); return num % 2; 2 #include <pthread.h> void Hilo1(void); void Hilo2(void); 4 de 7

void Hilo3(void); pthread_mutex_t m1 = PTHREAD_MUTEX_INITIALIZER ; pthread_mutex_t m2 = PTHREAD_MUTEX_INITIALIZER ; pthread_mutex_t m3 = PTHREAD_MUTEX_INITIALIZER ; pthread_mutex_t m4 = PTHREAD_MUTEX_INITIALIZER ; int main(void) pthread_t h1 ; pthread_t h2 ; pthread_t h3 ; pthread_mutex_lock(&m3); pthread_create(&h1,null,(void *)Hilo1,NULL); pthread_create(&h2,null,(void *)Hilo2,NULL); pthread_create(&h3,null,(void *)Hilo3,NULL); pthread_join(h1,null); printf("nunca Termina\n"); exit(1); void Hilo1(void) pthread_mutex_lock(&m1); printf(" \n "); pthread_mutex_unlock(&m4); void Hilo2(void) pthread_mutex_lock(&m2); printf("soy Hilo 2 \n "); pthread_mutex_unlock(&m1); pthread_mutex_unlock(&m3); 5 de 7

void Hilo3(void) pthread_mutex_lock(&m3); printf("soy Hilo 3 \n "); pthread_mutex_unlock(&m1); pthread_mutex_unlock(&m2); 3 #include <signal.h> void f_signalpadre(void) ; void f_signalhijo(void) ; int main(void) pid_t pid ; if (pid == 0 ) sigset_t seth ; sigfillset(&seth); sigdelset(&seth,sigusr2); signal(sigusr2,(void *)f_signalhijo) ; sigprocmask(sig_block,&seth,null); kill(getppid(),sigusr1); pause(); else sigset_t setp ; sigfillset(&setp); 6 de 7

sigdelset(&setp,sigusr1); signal(sigusr1,(void *)f_signalpadre) ; sigprocmask(sig_block,&setp,null); pause(); kill(pid,sigusr2); void f_signalpadre(void) printf("soy el Padre \n"); void f_signalhijo(void) printf("soy el Hijo \n"); 5 Qué es una interrupción? Mecanismo por el cual otros componentes (ej. módulos E/S) pueden interrumpir la normal ejecución de la CPU. 6 Qué diferencia hay entre trap e interrupción? Son conceptos similares, pero no no idénticos, un trap es una forma de interrupción pero que se origina dentro del propio proceso interrumpido, asociado a una condicion de error o excepción. Mientras que una interrupción es algo externo al proceso en ejecución, por ejemplo, puede ser que se haya agotado la rodaja de tiempo asignada para la ejecucion del mismo (time slice) entonces se produce una interrupción de reloj (clock). 7 Qué sucede si un proceso queda indefinidamente dentro de una sección crítica? El resto de los procesos -que también ejecutan esta sección crítica- quedarán bloqueados intentando entrar en ella. 8 Qué impacto tiene el tamaño de la "rodaja de tiempo" (quatum) usado en la política de "Turno Rotatorio" (Round Robin) en el rendimiento del SO? Muy chico implica mayor sobrecarga de cpu y muy grande implica que funcione como FCFS. Criterio de Aprobación: obtener 6/10 puntos en practica y teoria. 2.5 puntos por ejercicio. Criterio de Calificación % aprobación promedio 60% 4 70% 6 80% 8 90% 9 100% 10 7 de 7