Vous êtes sur la page 1sur 4

Departamento de Ciencias e

Ingeniera de la Computacion

Ingeniera en Sistemas
de Computacion

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 termino dado. El n
umero de termino se ingresara a traves de la lnea
de comandos. El proceso hijo debe imprimir cada uno de los terminos de la serie. El
proceso padre debe esperar a que finalice el proceso hijo y por u
ltimo mostrar el valor
del u
ltimo termino de la serie. Debe controlar que el n
umero del termino ingresado
no 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 multiplicacion
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 matrices y luego generar los procesos hijos. Cada proceso hijo debe calcular la multiplicacion
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 operacion.
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 que orden terminan los procesos hijos? Analice los resultados obtenido durante la ejecuci
on de los procesos creados.
b) Explique el modelo de dise
no utilizado para resolver este problema.

Sistemas Operativos

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 identificatoria A, B, C, D y E. Cada uno de ellos debera ciclar por lo menos 10000 veces antes
de finalizar. En el ciclo imprima por pantalla la letra identificatoria y la identificacion
del thread.
2. Realizar un programa en C que genere 5 threads, despues genere un proceso hijo y por
u
ltimo espere a que termine la ejecucion de los threads. Cada thread tendra una letra
identificatoria A, B, C, D y E. En el ciclo imprima por pantalla la letra identificatoria,
la identificaci
on del thread, la identificacion del proceso y ademas realice un ciclo
interno 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. Ejec
utelo y
analice los resultados. Realice las pruebas sobre Linux y Solaris.
3. Realizar la sincronizaci
on 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 sincronizaci
on del siguiente grafo de precedencia, el mismo debe ciclar
indefinidamente. 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 de
kernel. En este proceso cada uno de los dos threads de usuario computan durante
4 unidades de tiempo sin hacer entrada/salida y luego terminan.

Sistemas Operativos

Proceso P2, en el instante t=3, con dos threads de kernel. En este proceso, cada
thread computa durante 2 unidades de tiempo, efect
ua entrada/salida durante 4
unidades 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 durante
1 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 de
2 unidades de tiempo, dibuje un diagrama (procesos/tiempo) donde se muestre
en 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 del
sistema sigue el algoritmo de Sortest Remaining Time First (SJF apropiativo).
c) Para cada uno de los incisos anteriores, calcule el tiempo de retorno de cada
proceso y el tiempo de espera.
2. De los siguientes sistemas operativos debe elegir solo uno para leer los artculos propuestos 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/Linux
y elija uno de los problemas para la familia de sistemas operativos Windows (desde
2000 - Xp - Vista - 7- 8).
a) Alumnos Posgrado. En el posgrado de Biologa se tienen 5 alumnos. Los
alumnos tienen que realizar 10 cursos. Cada alumno requiere diferente cantidad
de tiempo para realizar un curso. Ademas no puede comenzar un nuevo curso
hasta que no haya terminado el anterior. Se considera la siguiente cantidad de
tiempo que requiere cada uno de los alumnos para realizar un determinado curso:
Alumno
Alumno
Alumno
Alumno
Alumno

A - 4 unidades de tiempo
B - 7 unidades de tiempo
C - 4 unidades de tiempo
D - 2 unidades de tiempo
E - 5 unidades de tiempo

Casos:
1) - Cada alumno avanza en el posgrado en forma independiente del resto de
los alumnos.
2) - Todos los alumnos comienzan juntos un nuevo curso, esto es, si un alumno
termina antes que el resto debe esperar.

Sistemas Operativos

(I) Resolver cada uno de los casos utilizando semaforos para realizar el control. Considere que cada alumno es equivalente a un thread.
(II) Explique el comportamiento que presenta su solucion. Encuentra alg
un
problema?
b) Mini Shell. Construir un shell que acepte un conjunto limitado de comandos
de Unix. Tiene que considerar como mnimo 5 comandos. Explique las opciones
de dise
no que consider
o al momento de implementarlo. No puede invocar los
comandos mediante la funcion system y para la implementacion de los mismos
debe 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 / Windows
Vista / Windows 7 / Windows 8 para PC. Puede traer una extension en alguna otra
distribuci
on o arquitectura.
Se debe entregar los fuentes realizados para cada una de las experiencias debidamente
identificados (impresos y en disco) y un informe con los resultados obtenidos y las
preguntas realizadas. Adem
as se debe facilitar el compilado y ejecucion de cada una
de las experiencias por medio de un script o make y describiendo la forma de ejecucion.

Vous aimerez peut-être aussi