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.