Ampliación de Sistemas Operativos
URJC ESCET ITIS

GSyC
gsyc-profes@gsyc.escet.ur....,etc

Curso 2005-2006

Resumen:

En esta página podeis encontrar información sobre la asignatura y recursos relacionados con la misma. Para cualquier comentario enviad un correo a gsyc-profes@gsyc.escet.ur....,etc, o mejor, Usa el foro!

Datos Generales

Titulaciones:
Ingeniería Técnica de Informática de Sistemas.
Créditos:
3 teóricos y 3 prácticos.
Curso:
Tercero.
Cuatrimestre:
Primero.
Profesorado:

Sistemas-A
Sergio Arevalo, Andrés Leonardo Martínez Ortiz. y Álvaro del Castillo.

Sistemas-B
Francisco J Ballesteros, Gorka Guardiola y Andrés Leonardo Martínez Ortiz.

Objetivos

El curso anterior, en la asignatura de Sistemas Operativos se estudiaron los conceptos de concurrencia, interfaz de un sistema operativo y la gestión de recursos del sistema. Estos conceptos presuponian un sistema centralizado.

Con el advenimiento en estas dos últimas décadas de las redes de ordenadores, el campo de los sistemas operativos se ha ampliado para poder gestionar de manera coordinada esos recursos en red.

A estos nuevos sistemas operativos ampliados se les llama Sistemas Operativos Distribuidos. Este entorno de computación distribuido introduce problemas nuevos debidos a que disponemos de muchos recursos que presentan características muy diferentes. No disponemos de memoria compartida entre todos los nodos, por lo que no tenemos un único ``estado'' global ni en el sistema ni en las aplicaciones. Los procesos tardan tiempo en comunicarse entre sí, los nodos son de arquitecturas diferentes, las redes que empleamos son también de arquitecturas diferentes. Disponemos de mucha memoria y CPU en unos nodos (PCs, Sparcs, etc.) y de muy poca memoria y CPU en otros (teléfonos, Palms, etc.). Es más dificil hacer aplicaciones que gestionen recursos en puntos diversos, con arquitecturas heterogéneas e interconectados por diversas redes.

El objetivo de la asignatura es el estudio de los sistemas operativos distribuidos y la programación de aplicaciones en dichos sistemas.

Horario

El grupo de sistemas-A tendrá teoría los miércoles de 18:00 a 20:00 y práctica los jueves de 17:00 a 19:00.

El grupo de sistemas-B tendrá teoría los miércoles de 15:00 a 17:00 y práctica los viernes de 15:00 a 17:00.

Teoría

En esta asignatura se tratan los Sistemas Operativos Distribuidos. El temario contemplará los siguientes (micro)temas, pensados para ver sólo lo esencial de cada uno de ellos. Cada tema se estima que durará una o dos semanas a lo sumo.

  1. Arquitecturas de sistemas distribuidos. transparencias
  2. Servicios y servidores. transparencias
  3. RPCs: Llamadas a procedimiento remoto. transparencias
  4. Threads. Su uso en servidores. transparencias
  5. Sincronización.transparencias
  6. Nombrado.transparencias
  7. Gestión de errores.transparencias
  8. Replicación (y caching).transparencias
  9. Coherencia.transparencias
  10. Recolección de basura.transparencias
  11. Protección. transparencias

Dichos temas corresponden con etapas en la realización de las prácticas y seguirán parte del material expuesto en el libro de A.S. Tanenbaum y Maarten van Steen llamado Distributed Systems: Principles and Paradigms.

En la última transparencia de cada tema indicamos a que secciones del libro corresponde cada tema.

Recordamos que no es conveniente estudiarse las transparencias. Es mucho mejor utilizarlas como guión para estudiar la asignatura y elaborar apuntes que como ``libro de texto''.

Planificación aproximada

El desarrollo de las clases se realizará siguiendo la siguiente planificación aproximada:
		semama	fecha		Teoria		Laboratorio
		
		0	 6 oct		presentacion	-
					arquitectura	-
		1	13 oct		-		teoria para practicas
		2	20 oct		servidores	teoria para practicas
		3	27 oct		RPCs		servidor srv
		4	 3 nov		threads		servidor srv
		5	10 nov		sincronizacion	srv con threads
		6	17 nov		nombrado	srv sincronizado con threads
		7	24 nov		gest. errores	multiplexor
		8	 1 dec		replicacion	mux. con gest. de errores
		9	 8 dec		coherencia	mux. de nombres
		10	15 dec		coherencia	mux. de nombres
		-	22 dec		-		-
		-	29 dec		-		-
		-	 5 jan		-		-
		11	12 jan		GC		puts y gets
		12	19 jan		elección		cierres con leases
		13	26 jan		protección	-
		

Prácticas

En este epígrafe encontrareis el enunciado y fechas de entrega de las prácticas de la asignatura. Dichas prácticas se realizarán integramente en el lenguaje de programación Limbo y el Sistema Operativo Distribuido Inferno. No obstante no usaremos ni Styx ni Styxlib durante las prácticas.

Se realizará una única práctica durante el cuatrimestre. Dicha práctica está diseñada para realizarse de forma individual. La práctica se efectuara siguiendo unas etapas detalladas más abajo.

La práctica dispondrá de un comprobador de funcionamiento denominado check_aso, que podrá utilizarse para comprobar la corrección de la misma. Dicho comprobador, conjuntamente con un detector de copias, se utilizará para entregar la práctica.

Descripción

La descripción de la práctica está disponible aquí en PDF. Consiste en implementar un servidor web distribuido para ejecutarlo en un conjunto de PCs en red.

Recursos

En clase de prácticas se contará lo necesario de Inferno y Limbo. Como información para repetidores, no es preciso saber nada de Styx ni de Styxlib: no los usamos este curso. Por lo demás, necesitas ciertos programas que sirven en realidad de esqueletos para la práctica que has de hacer:

En primer lugar, echa un vistazo a la FAQ de laboratorio si tienes algún problema.

Esto puede venir bien tambien. Son transparencias de introduccion a inferno. También teneis estas transparencias de introduccion a limbo y dos tutoriales pinchados en el foro en la sección de enlaces rápidos. Además, teneis estas transparencias de introducción a acme. y un tutorial de desarrollo de aplicaciones en Inferno.

Entrega

Deberás dejar los ficheros de la práctica en el directorio aso bajo tu $HOME, antes del día del exámen. Los nombres de los ficheros han de ser exactamente los mencionados en el enunciado.

El procedimiento de entrega consistirá en ejecutar un programa que efectuará dicha entrega. Este procedimiento se detallará más adelante.

Práctica de Septiembre

Para Septiembre la práctica es literalmente la misma que para Febrero.

Ejercicios

Nota: algunos de estos están sacados del libro de A. Tanembaum. Deberias hacer todos los que puedas de dicho libro. Estos de aquí son los propuestos para el curso pasado, pero deberías poder responderlos también.

  1. ¿Qué mecanismo de sincronización utilizarías en una aplicación que ejecute en un multiprocesador? ¿Por qué? ¿Hay algún otro que te resultase igualmente útil? ¿Y en un multicomputador?

  2. ¿Qué necesitas de un sistema operativo para implementar una aplicación distribuida?

  3. ¿Qué tipos de transparencia exhibe el sistema de ficheros en red que estás utilizando en el aula linux? ¿Cuales no?

  4. Se dispone de una aplicación que emplea múltiples procesos en un multiprocesador. Resulta muy caro comprar un multiprocesador más grande, aunque es preciso que la aplicación escale respecto al número de peticiones de los clientes. La aplicación utiliza semáforos como mecanismo de sincronización, por lo demás, tan sólo genera resultados a partir de los datos suministrados. ¿Se te ocurre alguna solución al problema? En caso afirmativo, ¿Puedes seguir utilizando los semáforos? ¿Qué tendrías que hacer para portar la aplicación al nuevo sistema? Implementa la libreria necesaria, en caso de que tu solución lo requiera.

  5. Para las siguientes aplicaciones, cuál es la mejor semántica (at least once, at most once): Leer y escribir ficheros, compilar, banca electrónica.

  6. ¿Qué RPCs crees que suministra un sistema de ficheros? Describe detalladamente la secuencia de acciones que tienen lugar con dicho diseño cuando un programa en el cliente ejecuta cat /un/fichero/del/servidor. ¿Se te ocurre alguna optimización a la luz de cómo funciona tu protocolo?

  7. En un sistema cliente-servidor ¿Qué protocolo de transporte de los usados normalmente en internet usuarías si dicho sistema se usa en una red muy fiable? ¿Y si dicho sistema se usa en redes pocos fiables? ¿por qué?

  8. ¿Te parece mejor o peor usar primitivas de paso de mensajes con buffering (con respecto a usarlas sin buffering) para un sistema que use RPCs? ¿Por qué? ¿Y para un sistema que no utilize RPCS y use por ejemplo, paso de mensajes a pelo?

  9. Leer el primer bloque de un fichero de forma remota es idempotente. ¿Lo es escribir dicho bloque?

  10. ¿Qué clases de send y de receive conoces? Implementa cada una de ellas a partir de cada una de las demás.

  11. ¿Toleran particiones en la red los algoritmos de elección que conoces? ¿Qué puedes hacer para que las toleren?

  12. Un sistema operativo no tiene select. ¿Puedes implementar una librería de threads? Discute cómo lo harías.

Exámenes

Evaluación

La asignatura comprende una parte de teoría y otra de práctica que se evaluan de manera independiente de 0 a 10. Es necesario aprobar tanto la teoría como la práctica para aprobar la asignatura. La nota final vendrá dada por la media aritmética de las notas de teoría y práctica. El alumno dispone para aprobar la asignatura de dos convocatorias al año, una en febrero y otra en Septiembre.

La práctica se estructura en 9 etapas. Su corrección se organiza en dos fases: comprobación automática y comprobación manual. Superada la comprobación automática está garantizado el aprobado (5). La comprobación manual evaluará el resto hasta 10.

La entrega de prácticas se puede realizar de dos formas;

Entrega por etapas
Realizando la entrega de la etapa 6 en diciembre y de la etapa 9 en febrero, la nota de práctica hace media con la de teoría a partir de 4.
Entrega sin etapas
Entregando la práctica en Febrero (sin entrega parcial) o en Septiembre, la nota de la practica hace media con la de teoría siempre que se supere el 5, tal y como recogen las reglas generales de la asignatura.

La nota de Febrero se calculará en base a la media obtenida de la suma de la nota de la práctica y el examen de teoría:

La nota de Septiembre se calculará en base a la suma de las calificaciones de dos pruebas:

La nota total de teoría de febrero se guarda hasta septiempre en caso de suspender las prácticas; igualmente sucede con la nota de prácticas. No se guarda ninguna nota de un curso para otro.

Se permitirá el uso de libros en los exámenes teóricos de esta asignatura.

Para la convocatoria de Septiembre se considerará la mejor nota sacada entre febrero y Septiembre, tanto en las pruebas de teoría como en las de prácticas.

En caso de copia en los exámenes o en las prácticas, se suspenderá la convocatoria correspondiente a todos los alumnos implicados, y en la siguiente convocatoria se les hará (en caso de que se presenten) un examen oral además del examen escrito.

Recursos

Teneis diversos recursos que podeis utilizar libremente como apoyo a la asignatura.

Software

Inferno se puede descargar gratis de internet. Vitanuova ofrece una licencia en la que sólo se incluye el fuente de las aplicaciones y el binario de sistema y aplicaciones. Si quieres instalarlo de este modo, ve a la página de Binario y Fuente limitado de Inferno y sigue las instrucciones.

Correo electrónico

Cualquier pregunta puede dirigirse al grupo docente que imparte la asignatura:

Profesores del Grupo de Sistemas y Comunicaciones

Concretamente, los profesores de dicho grupo que impartirán esta asignatura durante este curso académico son los que aparecen al principio de esta página.

Direcciones WWW

Teneis un foro de discusión y de ayuda sobre la asignatura. Si no encuentras lo que buscas aquí, inténtalo allí.

Laboratorio UNIX

Se utilizará el Laboratorio UNIX para las prácticas. Dicho laboratorio tiene ordenadores corriendo una versión de UNIX de software libre llamada Linux. En dichos puestos se puede ejecutar el sistema operativo inferno.

Inferno y Limbo

La pagina de inferno tal vez sea el primer sitio donde mirar. De todos modos, lo mas intersante podría ser Una lista de artículos sobre inferno entre los que estan:

Linux

El mejor sitio donde obtener información sobre Linux es la página de la organización de Linux.

Allí existen ingentes cantidades de información, incluyendo:

También hay un ejemplo de cómo se usa Inferno en los ladrillos de Lego Mindstorms, si estás matriculado en robótica puede que te interese.

Grupos de noticias

Teneis un foro de discusión y de ayuda sobre la asignatura.

También son interesantes para la asignatura los grupos de news (¡Ojo!, No deberíais poner mensajes en ellos!):

Bibliografía

1
A.S. Tanenbaum y Maarten van Steen Distributed Systems: Principles and Paradigms, Prentice-Hall, 2002.

2
G. Coulouris, J. Dollimore, T. Kindberg: Distributed Systems Concepts and Design. Addsion-Wesley, second edition, 1994

3
Brian W Kernighan, Rob Pike. The Practice of Programming. Addison-Wesley. 1999

4
B.W. Kernighan y R. Pike, El entorno de programación UNIX, Prentice-Hall, 1987.

5
A.S. Tanenbaum y A.S. Woodhull, Sistemas Operativos: Diseño e implementación, Prentice-Hall, 1998 2 ed.

6
A. Silberschatz y P. Galvin, Operating System Concepts, Addison Wesley, 1998, Quinta Ed.

7
A. Silberschatz, J. Peterson y P. Galvin, Sistemas Operativos. Conceptos fundamentales, Addison Wesley, 1994, Tercera Ed.

8
Phillip Stanley-Marbell, Inferno Programming with Limbo Wiley 2003

9
M.J. Rochkind, Advanced UNIX Programming, Prentice-Hall, 1986.

10
A. Frisch, Essential System Administration, O'Reilly & Associates, 1995.

11
Andrew S. Tanenbaum, Modern Operating Systems. Prentice-Hall, 1992

12
Maurice J. Bach: The Design of the Unix Operating System. Prentice-Hall, 1987

13
Samuel J. Leffer, Marshall Kirk McKusick, Michael J. Karels, John S. Quarterman: The Design and Implementation of the 4.3BSD UNIX Operating System. Addison-Wesley, third edition, 1989


Last updated: 2004-13-10