Fac. de Informática / Escuela Univ. Informática SISTEMAS OPERATIVOS Examen Primer Parcial 5 de mayo de 2007

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

Introducción a los Sistemas Operativos

SOLUCIONES. SISTEMAS OPERATIVOS Examen de la convocatoria extraordinaria de diciembre 2 de diciembre de 2010

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

ADMINISTRACION DE LA MEMORIA. En memoria 1 solo proceso Desventajas:

Manipulación de procesos

de Gran Canaria Centro de Tecnología Médica Programación Concurrente

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

- 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. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria

Solución Examen Febrero 2006

Estructuras de control

Manual de turbo pascal

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL

Estructuras de Control

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

Usuario. Programas de Aplicación. Sistema Operativo. Hardware. Figura 1. Sistema de cómputo estructurado por capas.

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero

Estructuras en LabVIEW.

Actividades de Teoría de Sistemas Operativos Sistemas informáticos multiusuario y en red

Tema 4: SISTEMAS DE ENTRADA/SALIDA. Un computador no puede estar formado sólo por la CPU y la memoria.

Clasificación n de los Sistemas Operativos. Clasificación de los SO Estructuras de los SO Modos de procesamiento

Manejo de Entrada-Salida. Arquitectura de Computadoras

Funcionamiento de la computadora

PHP: Lenguaje de programación

PROCESADORES. Existen 3 tipos de procesadores: DE GALLETA, DE PINES Y DE CONTACTO. DE GALLETA: se utilizaban en las board en los años 80 y 90.

Gestión de Entrada-salida

Procesos. Planificación del Procesador.

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

Instrucciones de control

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

PROBLEMAS TEMA 3: Unidad de Entrada/Salida

Computadora y Sistema Operativo

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

PREGUNTAS INFORMÁTICA MONITOR UPB EXAMEN 1

Tema 2. El lenguaje JAVA

FUNDAMENTOS DE INFORMÁTICA

1-Componentes Físicos y Lógicos de un Ordenador.

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

MEMORIA EJERCICIO 1 EJERCICIO 2

Manejo de Entrada-Salida. Arquitectura de Computadoras

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Operadores de comparación

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

La Máquina de Acceso Aleatorio (Random Access Machine)

Capítulo 1. Sistemas de Asignación Contigua Basados en Particiones

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

Concurrencia y paralelismo

1 (2 5 puntos) Responda con brevedad y precisión a las siguientes preguntas:

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

Tema V Generación de Código

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Sistemas Operativos. Daniel Rúa Madrid

Java para programadores

Parte 4: Estructuras de Control

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Diseño Estructurado de Algoritmos

Estructuras Repetitivas

Sistemas Operativos. Clase 2: Administración de procesos.

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).

Introducción a los Sistemas Operativos

SISTEMAS OPERATIVOS ACTIVIDAD: TRABAJO COLABORATIVO

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

UNIVERSIDAD NACIONAL FEDERICO VILLARREAL FACULTAD DE INGENIERÍA ELECTRÓNICA E INFORMÁTICA SÍLABO

Memoria. Organización de memorias estáticas.

PROBLEMAS TEMA 1: Estructuras de interconexión de un computador

Soluciones a los problemas impares. Tema 5. Memorias. Estructura de Computadores. I. T. Informática de Gestión / Sistemas

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

FUNDAMENTOS DE INFORMÁTICA. Principios Básicos de Sistemas Operativos. Definición de Sistema Operativo

T5-multithreading. Indice

Qué es un programa informático?

Sistemas Operativos. Introducción. Tema 6

Tutoría 2. Banco de memoria de 8 y 16 bits (8086)

SISTEMAS OPERATIVOS Arquitectura de computadores

REFERENCIA DEL LENGUAJE

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Tema 14: Sistemas Secuenciales

Sistemas Operativos Ricardo Sanz

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

Arquitectura de Computadores. Apellidos, Nombre:

TEORÍA BÁSICA PASOS PARA APAGAR EL SISTEMA

Servicios del Sistema Operativo (SO)

PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores

El modelo de Procesos

Herramientas Informáticas I Software: Sistemas Operativos

Estudiemos el siguiente problema, propuesto por Wirth y desarrollado por Dijkstra: Una lista de las primeras secuencias que cumplen es:

6. Entrada y Salida Explicación de la interfaz entre el computador y el mundo exterior.

Diseño de algoritmos paralelos

Tema 3. Aplicaciones de Tipo Consola

Construyendo Programas más Complejos

fundamentos de programación (unidad 4) programación estructurada en Java

Introducción a los sistemas de entrada/salida Profesores y tutorías

3.2. Programación estructurada. Principal. Modulo 1 Modulo 2 Modulo 3 Modulo 4. Modulo Modulo Modulo 3 1 Modulo 4 1 Modulo 4 2. Pág.

Introducción a los microprocesadores / microcontroladores

Editor de código Visual Basic. Lista de miembros automática, sugerencias de sintaxis, autocompletado y otras opciones. (CU00313A)

FUNCIONAMIENTO DEL ORDENADOR

Sincronización. Arquitectura de Computadores

CICLOS DEL PROCESADOR

Transcripción:

Calificación Fac. de Informática / Escuela Univ. Informática SISTEMAS OPERATIVOS Examen Primer Parcial 5 de mayo de 2007 1 2 3 4 Nombr SOLUCIONES Titulació Dispone de tres horas para realizar el examen 1(3 puntos) Contestar brevemente a las siguientes cuestiones: a) En un sistema de planificación por prioridades expulsivo llega un proceso en el instante 4 con prioridad máxima. Este proceso se ejecuta durante 2ut. Después realiza una operación de E/S durante 3ut y para acabar se ejecuta durante 5ut. Cuál es el tiempo de retorno de este proceso? (Despreciar los tiempos de conmutación de tareas) (0.25p) Si no existen más procesos en la cola, la planificación de P1 sería así: P1 E/S P1 4 6 9 14 Tiempo de retorno = = 14 4 = 10 ut El tiempo de retorno podría ser mayor, si otro proceso con prioridad máxima se encuentra en la CPU cuando P1 llega al sistema o cuando finaliza su E/S. En ese caso, P1 debe esperar por el proceso que está en CPU. Así que la respuesta correcta es al menos 10 unidades de tiempo. b) Definición de proceso y de hilo. Qué diferencias hay entre ellos? Qué ventajas tiene uno sobre el otro? Indicar qué ventajas e inconvenientes puede tener que el sistema operativo maneje hilos o que sea el usuario quien los implemente. (0.75p) Un proceso pesado es un proceso (programa en ejecución) que contiene uno o varios hilos que comparten la misma memoria y recursos. Un hilo (thread) o proceso ligero es una unidad básica de ejecución, con su propio contador de programa, registros de CPU y pila. Los hilos de un mismo proceso comparten código y memoria. Los hilos tienen características que son ventajosas: - El BCP de un hilo es muy pequeño en comparación con el de un proceso pesado. - Dado que todos los hilos de un proceso pesado comparten los recursos, un proceso pesado podría contener decenas de hilos sin mucho coste adicional (sólo los pequeños BCP de sus hilos). - La comunicación entre los hilos del proceso es más sencilla que entre procesos pesados (usando la memoria que comparten).

- El cambio de contexto entre hilos de un mismo proceso pesado es menos costoso. Todo ello consigue los siguientes beneficios: - Se facilita la escritura de aplicaciones concurrentes cooperativas, es decir, aplicaciones en la que múltiples procesos colaboran entre sí para llevar a cabo un objetivo común. - Se pueden lanzar centenares de actividades concurrentes sin que el sistema se resienta. El soporte a los hilos puede darlo el propio sistema operativo o, en caso contrario, deberá ser el propio usuario quién implemente (simule) su implementación. a) Si lo implementa el SO: en este caso hablaríamos de una implementación a nivel de núcleo o bien pueden ser implementados mediante una biblioteca/librería. El SO es capaz, por ejemplo, de asignar tiempo a cada hilo como si cada uno de los mismos fueran un proceso del sistema. b) Si lo implementa el usuario: a nivel de usuario (en este caso, el SO no entiende ni conoce de hilos): las estructuras de datos y el código de la librería se encontrarán en el espacio de usuario, de forma que el usuario hará uso de ellas como cualquier módulo propio desarrollado. En este caso el proceso pesado es lo que será capaz de distinguir el SO por lo que el tiempo que le asigne el mismo a dicho proceso deberá ser repartido por el usuario a cada uno de los hilos que lo conforman. c) Definir: (1p) a. BootStrap b. Procesadores débilmente acoplados c. Tiempo de respuesta Planificador a medio plazo a. Concurrencia b. Efecto convoy c. Sección crítica d. a. BootStrap: programa encargado de leer el sistema operativo desde el dispositivo donde se encuentra, ubicarlo en memoria principal y ejecutarlo. b. Procesadores débilmente acoplados: (o sistemas distribuidos) : múltiples procesadores conectados mediante una red, donde varios sistemas informáticos, escalable hasta millones de procesadores (ej. Internet), se conectan de forma distribuida para realizar determinadas funciones, rompiendo la barrera del espacio, no es necesario que los equipos estén físicamente juntos, ni siquiera próximos. En estos sistemas los procesadores no comparten memoria ni reloj. c. Tiempo de respuesta: tiempo que un proceso bloqueado tarda en entrar en CPU, desde que ocurre el evento que lo bloquea. d. Planificador a medio Plazo (PMP): El planificador de medio plazo (PMP) se encarga de gestionar situaciones en las que el sistema queda escaso de recursos, normalmente porque los procesos consumen toda la memoria disponible. En estos casos, suele ocurrir que existen procesos en estado bloqueado, que no van a ejecutar instrucciones en mucho tiempo, y que sin embargo están ocupando memoria. El PMP se encargará de copiar la imagen de estos procesos en memoria secundaria (disco) y dejar disponible la memoria principal que ocupaban para otros procesos que sí necesitan ejecutar instrucciones. e. Concurrencia: En informática se habla de concurrencia cuando hay una existencia simultanea de varios procesos en ejecución. Conviene 2 de 8

resaltar el término existencia simultánea, claramente diferente al término ejecución simultánea. Es decir, hablamos de concurrencia o multiprogramación (emplearemos ambos términos como sinónimos) cuando tenemos varios procesos cargados en la memoria del computador. f. Efecto Convoy : fenómeno indeseable en un sistema por el que un proceso intensivo en CPU acapara el procesador y hace que otros procesos intensivos en E/S esperen por éste recurso, motivando en general una baja utilización de los distintos recursos del sistema. g. Sección crítica: se define sección crítica de un proceso como un conjunto de instrucciones que acceden a un dato que es compartido por al menos otro proceso del sistema de forma que al menos uno de ellos puede modificar la variable. e) Qué crees que ha hecho necesaria la aparición de la multiprogramación en la evolución de los ordenadores? (0.5p) La multiprogramación se hizo necesaria porque la velocidad de funcionamiento de la CPU superaba ya en varios órdenes de magnitud a la velocidad de los dispositivos de E/S, y resultaba inadmisible mantener la CPU desocupada durante la realización de este tipo de operaciones. f) Indicar las formas que conozcas para que un sistema operativo pueda averiguar qué recurso del sistema ha realizado una interrupción. (0. 5p) Podemos encontrar dos técnicas implementadas: la primera conocida como polling es la propia CPU la que pregunta a todos los dispositivos que pueden haber provocado la interrupción y la segunda técnica consiste en que el dispositivo, además de interrumpir, envía un número por el bus, conociéndose esta técnica de uso mas frecuente con el nombre de interrupciones vectorizadas. 2 (2,5 puntos) Suponga un recurso que debe ser usado de manera exclusiva por parte del proceso que lo utiliza. En el sistema se ejecutan siempre los mismos procesos que son N, identificándose cada uno de ellos por un valor entero cuyo rango es de 1 a N. Estos procesos necesitan para cumplir con su cometido hacer uso del recurso compartido. Cuando un proceso necesita utilizar el recurso lo solicita mediante la función: void Solicito_Recurso( int Mi_Id_Proc) de forma que si el recurso está ocupado deberá esperar hasta que quede libre. Cuando varios procesos solicitan el uso del recurso, entonces se le concederá a aquél proceso cuyo identificador es el menor. Cuando se libera el recurso, el proceso que lo libera lo hace con la función: void Libero_Recurso(int Mi_Id_Proc) Implementar las funciones Solicito_Recurso y Libero_Recurso empleando semáforos. Class Gestionador { Public: Gestionador( ); 3 de 8

~Gestionador(); void Solicito_Recurso( int Mi_Id_Proc ); void Libero_Recurso( int Mi_Id_Proc ); Private: Semáforo *cerradura, *me_bloqueo[n]; Boolean ocupado, espero[n]; Gestionador:: Gestionador() { int i; cerradura = new Semáforo(1); for ( i=0; i<n; i++) { me_bloqueo[i] = new Semáforo(0); espero[i] = false; ocupado = false; Gestionador::~Gestionador() { int i; delete cerradura; for (i=0; i<n; i++) delete me_bloqueo[i]; void Gestionador::Solicito_Recurso( int Mi_Id_Proc) { cerradura->p(); if ( ocupado == false ) { ocupado = true; cerradura->v(); else { espero[mi_id_proc] = true; cerradura->v(); me_bloqueo[mi_id_proc]->p(); void Gestionador::Libero_Recurso( int Mi_Id_Proc) { int i=0; cerradura->p(); espero[mi_id_proc] = false; while (i<n) { if ( espero[i] == true ) { me_bloqueo[i]->v(); break; i++; 4 de 8

if ( i == N ) { ocupado = false; cerradura->v(); 3(2 puntos) Seguidamente se muestra una propuesta de solución al problema de la sección crítica para n procesos. Crees que es una propuesta válida? Justifica tu respuesta. // Variables globales e inicializaciones var esperando: array [0..n-1] of boolean; // Inicializada a false m: boolean; // Inicializada a false Proceso Pi llave: boolean; //Inicializada a false j: integer; begin repeat SECCION NO CRITICA esperando[i]:=true; llave:=false; repeat llave:=test_and_set(m); until (not esperando[i] or llave); esperando[i]:=false; SECCION CRITICA j:=(i+1) mod n; while (j<>i and not esperando[j]) do j:=(j+1) mod n; if (j=i) then m:=false; else esperando[j]:=false; until false end. Para demostrar que se trata de una solución válida al problema de la sección crítica para n procesos debemos demostrar que se cumplen las propiedades de exclusión mutua, progreso y espera limitada. Exclusión Mutua La exclusión mutua no se cumple en la solución propuesta. Se puede observar que un proceso Pi que desee entrar en su sección crítica, al llegar a la ejecución de la instrucción Test_and_Set colocaría m a true y devolvería inicialmente false (valor inicial de m). Sin embargo, en su segunda iteración en el bucle, Test_and_Set devolverá true y colocará m nuevamente a true por lo que saldría del bucle y pasaría a ejecutar la porción de código contenida en la sección crítica. Si estando el proceso Pi en su sección crítica, otro proceso Pj desea pasar a ejecutar la sección crítica, podemos comprobar fácilmente que rebasaría el preprotocolo sin mayores problemas, ya que la ejecución la instrucción Test_and_Set devolverá true y colocará m nuevamente a true 5 de 8

por lo que saldría del bucle y pasaría a ejecutar la porción de código contenida en la sección crítica, teniendo por tanto dos procesos ejecutando la sección crítica. En realidad podrían entrar todos lo que quisieran sin ningún tipo de trabas. Por tanto, al no cumplir la exclusión mutua, podemos afirmar que no se trata de una solución válida al problema de la sección crítica. 4(2,5 puntos) Un sistema dispone de un planificador a largo plazo (PLP) y de otro a corto plazo (PCP) que funcionan de la siguiente forma: el PCP utiliza un algoritmo con prioridades expulsivas y el PLP utiliza la estrategia FCFS. Los procesos nuevos entran por el PLP. Se admiten en memoria un máximo de tres procesos. El PLP pasa un proceso al PCP cuando hay menos de tres procesos ya admitidos. Partiendo de la siguiente tabla de procesos y teniendo en cuenta que a menor número más prioridad: IdProce so Duración de ráfaga del procesador Priorid ad Tiempo de llegada A 2 4 0 B 4 3 1 C 4 2 3 D 1 1 5 E 2 3 6 F 1 1 14 Obtener el diagrama de Gantt, así como los tiempos medios de espera y de retorno de cada proceso en el sistema, indicando además el rendimiento de la CPU. SOLUCIÓN: Estado de la memoria: t = 0 entra A A #4 2 t = 1 entra B A #4 1 B #3 4 t = 3 entra C A #4 1 B #3 2 C #2 4 6 de 8

En t = 5, entra en cola del PLP el proceso D y en t = 6 el proceso E. Estos dos procesos no pueden entrar de inmediato en la memoria, ya que hasta t=7 continúan tres procesos en memoria: A, B y C. t = 7 sale C, entra D A #4 1 B #3 2 D #1 1 t = 8 sale D, entra E A #4 1 B #3 2 E #3 2 En este punto, B y E tienen la misma prioridad. El PCP tomará B pues ha llegado primero a la cola de preparados. A partir de ahora los procesos irán saliendo de memoria a medida que van terminando. El último proceso, tal y como se indica en el diagrama de Gantt, saldrá en el instante 13. En el instante 14 llega el último proceso F quedando la memoria como sigue: t = 14 entra F F #1 1 El problema nos pide: a) Diagrama de Gantt: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A B C D B E A F b) Tiempo de retorno: A B C D E F (13-0) (10-1) (7-3) (8-5) (12-6) (15-14) 13 9 4 3 6 1 T Retorno Medio = 13 9 4 3 6 1 = 6 u.t. 6 c) Tiempo de espera: La respuesta en este caso depende de la definición que se maneje para el concepto de «tiempo de espera». Si se utiliza la definición de «tiempo que un proceso permanece en la cola de preparados», los resultados son los siguientes: A B C D E F (11) (6-1) (0) (7-5)-2 (10-6)-2 (0) 11 5 0 2 4 0 7 de 8

T Espera Medio = 11 5 0 0 2 0 = 3 u.t. 6 Si se utiliza la definición de «tiempo que un proceso permanece en espera por el procesador», hay que contabilizar el tiempo en cola de preparados (PCP) y el tiempo en la cola de admisión del PLP. Los resultados serán: A B C D E F (11) (6-1) (0) (7-5) (10-6) (0) 11 5 0 2 4 0 T Espera Medio = 11 5 0 2 4 0 = 3,67 u.t. 6 Ambas respuestas son válidas. d) Rendimiento de la CPU: Debido a que el último proceso F llega en el instante 14 y el sistema acaba con la ejecución de todos los procesos en el instante 13, hay 1 u.t. en la que la CPU está idle (ociosa, sin trabajar). Con lo cual en el momento 15 u.t. en el que acaban todos los procesos de ejecutarse, la CPU ha trabajado 14 u.t. Esto hace que el rendimiento de la CPU podamos mediarla como: Rend CPU = 14 15 = 0,933, por lo que el rendimiento de la CPU es de un 93,33 % * * * * * 8 de 8