Sistemas Operativos Guía de la asignatura curso 2011/12 Escuela de Ingeniería Informática E 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. 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 (http://sopa.dis.ulpgc.es/so). disponible en la web Contenido Presentación 3 Contenidos teóricos 4 Contenidos prácticos 4 Evaluación 6 Instalaciones 7 Profesorado 8 Documentación 8 Bibliografía básica 10 Bibliografía complementaria 11 Temario detallado 13 de la asignatura 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 estructura funciones diseño Programación de sistemas Operación y programación en entorno UNIX 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 once unidades temáticas, que se impartirán en este orden: Parte-A 1. 2. 3. 4. Conceptos sobre sistemas operativos Estructura del computador Estructura del sistema operativo Procesos Parte-B 5. 6. Planificación de procesos Concurrencia: exclusión mutua y sincronización Parte-C 7. 8. 9. Memoria Memoria Virtual Archivos Al final de esta guía, a partir de la página 13, se muestra el temario detallado de la asignatura. Los textos por los que se seguirá la parte teórica son: 3. • Fundamentos de Sistemas Operativos: Teoría y ejercicios resueltos, de S. Candela, R. García, A. Quesada, F. Santana, J.M. Santos. • Sistemas Operativos, de A. Silberschatz y P. Galvin. 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 con multitarea, memoria virtual, sistema de ficheros, e 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. 3.2 Actividades prácticas previstas Las prácticas consistirán en actividades tutorizadas en el laboratorio más alguna tarea que se propondrá para que el alumno la resuelva por su cuenta. Estas son las actividades previstas: 1. Operación con entorno Linux y programación en C++ bajo Linux. 2. Introducción a Nachos e implementación del gestor de llamadas al sistema del Nachos. 3. Manejo de hilos y concurrencia en Nachos. 4. Políticas de planificación de hilos en Nachos. [1ª entrega obligatoria] 5. Implementación de los cerrojos y de las variables condición y resolución de problemas clásicos de concurrencia. [2ª entrega obligatoria] 6. Implementar la llamada al sistema Exec sin multiprogramación. 7. Implementar la llamada al sistema Exec para que Nachos proporcione un entorno multiprogramado. [3ª entrega obligatoria] 8. Implementar las llamadas al sistema Exit y Join. [entrega optativa] 9. Memoria Virtual. [entrega optativa] Estos trabajos son de realización obligatoria para aprobar la asignatura. Las prácticas 8ª y 9ª práctica tendrá carácter opcional y añadirá un 10% adicional en la nota final de la asignatura. Los trabajos se presentarán en tres entregas, en los plazos que se establecerán durante el cuatrimestre. Las entregas se harán a través de Moodle, y consistirán en la entrega de código fuente más una pequeña memoria. Además, para superar los trabajos, estas cuatro entregas deberán ser defendidas ante el profesor. En el caso de que las entregas no se presenten en los plazos marcados, los estudiantes podrán entregarlas al final del curso, en el plazo (evaluación no continua, bien por que se presente en una convocatoria que no es la ordinaria o bien por que no se presentan las entregas por plazos) que se indicará. En este caso de entrega fuera de plazo, para superar la parte práctica de la asignatura habrá que realizar además un examen práctico en el laboratorio, además de tener las prácticas entregadas aprobadas. 3.3 Prácticas en grupo o individuales Las actividades que tienen como fin el adiestramiento con las herramientas (Linux, compilador de C++, Nachos) se pueden desarrollar de forma individual. Sin embargo, los trabajos obligatorios se realizarán en grupos de dos o tres personas, ya que uno de los objetivos de las actividades prácticas es la de fomentar el trabajo en equipo. Los grupos se configurarán a voluntad de los propios estudiantes, siempre que pertenezcan al mismo turno de prácticas. Piénsenlo bien antes de elegir a su compañero, puesto que no se permiten separaciones ni refusiones de grupos una vez que están formados. 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 en cursos anteriores. Cada uno de estos trabajos se considerará aprobado con idéntica nota a la que se obtuvo en el pasado curso. 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 teóricos En este curso se realizarán tres exámenes parciales correspondientes a las partes A, B y C que aparecen en el apartado del temario, cada una de ellas liberatorias, y que habrá que superar por separado. Los parciales se realizarán de la siguiente forma: a) Para la convocatoria extraordinaria especial (diciembre 2011): a. La Parte-A a finales del mes de octubre b. La Parte-B durante el mes de noviembre c. La Parte-C y la recuperación de las partes A y B no superadas (mínimo de 5 sobre 10), en la fecha de la convocatoria extraordinaria especial (diciembre) del examen. b) Para la convocatoria ordinaria (junio 2012): a. La Parte-A a principios del mes de Marzo b. La Parte-B a finales del mes de Abril c. La Parte-C y la recuperación de las partes A y B no superadas (mínimo de 5 sobre 10), en la fecha de la convocatoria ordinaria (junio 2012) del examen. c) Para la convocatoria extraordinaria (julio 2012): a. Un único examen dividido en tres partes, correspondientes a las partes A, B y C del temario. Los estudiantes sólo deberán realizar el examen de la parte aún no superada, y aprobarla con un mínimo de 5. 4.2 Trabajos prácticos Los trabajos prácticos obligatorios serán evaluados mediante la revisión de las memorias y defensas. Cada trabajo obligatorio tiene el mismo peso en la nota final. Los integrantes de un grupo de prácticas habrán de completar con éxito todos los trabajos obligatorios en las fechas que los profesores determinen. La asignatura prevé la realización de trabajos optativos para subir nota. 4.3 Calificación final La calificación final se calculará según la siguiente tabla: Ponderación Exámenes teóricos 70% Trabajos prácticos obligatorios 30% Trabajos prácticos optativos 10% 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. 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 teoría. La nota de teoría se obtiene obteniendo la media aritmética de las notas de los exámenes de teoría, una vez que se hayan aprobado cada una de las partes. 4.4 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. 5. Instalaciones Las tutorías tanto para las clases teóricas como las prácticas se realizarán en el despacho Seminario-5, primera planta del Módulo III, previa cita con el alumno. Las tutorías serán del tipo concertado, preferiblemente por email. Para realizar los trabajos prácticos, se dispone del Laboratorio de Sistemas Operativos (2-2). El laboratorio cuenta con un servidor de altas prestaciones y una red local de una veintena de pecés que tienen instalado el sistema Linux. Aparte de estos puestos de trabajo, los estudiantes podrán trabajar de forma remota mediante Internet a cualquier hora del día. 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. Cada estudiante dispondrá de una cuenta de usuario exclusiva del Laboratorio de Sistemas Operativos. Si alguno no la tiene activa, por favor ponerse en contacto con el profesor Fran Santana. Los laborales encargados de la administración del laboratorio son Gonzalo López (glopez@dis.ulpgc.es) y Francisco Rivera (frivera@dis.ulpgc.es). 6. Profesorado Francisco J. Santana Pérez Profesor de teoría y de prácticas en II – ITIS e ITIG Despacho: seminario 5 tlf 928 45 87 45 Correo: fsantana@dis.ulpgc.es Los horarios de tutoría y atención al alumnado estará publicado en el despacho del profesor, en Moodle y en la página web de la asignatura. Es indispensable acordar previamente una cita con el profesor, preferiblemente por medio de email. 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 10. 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 11 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: • • • • 7.4 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 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 están accesibles en la dirección web http://sopa.dis.ulpgc.es/so/ Además los estudiantes matriculados en Sistemas Operativos disponen de un sistema Moodle desde donde se puede acceder también a toda la información publicada en la web: proyecto docente, esta misma guía, otras guías teóricas y practicas, manuales complementarios… así como una serie de recursos propios de Moodle que emplearemos a lo largo del curso, por ejemplo, foros, tareas… Para acceder deberán ir a http://www.campusvirtual.ulpgc.es/, introducir en el menú de la izquierda su usuario (DNI) y contraseña (la misma que emplean para el correo institucional) y dentro del apartado “Apoyo a la enseñanza presencial” deberán encontrar una entrada para la asignatura de Sistemas Operativos. 7.5 Correo electrónico Los estudiantes podrán utilizar el correo electrónico para consultar dudas con sus profesores. Además, los comunicados cotidianos les llegarán a los alumnos por esa vía, por ejemplo las convocatorias de clases y las calificaciones de exámenes, que normalmente se publicarán en el Moodle de la asignatura. El correo electrónico y el Moodle serán los medios de comunicación preferentes para los avisos de ese tipo. Esto quiere decir que bastantes comunicados sólo se harán por vía electrónica y no aparecerán impresos en tablón alguno. IMPORTANTE: los comunicados a los alumnos de la asignatura se enviarán a las direcciones de correo oficial de la ULPGC (las que tienen el dominio @estudiantes.ulpgc.es). Por ello, se recomienda a los alumnos que consulten habitualmente su cuenta de correo oficial. Asimismo, el alumno deberá actualizar su foto en su perfil del entorno Moodle. 7.6 Dónde encontrar los documentos La mayoría de los documentos escritos relacionados con la asignatura (apuntes, guías, etc.) estarán disponibles en el servidor WWW y Moodle de la asignatura. 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. FUNDAMENTOS DE SISTEMAS OPERATIVOS: TEORÍA Y EJERCICIOS RESUELTOS S. Candela, R. García, A. Quesada, F. Santana, J.M. SantosThomson Paraninfo, 2007 Este libro es fruto de la experiencia acumulada por los profesores del Departamento de Informática y Sistemas de la ULPGC, que durante más de dos décadas han impartido las asignaturas de Sistemas Operativos en las ingenierías en Informática, desde que en los años ochenta se constituyera la Escuela Universitaria de Informática y la hoy extinta titulación de Diplomado en Informática. Además del contenido teórico, esta obra contiene una selección de preguntas y ejercicios, con sus respectivas soluciones, que abarcan todo el temario de la asignatura de Sistemas Operativos y que pueden ser utilizadas por los alumnos para afianzar sus conocimientos a través de la autoevaluación. SISTEMAS OPERATIVOS (QUINTA EDICIÓN) A. Silberschatz, P. Galvin Addison-Wesley, 1999 El llamado «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. Hay ediciones más recientes (sexta y séptima), pero su estructura está menos acoplada al temario que impartimos en este asignatura. 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++ Bjarne Stroustrup Addison Wesley, Edición especial Puede considerarse el manual de referencia del C++, escrito por el propio autor del lenguaje. Hay varias ediciones de este libro, cualquiera posterior al año 2000 puede servir. C: MANUAL DE REFERENCIA H. Schildt McGraw-Hill, 2001 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. 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 (QUINTA EDICIÓN) W. Stallings Prentice Hall, 2005 SISTEMAS OPERATIVOS: TEORÍA Y PROBLEMAS Joaquín Aranda Almansa... [et al.] Sanz y Torres, 2002 SISTEMAS OPERATIVOS. UNA VISIÓN APLICADA J. Carretero, P. De Miguel, F. García y F. Pérez McGraw-Hill, 2001 9.2 Programación concurrente PROGRAMACIÓN CONCURRENTE José Tomás Palma Méndez, María del Carmen Garrido Carrera, Fernando Sánchez Figueroa, Alexis Quesada Arencibia Thomson, 2003 Un texto básico para entender los aspectos de la concurrencia que se explican en la asignatura. 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. 10. Temario detallado Este es el temario teórico de la asignatura, con un mayor nivel de detalle en sus contenidos. 1. Conceptos sobre sistemas operativos 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. 2. Estructura del computador 2.1. Sistema de interrupciones. Interrupciones vectorizadas. Acceso directo a memoria (DMA). Excepciones e interrupciones software. 2.2. Jerarquía de memorias. Principio de caché. Consistencia y coherencia. 2.3. Necesidad de protección en el sistema operativo. Instrucciones privilegiadas. Modo dual de operación. Implementación en hardware. 3. Estructura del sistema operativo 3.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. 3.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é. 3.3. Modelos arquitectónicos: sistemas monolíticos, sistemas por capas, máquinas virtuales, modelo cliente/servidor. Diseño e implementación de sistemas operativos. 4. 4.1. Procesos Concepto de proceso. Estados de actividad de un proceso. 4.2. Concurrencia. Ventajas de los sistemas concurrentes. Cooperación y competencia entre procesos: el problema de la inanición. 4.3. Planificación de procesos. Estructuras de gestión: bloque de control de proeso, colas de preparados y de espera. Niveles de planificación: despachador, planificador de medio plazo y de largo plazo. 4.4. Llamadas al sistema para gestionar procesos. Comunicación entre procesos. Procesos e hilos. 5. Planificación de procesos 5.1. Modelo de comportamiento de un proceso. Criterios de evaluación de las políticas de planificación. 5.2. 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. 5.3. Planificación avanzada: tiempo real, multiprocesadores. 5.4. Evaluación de algoritmos: cargas de trabajo, modelos estadísticos. 6. Concurrencia 6.1. Sincronización y comunicación entre procesos. Concepto y necesidad de sincronización. Indeterminismo. Inanición e interbloqueo. El problema del búfer finito. 6.2. El problema de la sección crítica. Condiciones de seguridad y progreso (liveness). Soluciones algorítmicas y de hardware. Instrucciones atómicas: testand-set; SWAP. 6.3. Herramientas de programación concurrente: semáforos, regiones críticas, monitores. 6.4. 7. Problemas clásicos de sincronización entre procesos. Memoria 7.1. Objetivos de la gestión de la memoria. 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. Estructura de un fichero ejecutable. 7.2. Direcciones lógicas y direcciones físicas. Traducción de direcciones. Reubicación estática y dinámica. Hardware de traducción de direcciones: unidad de manejo de memoria (MMU). 7.3. Gestión de memoria contigua. Intercambio (swapping). Políticas de gestión de huecos libres. Particiones fijas (MFT) y variables (MVT). El problema de la fragmentación. Compactación. Carga dinámica y DLL. 7.4. Paginación: Arquitectura de un sistema paginado. Circuitería de traducción y estructuras de control. Utilización de TLB. Protección de páginas. Doble nivel de paginación. 7.5. Segmentación: Arquitectura de un sistema segmentado. Circuitería de traducción y estructuras de control. Utilización de TLB. Protección de segmentos. Reubicación y compartición de áreas de memoria. Combinación de la segmentación con la paginación. 8. Memoria virtual 8.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. 8.2. Paginación bajo demanda. Fallos de página. Políticas de reemplazo: óptima, FIFO, LRU, LFU, NRU, segunda oportunidad. Análisis de la eficiencia e implementabilidad de las políticas. 8.3. Políticas de asignación de marcos. Hiperpaginación. El modelo del área activa (working set). Políticas basadas en la frecuencia de fallos de página. 9. Archivos 9.1. Concepto de fichero. El fichero como tipo abstracto de datos: operaciones típicas. Tipos de ficheros. Bloques lógicos y físicos. 9.2. Métodos de acceso directo y secuencial. Protocolos de uso de ficheros. Semánticas de consistencia. 9.3. Directorios. Nombres de archivos. Rutas. Organizaciones de directorios: dos niveles, en árbol, en grafo. Organizaciones no arbóreas: enlaces, alias. 9.4. Protección de archivos. Conceptos sobre protección: usuarios, dominios, privilegios, etc. Listas de control de acceso. Tipos de operaciones. 9.5. Organización del disco. Bloques lógicos. Estructuras para directorios y ficheros. Nodos-i. Soporte de múltiples unidades lógicas y físicas. 9.6. Gestión del espacio en disco. Almacenamientos contiguo, encadenado e indexado. FAT. Gestión del espacio libre: mapas de bits, listas, grupos.