Facultad de Informática

Curso académico 2000-01

Asignatura: Diseño de Sistemas Operativos

Código(s): 146

Titulación(es): Ingeniero en Informática

Curso: 2º ciclo

Grupo(s):

Créditos: 9

Profesor(es): Juan Pavón Mestras

Departamento: Sistemas Informáticos y Programación

Tutorías: Lunes (10-13) y Martes (15-18)

 

Resumen del programa:

En esta asignatura se discuten aspectos metodológicos y arquitecturales para la construcción y diseño de sistemas operativos y sistemas distribuidos. Especialmente se desarrollan los paradigmas de diseño orientado a objetos, y el modelo cliente-servidor. Estos se aplican para mostrar cómo modelar y realizar los distintos elementos de un sistema operativo. En concreto se estudian temas de implementación de sistemas operativos conocidos como son Unix y Windows, analizando también aspectos de seguridad de los mismos. Asimismo, se trata el desarrollo de servicios en sistemas distribuidos utilizando el modelo cliente-servidor, en concreto sobre plataformas tipo CORBA, y modelos basados en componentes, como Enterprise Java Beans.

El curso tiene un marcado carácter práctico y las clases se impartirán en los laboratorios, alternando explicaciones con ejercicios.

Resumen del programa en inglés:

This subject covers methodological and architectural aspects in the design and implementation of operating systems and distributed systems. Emphasis is made in the object-oriented design and client-server model paradigms. These are applied to explain how to model and implement the components of an operating system. This is applied to understand how Unix and Windows are designed, taking into account security issues (hacking). Furthermore, it deals with the development of services on distributed systems by using the client-server model, specifically over CORBA platforms, and component-based models, such as Enterprise Java Beans.

The course has an experimental character, so lectures are in the labs, moving alternatively from theory to exercises.

 

Programa detallado:

Tema 1.      Introducción
Repaso de conceptos básicos de Sistemas Operativos. Evolución de los sistemas operativos. Concepto de Middleware. Seguridad: hacks y cracks en Unix y Windows.

Tema 2.     Arquitecturas de sistemas operativos
Sistemas monolíticos. Estructuración en capas. Máquinas virtuales. Modelo cliente-servidor.

Tema 3.     Diseño orientado a objetos de componentes de un sistema operativo y aplicaciones de sistema
Técnicas de diseño orientado a objetos. Construcción del núcleo de un sistema operativo. Planificación y comunicación entre procesos. Manejadores de dispositivos de entrada/salida. Gestión de memoria. Sistemas de ficheros. Intérprete de órdenes.

Tema 4.     Sistemas distribuidos
Concepto de sistema distribuido. Arquitecturas de procesadores distribuidos. Transparencias en la distribución. Comunicación. Modelos de software distribuido: cliente-servidor, agentes móviles.

Tema 5.     Aplicaciones distribuidas en red
Llamadas a procedimientos remotos (RPC). Servicios de ficheros: Network File System (NFS). Servicios de nombres: Network Information Service (NIS), Domain Name System (DNS). Programación distribuida con Java sockets, y RMI.

Tema 6.     Programación en CORBA
Middleware para entornos distribuidos (DCE, CORBA). Definición de interfaces. Programación de cliente y servidor con CORBA. Servicio de Nombres. Uso de multithreading Patrones de diseño en CORBA.

Tema 7.     Programación con componentes
Componentes software. Servidores de aplicación para Internet. Enterprise Java Beans.

 

Bibliografía:

Básica (por orden de prioridad):

·      D. L. Galli, “Distributed Operating Systems. Concepts and Practice”, Prentice Hall, 2000.

·      R. Orfali, D. Harkey, “Client/Server Programming with Java and CORBA”, Second edition, John Wiley & Sons, 1998.

Complementaria:

·      G.R. Andrews, “Foundations of Multithreaded, Parallel, and Distributed Programming”, Addison Wesley, 2000.

·      K.P. Birman, “Building Secure and Reliable Network Applications”, Prentice-Hall, 1996.

·      J. L. Peterson, A. Silberschat, “Operating System Concepts”, 2nd. edition, Addison-Wesley, 1985 (edición española: Reverté, 1989).

·      A. S. Tanenbaum, “Operating Systems: design and implementation”, 2nd edition, Prentice‑Hall, 1997. (en español: Prentice-Hall, 1998).

·      A. S. Tanenbaum, “Sistemas Operativos Distribuidos”, Prentice‑Hall, 1996.

·      S. Vinoski y D.C. Schmidt, “Object Interconnections”, serie de artículos publicados en la revista C++ Report, 1995-98.

 

Desarrollo de la asignatura:

La asignatura se imparte en laboratorios, en sesiones que alternan teoría y práctica. Se exponen conceptos y luego se proponen una serie de ejercicios prácticos que los alumnos deben resolver en el sistema Unix (preferiblemente) o Windows.

 

Método de evaluación:

Se realizará un examen de teoría (al final del curso) y un conjunto de prácticas y presentaciones durante las sesiones de clase. La nota final de la asignatura se obtendrá como la media de las notas en estos tres apartados, de acuerdo a la fórmula:

            Nota Final = Examen * 0.5 + Media de todas las práctica* 0.5

Es condición necesaria aprobar el examen y la media de las prácticas (aprobado >= 5). Se considerará además las aportaciones del alumno en la clase.

 

Requisitos:

El alumno tiene que haber aprobado la asignatura Sistemas Operativos.

Asimismo, son necesarios conocimientos de programación orientada a objetos, programación concurrente, y redes. Esto significa que el alumno debe haber cursado las asignaturas correspondientes, o realizarlas en paralelo durante el mismo curso.