Pre-requisitos
Cursos
Excelente nivel de programación en Java
Introducción
Este es un curso es sobre sistemas operativos. A grandes rasgos, el sistema operativo provee una interfaz familiar, conveniente y eficiente entre los programas de usuario y el hardware de la computadora en el cuál se ejecutan. Entre otras cosas, el sistema operativo es responsable de permitir y controlar los recursos compartidos (discos, redes, procesadores, etc.) ya que provee una serie de servicios requeridos por varios programas, tales como el servicio de archivos, iniciar o terminar procesos, acceso a la impresora, etc., por supuesto, debe proteger a un programa de otro.
Iniciamos el curso con un breve recorrido histórico sobre la evolución de los sistemas operativos en los últimos 50 años, para después explorar los componentes más usuales de un sistema operativo, componentes que pueden encontrarse en la mayoría de los sistemas operativos modernos. Al igual que en muchas otras áreas de las ciencias de la computación, haremos especial hincapié en el intercambio entre eficiencia y funcionalidad y adentraremos en los aspectos fundamentales de un sistema operativo: manejo de procesos, manejo de memoria, sistema de archivos y protección y seguridad.
Tareas y proyectos
El curso de sistemas operativos cubre una gran cantidad de material y, por tanto, las fechas de inicio y entrega de cada tarea y proyecto no son negociables. NO hay exámenes y la calificación se forma así:
Tareas 50%
Proyectos 50%
Inicio | Entrega | Descripción |
12-febrero | 26-febrero | Introducción y estructuras del sistema operativo (1 y 2) |
26-febrero | 12-marzo | Procesos e hilos de control (3 y 4) |
12-marzo | 26-marzo | CPU scheduling y sincronización de procesos (5 y 6) |
19-marzo | 2-abril | Proyecto: Creando una interfaz de shell exposición de proyectos: 11-abril |
26-marzo | 9-abril | Abrazos mortales (7) |
2-abril | 16-abril | Proyecto: Multiplicación de matrices exposición de proyectos: 25-abril |
9-abril | 23-abril | Memoria principal y virtual (8 y 9) |
16-abril | 30-abril | Proyecto: Algoritmo del banquero exposición de proyectos: 9-mayo |
23-abril | 7-mayo | Interfaz e implementación del sistema de archivos (10 y 11) |
7-mayo | 21-mayo | Estructura de almacenamiento masivo y sistemas E/S (12 y 13) |
14-mayo | 28-mayo | Proyecto: Diseñando un sistema de archivos exposición de proyectos: 6-junio |
21-mayo | 4-junio | Protección y seguridad (14 y 15) |
Las tareas son individuales y los proyectos pueden ser elaborados en parejas.
50% de los proyectos, seleccionados al azar el día de la presentación, serán presentados por ambos miembros del equipo y deberán responder a las preguntas dirigidas a un miembro particular del equipo. Si uno de los miembros no demuestra total dominio de su proyecto durante la presentación/defensa, restaremos dos puntos de su calificación en el proyecto.
Temas avanzados y proyecto opcional
Si el grupo está interesado, durante las semanas de exámenes finales, exploramos a fondo temas sobre sistemas distribuidos y sistemas de propósito general.
A petición de un alumno, se asignará un proyecto opcional relacionado con sistemas distribuidos. La fecha de inicio de este proyecto opcional será el 11 de junio y la fecha de entrega el 22 de junio. La calificación obtenida en este proyecto sustituirá la calificación más baja del alumno.
Mayores informes: http://so.fciencias.unam.mx