U
niversidad de
L
as
P
almas de
G
ran
C
anaria
E
scuela
U
niversitaria de
I
nformática
F
acultad de
I
nformática
Sistemas Operativos
Guía de la
asignatura
curso 2004/05
ste documento es una breve guía de la asignatura de Sistemas Operativos, del segundo curso de las ingenierías informáticas impartidas por la ULPGC. Su propósito es informar al estudiante sobre todo aquello que se ha considerado esencial para un feliz transcurso de la asignatura y se le ofrece como punto de partida imprescindible.
E
Incluye el programa de la asignatura, el sistema de evaluación, la planificación del curso y las referencias al resto de la documentación necesaria.
Esta guía se encuentra disponible en la web de la asignatura, en esta dirección:
http://sopa.dis.ulpgc.es
Contenido
1. Presentación 2
2. Contenidos teóricos 3
3.
Contenidos prácticos 3
4. Evaluación 5
5.
Instalaciones 7
6. Profesorado 7
7. Documentación 8
8. Bibliografía básica 9
9.
Bibliografía complementaria 10
10.
Temario detallado 13
11. ¡No olvidar! 15
1.
Presentación
El sistema operativo es una parte esencial dentro de un sistema informático. Administra los recursos del sistema y ofrece un entorno de programación y operación a los usuarios, permitiendo trabajar con la máquina de forma cómoda y eficaz. Es imprescindible que un titulado universitario en Informática conozca los conceptos fundamentales vinculados a los sistemas operativos, sus funciones, su estructura y su implementación.
En consecuencia, todas las ingenierías en informática de la ULPGC contienen esta asignatura de Sistemas Operativos, que se imparte en el segundo cuatrimestre del segundo año y con una carga docente de setenta y cinco horas (cuarenta y cinco teóricas más treinta prácticas).
1.1
Objetivos de formación
Esta asignatura cubre plenamente la materia troncal de Sistemas Operativos, definida en las directrices para planes de estudios de esta forma: “organización, estructura y servicio de los sistemas operativos. Gestión y administración de memoria y de procesos. Gestión de entrada/salida. Sistemas de ficheros.”
La práctica de esta asignatura irá encaminada a consolidar los conocimientos teóricos impartidos en el aula, haciendo que el estudiante construya componentes de un sistema operativo. Para ello el estudiante tendrá que aprender a manejarse en un entorno de programación, en concreto C++ bajo UNIX (Linux). Gracias a esto, la parte práctica servirá también como adiestramiento en la programación de sistemas.
En suma, los objetivos docentes de Sistemas Operativos son:
Conceptos generales sobre sistemas operativos
x estructura
x funciones
x diseño
Programación de sistemas
x Operación y programación en entorno UNIX
x Programación básica en lenguaje C++
1.2
Requisitos académicos
Para cursar esta asignatura se requieren conocimientos de organización de computadoras y de informática general a un nivel elemental. También es preciso un dominio básico de la programación estructurada, programación modular y de tipos abstractos de datos. Por otro lado, el estudiante tendrá que manejar inevitablemente documentación técnica en inglés, por lo que es importante tener un nivel intermedio de comprensión lectora en este idioma.
Las prácticas de la asignatura se realizarán en lenguaje C++. Es requisito indispensable que el estudiante tenga experiencia previa en lenguaje C.
2.
Contenidos teóricos
Las clases teóricas comprenderán cinco unidades temáticas, que aquí se presentan acompañadas de la duración aproximada de su impartición.
1. Conceptos generales (10h, 3-4 semanas) 1.1. Definición de sistema operativo.
1.2. Recorrido histórico. Tipos de sistemas.
1.3. Estructura de computadores y sistema operativo. 1.4. Estructura de un sistema operativo.
2. Procesos y concurrencia (14h, 5 semanas) 2.1. Fundamentos de procesos y concurrencia. 2.2. Planificación de procesos.
2.3. Sincronización y comunicación. 2.4. Interbloqueo.
3. Memoria (7h, 3 semanas)
3.1. Organización de la memoria. 3.2. Gestión de memoria contigua. 3.3. Segmentación y paginación.
3.4. Memoria virtual: paginación por demanda. 4. Archivos (4h, 2 semanas)
4.1. Interfaz del sistema de archivos.
4.2. Implementación del sistema de archivos. 5. Entrada/salida (3h, 1 semana)
5.1. Manejadores de dispositivos. 5.2. Gestión de colas: spooling.
A estas horas estimadas hay que añadirles los controles y ejercicios diversos que se realizarán en horas de clase durante el cuatrimestre.
Al final de esta guía, a partir de la página 13, se muestra el temario detallado de la asignatura. El texto por el que se seguirá la parte teórica es Sistemas Operativos, de A. Silberschatz y P. Galvin (ver página 8).
3.
Contenidos prácticos
Las explicaciones teóricas se apoyarán en una serie de actividades prácticas que pretenden afianzar los conocimientos recibidos, básicamente mediante el diseño e implementación de módulos de un sistema operativo educacional llamado Nachos. Además, la asignatura también tiene una parte formativa sobre programación de sistemas.
3.1
El sistema operativo Nachos
El Nachos es un pequeño sistema operativo escrito en C++ que corre sobre una máquina virtual MIPS (emulada) y que puede ser ejecutado en plataformas UNIX de muchos tipos. Fue creado por profesores de la Universidad de Berkeley como
soporte a las prácticas de la asignatura de Sistemas Operativos. Nachos contiene un sistema operativo “a medio hacer”; a partir del código disponible se puede experimentar fácilmente y diseñar un sistema multitarea, memoria virtual, sistema de ficheros, incluso controlar una red simulada de máquinas.
El código fuente de Nachos utiliza un subconjunto reducido de C++, básicamente el soporte de tipos abstractos de datos (clases). No emplea herencia, polimorfismo, excepciones ni plantillas (templates), así que sólo se requiere un aprendizaje básico de C++ para poder entender el código, que por otra parte es muy legible.
El Nachos corre bajo muchas versiones de UNIX. En esta asignatura se utilizará Linux. Este sistema operativo puede correr en un 386 o superior y además es gratuito. En la biblioteca se depositarán varios cedés con Linux, para que los alumnos puedan instalarlo cómodamente en sus propios ordenadores.
3.2
Actividades prácticas previstas
1. Operación en entorno Unix: sistema de archivos, navegación, correo, etc. 2. Programación en C++.
3. Herramientas de programación: editores, compilador, make, depurador. 4. Introducción al sistema operativo Nachos.
5. Primer trabajo: Práctica de hilos y concurrencia con Nachos.
6. Segundo trabajo: Práctica de llamadas al sistema y multitarea con Nachos. 7. Tercer trabajo (opcional): Práctica de memoria virtual.
Las primeras cuatro actividades tienen como objetivo familiarizar al estudiante con las herramientas de programación de sistemas que utilizará durante el curso. Consistirán en clases prácticas en el laboratorio más ejercicios que el alumno resolverá por su cuenta. Cada actividad se corresponde con una o varias clases prácticas, siempre en bloques de dos horas. Se espera que estas actividades consuman el 35-40% de las clases prácticas disponibles.
El resto de las prácticas consistirán en la implementación de diversos componentes del Nachos, por medio de dos trabajos. El primer trabajo consistirá en implementar herramientas de sincronización entre procesos, así como realizar programas simples que utilicen estas herramientas. El segundo trabajo consistirá en modificar el Nachos de manera que acepte llamadas al sistema y dé soporte a la multiprogramación y al tiempo compartido.
En las clases prácticas se explicará cada uno de estos trabajos y se dará la asistencia necesaria para su mejor realización. Además del tiempo de clase, los estudiantes podrán hacer uso de sus puestos de trabajo en el laboratorio para desarrollar sus trabajos, siempre que el laboratorio no esté ocupado o cerrado por otras razones.
Los dos primeros trabajos prácticos son de realización obligatoria para aprobar la asignatura. El tercer trabajo es opcional y dará un 10% adicional en la nota final.
3.3
Prácticas en grupo o individuales
Las cuatro primeras actividades sirven para adiestrarse con las herramientas (Linux, compilador de C++, etc.) y se pueden desarrollar de forma individual. Sin
embargo, los trabajos en Nachos se realizarán en grupos de dos o tres personas, ya que uno de los objetivos de las actividades prácticas es la fomentar el trabajo en equipo. Los grupos se configurarán a voluntad de los propios estudiantes, siempre que pertenezcan al mismo grupo oficial (A,B,C,D; sólo las ingenierías técnicas). Piénsenlo bien antes de elegir a su compañero, puesto que de ordinario no se permiten escisiones ni refusiones de grupos una vez que están formados.
Los trabajos prácticos se podrán realizar individualmente, pero con una penalización 1 punto sobre la calificación de las prácticas.
3.4
Repetidores
Los estudiantes que repiten la asignatura no tendrán que volver a realizar los trabajos prácticos que ya hubieran superado con éxito el curso anterior. Cada uno de estos trabajos se considerará aprobado con idéntica nota a la que se obtuvo en el pasado curso.
3.5
Turnos de prácticas
Cada titulación tiene varios turnos de prácticas disponibles (cuatro en ITIG e ITIS; tres en II), en días y horas diferentes. Los alumnos tendrán que elegir a qué turno de prácticas de su titulación desean acudir. Para ello, en los primeros días del curso, se dejará una planilla en la Conserjería del Módulo 3 para que se inscriban en el turno preferido. Las inscripciones deben realizarse durante la primera semana de clases.
4.
Evaluación
La asignatura se evaluará mediante exámenes, el resultado de los trabajos prácticos y controles discrecionales en clase.
4.1
Exámenes
Los exámenes teóricos constituyen en 75% de la calificación final. Habrá un examen de convocatoria de junio (según lo dispuesto oficialmente). Además, cuando se haya impartido entorno al 50% de la materia de teoría se celebrará un examen parcial, cuyo peso en la nota de teoría será del 50%.. Por tanto en el examen de junio se dividirá en dos partes: la primera para aquellas pèrsonas que no hayan aprobado el parcial y la segunda que estará constituida por la materia que no haya entrado en el primer parcial. Para poder aprobar la teoría en junio es necesario aprobar las dos partes. Las calificaciones obtenidas en junio en cada una de las partes teóricas no se guiardan para las convocatorias de septiembre y diciembre.
4.2
Trabajos prácticos
Los dos trabajos prácticos obligatorios serán evaluados y su calificación contribuirá en un 25% a la nota final de la asignatura. Cada trabajo representa el 12’5% de la nota final. Los integrantes de un grupo de prácticas habrán de completar con éxito los dos trabajos, como muy tarde una semana antes del examen de junio. El tercer trabajo, optativo, incrementará la nota hasta en un 10% adicional.
Los trabajos prácticos superados tendrán validez en las convocatorias de junio, septiembre y en la de diciembre del siguiente curso. En las convocatorias extraordinarias no hay que presentar trabajos adicionales.
4.3
Evaluación continua
A lo largo del curso podrán realizarse controles escritos sobre alguna de las unidades teóricas de la asignatura. Estos controles serán a discreción del profesor, así que no tendrán fecha prefijada. Los controles se realizarán durante la hora de clase. La calificación obtenida en estos controles podrá incrementar hasta en un 10% la nota obtenida mediante exámenes y trabajos.
4.4
Calificación final
La calificación final resultará de aplicar los porcentajes antedichos a la nota obtenida en exámenes, trabajos prácticos y en su caso, a la evaluación continua. No obstante, para aprobar la asignatura habrá que obtener más del 50% de la nota máxima de cada uno de los trabajos obligatorios y de los exámenes de teoria. La nota de teoría se obtiene obteniendo la media aritmética de las notas de los exémnes de teoría, una vez que se hayan aprobado cada una de las partes de teoría.
4.5
Ejemplos de calificación
Con el fin de aclarar el método para calcular la nota final, aquí se muestran algunos ejemplos:
1ª parte
2ª partel Prác.1 Prác.2 Nota final Observaciones
1 7 7 7 7 Suspenso debido a que no se ha superado la
primera parte de teoría
9 3 5 5 5 Suspenso debido a que no se ha superado la
segunda parte de teoría
10 10 5 4 4’5 Aunque la media es mayor que 5, suspendes por no haber superado la segunda práctica.
5 6 5,5 8 5,8 El Alumno está aprobado
4.6
Criterios de evaluación. Tipo de exámenes
Se pretende evaluar en el alumno la consecución de los objetivos docentes de la asignatura, principalmente el dominio de los conceptos fundamentales sobre sistemas operativos. Los exámenes estarán diseñados de tal forma que se abarque la mayor cantidad posible de material temático, a fin de explorar los conocimientos globales que tenga el alumno. Bastantes preguntas tratarán de relacionar conceptos de temas diferentes.
La costumbre, que no la norma, de los últimos años ha sido que la duración de un examen está en torno a las tres horas y media. En los pasados cursos casi siempre los exámenes contuvieron varias preguntas de desarrollo, preguntas de respuesta corta, algún desarrollo algorítmico y un test con cuestiones generales.
Los trabajos prácticos se evaluarán de acuerdo con criterios de calidad del programa, tanto de su diseño general como de su implementación y documentación;
aparte, se valorarán parámetros como la creatividad y la mejor o peor defensa que el grupo haga de su trabajo. Los criterios de evaluación de prácticas se adjuntarán a la documentación que se entregará en su momento.
IMPORTANTE: Si las prácticas se realizan de forma individual, se descontará un punto de la calificación nominal obtenida.
No está de más remarcar que a cualquier alumno universitario se le presupone un adiestramiento previo en varias disciplinas, como son: la capacidad para comprender un texto escrito; expresarse con corrección, precisión y claridad; y en general un bagaje formativo cuya carencia repercutirá en la calificación definitiva en la asignatura.
5.
Instalaciones
Las clases teóricas se impartirán en las aulas correspondientes del Edificio de Informática y Matemáticas.
Para realizar los trabajos prácticos, se dispone del Laboratorio de Sistemas Operativos. El laboratorio cuenta con un ordenador servidor de altas prestaciones y una red local de una veintena de pecés. Estos equipos tienen instalado Linux y algunos Windows, aunque las prácticas se realizarán en Linux. Aparte de estos puestos de trabajo, los estudiantes podrán trabajar de forma remota mediante Internet a cualquier hora del día. Pueden solicitarse permisos de uso del laboratorio fuera del horario habitual bajo las condiciones que establezcan los profesores de la asignatura y el Departamento de Informática y Sistemas.
La naturaleza de los trabajos prácticos permite que éstos se realicen en cualquier pecé con Linux, así que quien lo desee podrá implementarlos en su casa. En cualquier caso, la revisión de los trabajos se hará en las máquinas del Departamento de Informática y Sistemas.
Los laborales encargados de la administración del laboratorio son don Gonzalo López ([email protected]) y don Francisco Rivera ([email protected]).
6.
Profesorado
Carmelo Rubén García Rodríguez
coordinador de II despacho 3-12 tlf. 928458756
correo: [email protected]
Alexis Quesada Arencibia
coordinador de ITIS - ITIG despacho 1-8
tlfs. 928454572 / 928457108 correo: [email protected]
José Miguel Santos Espino
despacho 3-2 tlf. 928458742
correo: [email protected]
Francisco J. Santana Pérez despacho 1-4
tlf. 928458704
correo: [email protected]
Los horarios de tutoría y atención al alumnado estarán publicados en los despachos respectivos de los profesores. Es recomendable acordar previamente una cita con el profesor. Los profesores atenderán gustosamente consultas por correo electrónico.
IMPORTANTE:
Es fundamental que antes del 1 de marzo de 2005 todos los alumnos hayan entregado una ficha al profesor coordinador de la asignatura.
7.
Documentación
En la asignatura Sistemas Operativos se cuenta con fuentes documentales de todo tipo, que podemos clasificar en:
Bibliografía básica y complementaria Guías teóricas y prácticas
Material para las prácticas
Servicios de información en línea
Seguidamente se explicará cada una de estas fuentes, aunque a la bibliografía se la tratará con más detenimiento en posteriores secciones.
7.1
Bibliografía básica y complementaria
La bibliografía básica de una asignatura son aquellos textos fundamentales que bastan para que el alumno tenga una visión completa de los contenidos de aquélla. En la sección de bibliografía básica se incluyen libros sobre sistemas operativos en general y literatura conveniente para los objetivos prácticos de la asignatura (programación y operación en UNIX, programación en C++). Véase a partir de la página 9.
Por bibliografía complementaria se entiende el conjunto de textos accesorios, no imprescindibles, que sin embargo son útiles para profundizar en aspectos particulares de la asignatura. En la página 10 comienza una relación de títulos que se pueden considerar bibliografía complementaria.
7.2
Guías teóricas y prácticas
Durante el curso los profesores entregarán material diverso para seguir las clases teóricas y prácticas. Por ejemplo, para cada unidad teórica. Para las prácticas se suministrará material variado, p.ej. trípticos con las órdenes comunes de UNIX, esquemas con la organización de archivos del Nachos, etc.
7.3
Material para el laboratorio
La documentación que se suministra para las actividades prácticas y el uso del laboratorio incluye, entre otras cosas:
• Fichas de prácticas
• Manuales de operación y programación en entorno UNIX
• Manuales de programación en C/C++
• Textos de los trabajos prácticos en Nachos
También quedarán disponibles, de forma controlada, los manuales técnicos del sistema informático del laboratorio para efectuar consultas esporádicas.
7.4
Servicios en línea
Desde 1994, la gestión de la asignatura de Sistemas Operativos incluye unos servicios de información automatizados. El servicio mantiene información actualizada sobre el laboratorio, enunciados de prácticas, textos y soluciones de exámenes (ya celebrados, por supuesto), manuales técnicos, etc., que son accesibles a través del WWW. La dirección del servicio es http://sopa.dis.ulpgc.es
Los estudiantes podrán utilizar el correo electrónico para consultar dudas con sus profesores. Además, los comunicados cotidianos se remitirán a los alumnos por esa vía, por ejemplo las convocatorias de clases y las calificaciones de exámenes. De hecho, el correo electrónico será el medio de comunicación preferente para los avisos de ese tipo. Ello quiere decir que bastantes comunicados sólo se harán por vía electrónica y no aparecerán impresos en tablón alguno.
7.5
Dónde encontrar los documentos
Los documentos escritos relacionados con la asignatura (apuntes, guías, etc.) se dejarán en el Servicio de Reprografía correspondiente. En la Biblioteca de Informática hay ejemplares del cederrón con el Linux y el Nachos. La mayoría de estos documentos estarán disponibles en el servidor WWW de la asignatura, en formato HTML. La “Guía de Operación en entorno UNIX” se encontrará también en la Biblioteca del Edificio de Informática y Matemáticas, para su consulta. En el servidor WWW de la asignatura estará expuesto un catálogo actualizado con la documentación publicada y dónde puede encontrarse.
8.
Bibliografía básica
La bibliografía básica es el conjunto de libros que bastan para el aprendizaje completo de la asignatura, según los temarios teórico y práctico; a continuación se presentarán indicando para cada una su título, autor y editorial, más un breve comentario. De todas estas obras existen ejemplares suficientes en la Biblioteca del Edificio de Informática y Matemáticas.
8.1
Fundamentos de sistemas operativos
Los siguientes libros engloban la práctica totalidad del temario de la asignatura. Aunque existen suficientes ejemplares en biblioteca, no es mala inversión adquirir uno de ellos para que engrose las estanterías del estudiante.
SISTEMAS OPERATIVOS (QUINTA EDICIÓN) A. Silberschatz, P. Galvin
Addison-Wesley, 1999
El apodado libro de los dinosaurios es un texto esencial en Sistemas Operativos, que cubre la mayor parte de los temas de la asignatura. Imprescindible como libro de texto. La cuarta y quinta ediciones están bien actualizadas y tienen una organización temática más adecuada para seguir la asignatura. Además, la quinta edición incluye capítulos específicos sobre Windows NT y Linux..
8.2
Operación en el sistema UNIX
Como complemento al adiestramiento que se recibirá en las clases prácticas, se recomiendan estas obras:
GUÍA DE OPERACIÓN EN UNIX J. M. Santos
Servicio de publicaciones EUI, 1996
Trata a un nivel introductorio-medio la operación en el entorno UNIX, llegando a nociones sobre la programación de shell scripts. El libro se complementa con los trípticos o chuletas que se entregarán en las clases prácticas.
EDICIÓN ESPECIAL LINUX (CUARTA EDICIÓN) J. Tackett y S. Burnett
Prentice-Hall, 2000
Un libro que cubre la instalación, la administración y el uso cotidiano de sistemas Linux.
8.3
Programación en C++
Una pléyade de títulos sobre programación en C y C++ inunda el mercado bibliográfico. Dentro de este vasto océano se seleccionan dos títulos en español.
EL LENGUAJE DE PROGRAMACIÓN C++(SEGUNDA Y TERCERA EDICIONES) B. Stroustrup
Addison-Wesley, 1993-1998
Puede considerarse el manual de referencia del C++, escrito por el propio autor del lenguaje. La tercera edición sólo se encuentra en inglés en la biblioteca del edificio.
C:MANUAL DE REFERENCIA
H. Schildt
McGraw-Hill, 1989
Ideal para el aprendizaje del lenguaje C, explica tanto las características del mismo como bastantes funciones de biblioteca.
9.
Bibliografía complementaria
En esta sección se incluyen textos que, o bien sirven para profundizar en materias de la asignatura, o bien son referencias concretas para algunos temas no suficientemente cubiertos por la bibliografía básica.
La mayoría de los libros expuestos están publicados originalmente en inglés. Cuando la obra está traducida al español, se muestran los datos de la obra traducida. En general, hay pocos ejemplares de estos libros en la Biblioteca.
9.1
Fundamentos de sistemas operativos
Los siguientes títulos abarcan todo el temario de la asignatura y se podrían emplear como libros de texto alternativos al recomendado.
SISTEMAS OPERATIVOS.CONCEPTOS Y DISEÑO (SEGUNDA EDICIÓN) M. Milenkovic´
McGraw-Hill, 1994
SISTEMAS OPERATIVOS (CUARTAEDICIÓN) W. Stallings
PRENTICE HALL,2001
SISTEMAS OPERATIVOS.UNAVISIÓNAPLICADA J. Carretero, P. De Miguel, F. García y F. Pérez McGraw-Hill, 2001
Las siguientes obras son textos generales sobre sistemas operativos en español. Lamentablemente, no hay ejemplares en las Bibliotecas de la ULPGC.
OPERATING SYSTEMS,DESIGN AND IMPLEMENTATION
A. S. Tanenbaum Prentice-Hall, 1987
Trata de sistemas operativos en general e incluye el diseño y código de un sistema operativo educacional, el Minix. Muy útil para aprender desde las entrañas de un sistema operativo real.
FUNDAMENTOS DE SISTEMAS OPERATIVOS
R. Finkel Anaya, 1990
Raphael Finkel nos muestra en su obra a los sistemas operativos desde un enfoque inhabitual y muy didáctico. Interesante lectura complementaria.
MODERN OPERATING SYSTEMS
A. S. Tanenbaum Prentice-Hall, 1991
Otra entrega de Andy Tanenbaum sobre conceptos de sistemas operativos. Más de la mitad del libro se centra en los sistemas distribuidos, así que es preferible como texto suplementario para profundizar en aspectos avanzados..
9.2
Programación concurrente
CONCURRENT PROGRAMMING
A.Burns, G. Davies Addison-Wesley, 1993
Un texto básico para entender los aspectos de la concurrencia que se explican en la asignatura, en particular los capítulos 1, 2, 3, 6 y 7.
PRINCIPLES OF CONCURRENT AN D DISTRIBUTED PROGRAMMING
M. Ben-Ari
Prentice-Hall, 1990
Un texto clásico sobre concurrencia. Los primeros capítulos cubren el área temática de concurrencia de la asignatura.
9.3
Programación en C/C++
PRACTICAL C++PROGRAMMING PRACTICAL CPROGRAMMING Steve Oualline O'Reilly, 1995/1993Dentro de la excelente línea editorial de O'Reilly, están especialmente indicado para quienes se enfrentan con el lenguaje C/C++ partiendo de experiencia previa en algún otro lenguaje de programación.
THE ANNOTATED C++ REFERENCE MANUAL
M. Ellis, B. Stroustrup Addison-Wesley, 1990
Se trata del manual de referencia del lenguaje (citado en la bibliografía básica), con comentarios y anotaciones añadidos sobre técnicas de programación. Muchos lo consideran el mejor texto de referencia para C++.
10.
Temario detallado
Este es el temario teórico de la asignatura, con un mayor nivel de detalle en sus contenidos.
1. Conceptos
generales
1.1. Definición.
1.1.1. Componentes de un sistema informático: sistema lógico, sistema físico y sistema humano. Aplicaciones y programas del sistema. Concepto de sistema operativo.
1.1.2. Objetivos de los sistemas operativos. El sistema operativo como administrador de recursos, máquina extendida, programa de control y entorno de operación y programación.
1.2. Recorrido histórico. Tipos de sistemas.
1.2.1. Sistemas primitivos. El primer sistema operativo: monitor residente. Procesamiento por lotes. La multiprogramación. Sistemas interactivos: tiempo compartido. Sistemas de tiempo real. Informática personal. Sistemas paralelos. Sistemas distribuidos.
1.3. Estructura de computadoras y sistema operativo.
1.3.1. Sistema de interrupciones. Interrupciones vectorizadas. Acceso directo a memoria (DMA). Excepciones e interrupciones software.
1.3.2. Jerarquía de memorias. Principio de caché. Consistencia y coherencia. 1.3.3. Necesidad de protección en el sistema operativo. Instrucciones
privilegiadas. Modo dual de operación. Implementación en hardware. 1.4. Estructura y funciones de los sistemas operativos.
1.4.1. Componentes funcionales de un sistema operativo: Gestión de procesos, memoria, entrada/salida, archivos, interfaces de usuario y de programación. Programas del sistema.
1.4.2. El núcleo. Llamadas al sistema. El sistema operativo como programa reactivo (guiado por eventos). Políticas y mecanismos. Principios de abstracción y de caché.
1.4.3. Modelos arquitectónicos: sistemas monolíticos, sistemas por capas, máquinas virtuales, modelo cliente/servidor. Ejemplos: UNIX y Windows NT.
2.
Procesos y concurrencia
2.1. Fundamentos de procesos y concurrencia.
2.1.1. Concepto de proceso. Estados de actividad de un proceso. Planificación de procesos.
2.1.2. Concurrencia. Ventajas de los sistemas concurrentes. Cooperación y competencia entre procesos.
2.1.3. Llamadas al sistema para gestionar procesos. Comunicación entre procesos. Hilos.
2.2. Planificación de procesos.
2.2.1. Estructuras de gestión: bloque de control de proceso, colas de procesos. Niveles de planificación.
2.2.2. Modelo de comportamiento de un proceso. Criterios de evaluación de las políticas de planificación.
2.2.3. Políticas de planificación. Por orden de llegada (FCFS). Primero el más corto (SJF). Métodos expulsivos (preemptive). Round-Robin. Métodos basados en prioridades. Métodos multicolas.
2.2.4. Planificación avanzada: tiempo real, multiprocesadores. 2.3. Sincronización y comunicación entre procesos.
2.3.1. Concepto y necesidad de sincronización. Postergación indefinida e interbloqueo. El problema de la sección crítica. Soluciones algorítmicas y de hardware.
2.3.2. Herramientas de programación concurrente: semáforos, regiones críticas, monitores. Problemas clásicos de sincronización entre procesos. 2.4. Interbloqueo.
2.4.1. Caracterización del interbloqueo.
2.4.2. Tratamiento del interbloqueo: prevención y evitación; detección y recuperación.
3.
Gestión de la memoria
3.1. Organización de la memoria.
3.1.1. Nivel físico de memoria: espacio de direcciones lineal. Jerarquía de memorias y caché. El espacio de direcciones en el lenguaje de alto nivel. Elementos y fases en la traducción de direcciones: compilación, enlace, carga del programa, traducción dinámica.
3.1.2. Elementos y objetivos de la gestión de memoria. Concepto de espacio virtual. Traducción de direcciones. Reubicación estática y dinámica. Hardware de traducción de direcciones
3.2. Gestión de memoria contigua.
3.2.1. Políticas de gestión de huecos libres. Particiones fijas (MFT) y variables (MVT). El problema de la fragmentación. Compactación.
3.2.2. Intercambio (swapping). Relación con la planificación de procesos. 3.3. Segmentación y paginación.
3.3.1. Paginación: Arquitectura de un sistema paginado. Circuitería de traducción y estructuras de control. Protección de páginas.
3.3.2. Segmentación: Arquitectura de un sistema segmentado. Circuitería de traducción y estructuras de control. Protección de segmentos. Reubicación y compartición de áreas de memoria. Combinación de la segmentación con la paginación.
3.4. Memoria virtual
3.4.1. Principios y objetivos de la memoria virtual. El almacenamiento secundario como extensión de la memoria principal. Arquitectura de un sistema con memoria virtual.
3.4.2. Paginación bajo demanda. Fallos de página. Políticas de reemplazo: LRU, LFU, NRU, etc.
3.4.3. Conceptos avanzados: el modelo del área activa. Hiperpaginación. Políticas de frecuencia de fallos de página.
4.
Sistemas de archivos
4.1. Interfaz del sistema de ficheros.
4.1.1. Concepto de fichero. El fichero como tipo abstracto de datos: operaciones. Tipos de ficheros. Bloques lógicos.
4.1.2. Operaciones sobre ficheros. Métodos de acceso directo y secuencial. Protocolos de uso de ficheros. Semánticas de consistencia.
4.1.3. Directorios. Nombres de archivos. Rutas. Organizaciones de directorios: dos niveles, en árbol, en grafo. Organizaciones no arbóreas: enlaces, alias.
4.1.4. Protección de archivos. Conceptos sobre protección: usuarios, dominios, privilegios, etc. Listas de control de acceso. Tipos de operaciones.
4.2. Implementación del sistema de archivos.
4.2.1. Organización del disco. Bloques lógicos. Estructuras para directorios y ficheros. Nodos-i. Soporte de múltiples unidades lógicas y físicas.
4.2.2. Gestión del espacio en disco. Almacenamientos contiguo, encadenado e indexado. FAT. Gestión del espacio libre: mapas de bits, listas, grupos. 4.2.3. Planificación de peticiones al disco. Periféricos de almacenamiento.
Copias de seguridad.
5. Entrada/salida
5.1. Manejadores de dispositivos.
5.1.1. Principios de funcionamiento del hardware de E/S: dispositivos, controladores, DMA.
5.1.2. Manejadores de dispositivo. Ejemplos en Unix y Windows NT. 5.2. Gestión de colas de peticiones: spooling.
11.
¡No olvidar!
• Entregar una ficha al profesor coordinador de la asignatura