Gu a docente de la asignatura - curso 2011/12

Anuncio
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 ([email protected]) y Francisco Rivera ([email protected]).
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: [email protected]
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.
Descargar