2014-proyecto1

4
Departamento de Ciencias e Ingenier´ ıa en Sistemas Ingenier´ ıa de la Computaci´on deComputaci´on Sistemas Operativos Segundo Cuatrimestre de 2014 Primer Proyecto 1. Proyecto: Experimentaci´ on de Procesos y Threads con los Sistemas Operativos 1.1. Creaci´ on de Procesos 1. Realizar un experimento, en el cual el proceso hijo muestre la serie de Fibonacci hasta un n´ umero de t´ ermino dado. El n´ umero de t´ ermino se ingresar´ a a trav´ es de la l´ ınea de comandos. El proceso hijo debe imprimir cada uno de los t´ erminos de la serie. El proceso padre debe esperar a que finalice el proceso hijo y por ´ ultimo mostrar el valor del ´ ultimo t´ ermino de la serie. Debe controlar que el n´ umero del t´ ermino ingresado no sea negativo. Utilice un archivo para comunicar el resultado de la operaci´ on. a ) Para la familia de sistemas operativos Unix / Linux. b ) Para la familia de sistemas operativos Windows. 2. Realice el siguiente experimento para Unix/Linux. Debe realizar la multiplicaci´ on de dos matrices de NxN formadas por n´ umeros enteros. El valor de N se encuentra entre 3 y 6. El proceso padre debe cargar desde el programa el valor de N , los valores de las matri- ces y luego generar los procesos hijos. Cada proceso hijo debe calcular la multiplicaci´ on de una fila, cuando finaliza su tarea muestra por pantalla su pid, el pid del proceso padre y el n´ umero de fila que ha calculado. El proceso padre, cuando finalizan todos los procesos hijos sus tareas, debe mostrar por pantalla el resultado de la operaci´ on. El c´ alculo del valor de una celda es el siguiente: C (i, j )= A(i, 1) * B(1,j )+ A(i, 2) * B(2,j )+ ... + A(i, N ) * B(N,j ) (1) a ) ¿En qu´ e orden terminan los procesos hijos? Analice los resultados obtenido du- rante la ejecuci´ on de los procesos creados. b ) Explique el modelo de dise˜ no utilizado para resolver este problema.

Upload: lionel-valacco

Post on 30-Sep-2015

212 views

Category:

Documents


0 download

DESCRIPTION

TRABAJO PRACTICO DE LA MATERIA SISTEMAS OPERATIVOS UNS

TRANSCRIPT

  • Departamento de Ciencias e Ingeniera en SistemasIngeniera de la Computacion de Computacion

    Sistemas Operativos

    Segundo Cuatrimestre de 2014

    Primer Proyecto

    1. Proyecto: Experimentacion de Procesos y Threads con losSistemas Operativos

    1.1. Creacion de Procesos

    1. Realizar un experimento, en el cual el proceso hijo muestre la serie de Fibonacci hastaun numero de termino dado. El numero de termino se ingresara a traves de la lneade comandos. El proceso hijo debe imprimir cada uno de los terminos de la serie. Elproceso padre debe esperar a que finalice el proceso hijo y por ultimo mostrar el valordel ultimo termino de la serie. Debe controlar que el numero del termino ingresadono sea negativo. Utilice un archivo para comunicar el resultado de la operacion.

    a) Para la familia de sistemas operativos Unix / Linux.

    b) Para la familia de sistemas operativos Windows.

    2. Realice el siguiente experimento para Unix/Linux. Debe realizar la multiplicacionde dos matrices de NxN formadas por numeros enteros. El valor de N se encuentraentre 3 y 6.

    El proceso padre debe cargar desde el programa el valor de N , los valores de las matri-ces y luego generar los procesos hijos. Cada proceso hijo debe calcular la multiplicacionde una fila, cuando finaliza su tarea muestra por pantalla su pid, el pid del procesopadre y el numero de fila que ha calculado. El proceso padre, cuando finalizan todoslos procesos hijos sus tareas, debe mostrar por pantalla el resultado de la operacion.

    El calculo del valor de una celda es el siguiente:

    C(i, j) = A(i, 1) B(1, j) +A(i, 2) B(2, j) + ...+A(i,N) B(N, j) (1)

    a) En que orden terminan los procesos hijos? Analice los resultados obtenido du-rante la ejecucion de los procesos creados.

    b) Explique el modelo de diseno utilizado para resolver este problema.

  • Sistemas Operativos 2

    1.2. Proyecto: Manejo de Threads - Utilizando la librera Posix Pthread

    1. Realizar un programa en C que genere 5 threads, cada thread tendra una letra identifi-catoria A, B, C, D y E. Cada uno de ellos debera ciclar por lo menos 10000 veces antesde finalizar. En el ciclo imprima por pantalla la letra identificatoria y la identificaciondel thread.

    2. Realizar un programa en C que genere 5 threads, despues genere un proceso hijo y porultimo espere a que termine la ejecucion de los threads. Cada thread tendra una letraidentificatoria A, B, C, D y E. En el ciclo imprima por pantalla la letra identificatoria,la identificacion del thread, la identificacion del proceso y ademas realice un ciclointerno de 1000 repeticiones incrementando en 1 una variable interna a cada thread.En el proceso hijo debe mostrar un mensaje que se ha creado correctamente.

    El proceso que crea a los threads debe esperar hasta que todos terminen. Ejecutelo yanalice los resultados. Realice las pruebas sobre Linux y Solaris.

    3. Realizar la sincronizacion de las siguientes secuencias de ejecucion.

    a) La secuencia permitida es: ABCDEABCDEABCDEABCDEABCDEABCDE.....

    b) La secuencia permitida es: ACEBBCDACEBBCDACEBBCDACEBBCD....

    Considere que cada thread muestre una sola letra.

    4. Realizar las sincronizacion del siguiente grafo de precedencia, el mismo debe ciclarindefinidamente. Inicializar los semaforos para que pueda comenzar el ciclo.

    2. Problemas

    1. Se tiene un sistema operativo en el que se ejecutan los siguientes procesos:

    Proceso P1, en el instante t=0, con dos threads de usuario sobre un thread dekernel. En este proceso cada uno de los dos threads de usuario computan durante4 unidades de tiempo sin hacer entrada/salida y luego terminan.

  • Sistemas Operativos 3

    Proceso P2, en el instante t=3, con dos threads de kernel. En este proceso, cadathread computa durante 2 unidades de tiempo, efectua entrada/salida durante 4unidades de tiempo, computa durante 1 unidad de tiempo y luego termina.

    Proceso P3, en el instante t=4, sin threads de usuario, con un thread de kernel.Este proceso computa durante 1 unidad de tiempo, hace entrada/salida durante1 unidad de tiempo, computa durante 1 unidad de tiempo y luego termina.

    Se pide:

    a) Suponiendo que la planificacioon del sistema es round-robin con un quantum de2 unidades de tiempo, dibuje un diagrama (procesos/tiempo) donde se muestreen cada unidad de tiempo en que estado esta cada uno de los procesos.

    b) Responder a la misma pregunta anterior pero suponiendo que la planificacion delsistema sigue el algoritmo de Sortest Remaining Time First (SJF apropiativo).

    c) Para cada uno de los incisos anteriores, calcule el tiempo de retorno de cadaproceso y el tiempo de espera.

    2. De los siguientes sistemas operativos debe elegir solo uno para leer los artculos pro-puestos y presentar una breve descripcion del mismo.

    a) A Survey on Android vs. Linux.. Frank Maker, Yu-Hsuan Chan.

    b) Mobile Computing: Principles, Devices and Operating Systems. Masoud Nosrati,Ronak Karimi, Hojat Allah Hasanvand.

    3. Resolver los siguientes problemas para la familia de sistemas operativos Unix/Linuxy elija uno de los problemas para la familia de sistemas operativos Windows (desde2000 - Xp - Vista - 7- 8).

    a) Alumnos Posgrado. En el posgrado de Biologa se tienen 5 alumnos. Losalumnos tienen que realizar 10 cursos. Cada alumno requiere diferente cantidadde tiempo para realizar un curso. Ademas no puede comenzar un nuevo cursohasta que no haya terminado el anterior. Se considera la siguiente cantidad detiempo que requiere cada uno de los alumnos para realizar un determinado curso:

    Alumno A - 4 unidades de tiempo

    Alumno B - 7 unidades de tiempo

    Alumno C - 4 unidades de tiempo

    Alumno D - 2 unidades de tiempo

    Alumno E - 5 unidades de tiempo

    Casos:

    1) - Cada alumno avanza en el posgrado en forma independiente del resto delos alumnos.

    2) - Todos los alumnos comienzan juntos un nuevo curso, esto es, si un alumnotermina antes que el resto debe esperar.

  • Sistemas Operativos 4

    (I) Resolver cada uno de los casos utilizando semaforos para realizar el con-trol. Considere que cada alumno es equivalente a un thread.

    (II) Explique el comportamiento que presenta su solucion. Encuentra algunproblema?

    b) Mini Shell. Construir un shell que acepte un conjunto limitado de comandosde Unix. Tiene que considerar como mnimo 5 comandos. Explique las opcionesde diseno que considero al momento de implementarlo. No puede invocar loscomandos mediante la funcion system y para la implementacion de los mismosdebe utilizar llamadas al sistema (system call) o funciones de libreras.

    Indicaciones

    Los experimentos deben realizarse en lenguaje C.

    Las pruebas deben realizarse sobre el sistema operativo Linux (Red Hat/ Fedora/Centos/ Suse/ Arch 0.8), en Solaris y sobre Windows 2000 / Windows XP / WindowsVista / Windows 7 / Windows 8 para PC. Puede traer una extension en alguna otradistribucion o arquitectura.

    Se debe entregar los fuentes realizados para cada una de las experiencias debidamenteidentificados (impresos y en disco) y un informe con los resultados obtenidos y laspreguntas realizadas. Ademas se debe facilitar el compilado y ejecucion de cada unade las experiencias por medio de un script o make y describiendo la forma de ejecucion.