UP | HOME

Sistemas Operativos

Índice

1 Calendario general

Esta materia se imparte los días miércoles y viernes de 18:15 a 20:30 en el salón B-405.

Según el calendario del plan semestral 2014, la primer sesión es el miércoles 29 de enero, y la última el viernes 23 de agosto, lo cual nos daría 16 semanas — 32 clases, esto es, las 72 horas que contempla el temario de la materia.

Afortunadamente (¿o no?), este semestre no nos afectan días feriados. Ahora bien, de las 32 clases programadas, dedicaremos por lo menos tres a exámenes parciales, y dos o tres a la exposición de temas por parte de invitados, lo cual nos deja con 25 a 27 clases regulares — Entre 55 y 60 horas efectivas de clase.

2 Punto de partida

El objetivo formal del curso, según el material de la Facultad de Ingeniería, es:

El alumno obtendrá las bases para administrar un sistema operativo, así como diseñar y desarrollar software operativo.

A este objetivo genérico y formal, yo agrego lo que espero que logremos a lo largo del curso:

  • Comprender el rol del sistema operativo
  • Conociendo el funcionamiento general de los sistemas operativos, poder sacar mejor provecho de la computadora
    • Al programar
    • Al administrarla
    • Al emplearla como usuario final
  • Ser un usuario más responsable
  • Conocer y saber aprovechar no sólo los sistemas, sino las metodologías y principales formas de interacción del software libre

Esta clase asume que tienen todo el conocimiento básico de los primeros cuatro semestres de la carrera de Ingeniería en Computación. Esto es, aunque la única seriación formal es con la materia Estructura y programación de computadoras, voy a dar por hecho familiaridad con los demás conocimientos, en particular con Computación para ingenieros, Programación avanzada y métodos numéricos, Algoritmos y estructuras de datos.

Asumo también que están familiarizados (o que se familiarizarán prontamente al iniciar el curso) con algún lenguaje de programación de alto nivel, y –al menos a nivel básico– con C — En ambos casos, no sólo para desarrollar ejercicios, sino para entender código ejemplo.

Resultará muy conveniente que tengan acceso a una computadora con sistema operativo Linux (GNU) u otro Unix libre. En caso de que no quieran hacer la instalación completa en la computadora real, les sugiero emplear una máquina virtual; buena parte de las computadoras disponibles hoy en día lo permitirán. A través del uso continuado de un sistema tipo Unix, estoy seguro que lo terminarán adoptando como entorno primario tarde o temprano.

En el curso manejaremos textos en inglés, tanto para la bibliografía como para estudios de caso. Es muy recomendado que tengan un nivel de comprensión que les permita la lectura de textos medianamente técnicos.

Llegado a este punto, dejaremos una primer tarea: Windows y MacOS son sistemas operativos tan válidos y tan útiles como cualquier Unix, e indudablemente los encontrarán con mayor frecuencia en su vida laboral. ¿Por qué entonces esta fijación con estudiar sistemas Unix, aparentemente arcáicos y complejos? Les pido que lean el texto Biculturalism, publicado en 2003 por Joel Spolsky en su blog Joel on Software. Discutiremos acerca de cómo se ajustan las distintas culturas que menciona Spolsky a diferentes tipos de usuario, y lo que esperamos que sea el interés y el punto de vista de un ingeniero en computación.

3 Criterios de evaluación

La calificación que obtendrán en el curso consiste de:

Examenes parciales60%
Tareas y ejercicios30%
Proyectos / exposiciones20%

Esto nos otorga un total posible del 110% — en caso de alcanzar porcentajes superior al 100%, la calificación se recortará al máximo definido.

3.1 Exámenes parciales

A lo largo del curso tendremos un mínimo de 3 exámenes parciales (aunque, en caso de juzgarlo necesario, puede haber más). Los exámenes parciales serán anunciados con por lo menos una semana de antelación. En caso de haber exámenes adicionales, pueden ser parciales anunciados o sorpresa.

Los exámenes deberán rendirse el día que son programados, y se presentarán siempre en el horario y salón asignado a la clase. Si algún alumno no puede presentarlo, podemos acordar un lugar y hora alterno para que lo presenten, si y sólo si lo notifican por lo menos con dos días de antelación. Un examen no presentado será promediado como cero.

Mi compromiso por docente es entregar los exámenes corregidos a la brevedad. Los exámenes parciales deben cumplir un rol formativo, por lo que los entregaré detallando cuáles son los errores.

3.2 Tareas

La entrega de las tareas es obligatoria. Las tareas (sean ejercicios, investigación, cuestionarios o de otra naturaleza) serán calificadas con hasta el 100% de calificación si son entregadas en el plazo especificado. Una tarea entregada con hasta una semana de demora será calificada sobre el 80%. Las tareas no entregadas una semana después de la fecha de cierre serán consideradas con calificación de 0.

Las tareas deben ser entregadas incluso si son de forma extemporánea: Para tener derecho a la exención o a presentar el examen final en primera vuelta es necesario haber entregado respectivamente el 100% y el 80% de tareas.

3.3 Asistencia

Todas las sesiones de clase se tomará asistencia. La asistencia de clase es obligatoria. Sólo con un 80% de asistencias tendrán derecho ya sea a la exención o a presentar el primer examen ordinario. Si llegan más de 15 minutos tarde, podran entrar al salón y tomar la clase, pero no contará como asistencia. Si salen a media clase por un tiempo prolongado, me reservo el derecho de anular su asistencia.

3.4 Presentación de exámenes finales

Al término del curso el alumno puede presentar el examen final en dos oportunidades. Las reglas para la presentación son:

Exención
Los alumnos que tengan una calificación final de 8.0 (sin aplicar redondeo), un mínimo del 80% de asistencias y el total de tareas entregadas (aunque sea de forma extemporánea) quedan exentos de presentar el examen final. Pueden presentarlo en primera o segunda vuelta si buscan aumentar su calificación final.
Primera vuelta
El examen en primera vuelta se promedia con el trabajo en clase (tareas, participaciones y proyectos, con un máximo teórico de 110% de calificación) como fue descrito al inicio de esta sección — El examen final reemplaza a la calificación obtenida en los exámenes parciales.

Tienen derecho a presentarlo únicamente los alumnos que tengan como mínimo el 80% de asistencias y el 80% de tareas entregadas (aunque sea de forma extemporánea).

Segunda vuelta
Todos los alumnos inscriptos al curso tienen derecho a presentar el examen en segunda vuelta.

La calificación obtenida en este examen vale el 100% de su calificación final.

Por último, me permito recalcar que todo fraude causa baja del curso. Si encuentro que copiaron, ya sea en tareas, exámenes o cualquier otro tipo de ejercicio, puedo darlos de baja del grupo sin derecho a examen ordinario. Como consecuencia lógica, en caso de dejar algún tema a investigar o desarrollar de tarea, nada de copiar y pegar. No se expongan gratuitamente a mis malas interpretaciones.

3.5 Proyectos

A lo largo del curso1 presentaré algunos temas que pueden ser de su interés, relacionados con el tema expuesto, invitándolos a desarrollar un breve trabajo de investigación o un proyecto de desarrollo de software. Los trabajos elaborados serán expuestos frente al grupo, estimando unos 15 minutos por exposición.

Si alguno de los alumnos tiene interés por desarrollar un tema en particular, puede plantearlo, y de ser aprobado, presentarlo.

Los proyectos pueden ser presentados de forma individual o en equipos de 2 o 3 personas. Serán considerados como parte del material expuesto en clase, y pueden formar parte de los exámenes.

4 Normas de convivencia

El curso requiere un ambiente de respeto mutuo como primera condición. No requiero que tengamos un trato formal — No tengo ningún problema con que nos tuteemos, pero sí con cualquier falta de respeto. Y no sólo entre docente y estudiante, sino entre cualquiera de los estudiantes. Me reservo el derecho de tomar medidas correctivas cuando sea que se presenten situaciones de falta de respeto.

Como parte de la exigencia de respeto mutuo (y al grupo, y a uno mismo), manejaremos un lenguaje correcto. Si tienen que entrar o salir a media clase, háganlo discretamente y sin estorbar. Si van a tener que salir antes de terminar la clase, elijan un lugar cerca de la puerta.

Es deseable que no comamos en clase. Sin embargo, reconozco que el horario que nos tocó juega en contra de ello. Algunos de ustedes pueden tener clases corridas en este horario. Se permite que coman en clase siempre y cuando lo hagan sin molestar a terceros, ya sea con ruido (no bolsas de papitas) o con olores (un sandwich frío, no una torta recién frita). Como condición fundamental, no deben dejar basura. Si el salón queda sucio varias veces, puedo cancelar esta concesión.

Los teléfonos celulares deben estar apagados en el transcurso de la clase. No en modo vibrador — Apagados. Aunque tengan asuntos muy importantes o urgentes, la atención en el transcurso de la clase se pierde muy fácilmente con las distracciones del teléfono. Y esto vale tanto para uno como para los compañeros (y hasta para el docente). En caso de haber una situación excepcional que requiera que estén pendientes a algún mensaje, me lo deberán comunicar al inicio de la clase.

5 Estructura temática y notas de clase

El programa del curso está basado fuertemente en el planteado oficialmente por la Facultad de Ingeniería, con los cambios que se detallan a continuación.

Tanto las presentaciones empleadas para la exposición de conceptos en clase como los apuntes exponiendo estos mismos temas a mayor profundidad estarán disponibles en http://sistop.gwolf.org/

  1. Introducción a los sistemas operativos: El alumno describirá las funciones, características y estructura de los sistemas operativos
    • Funciones y objetivos de los sistemas operativos
    • Evolución de los sistemas operativos
    • Estructura de los sistemas operativos
  2. *Relación con el hardware: Estructuras y funciones básicas*2: El alumno comprenderá la organización básica de un sistema de cómputo, cómo es comprendido por el procesador, y cómo éste tiene acceso a los recursos que gestionará por medio del sistema operativo.
    • Jerarquía de almacenamiento; registros, almacenamiento secundario
    • Interconexión: Canales y puentes; acceso directo a memoria; interrupciones, excepciones,
    • Llamadas al sistema, APIs
    • Multiprocesamiento
    • Virtualización
  3. Administración de procesos: El alumno identificará los tipos de procesos y sus estados. Describirá las diferentes técnicas de comunicación y sincronización de procesos concurrentes.
    • Procesos. Concepto y estados de un proceso
    • Hilos y multihilos
    • Concurrencia
      • Exclusión mutua y sincronización
      • Bloqueos mutuos
  4. Administración de memoria: El alumno explicará las diferentes técnicas de asignación de memoria contigua y no contigua.
    • Funciones y operaciones del administrador de memoria
    • Asignación de memoria contigua
      • Partición de la memoria
      • Paginación
      • Segmentación
    • Memoria virtual
      • Concepto
      • Paginación
      • Segmentación
      • Paginación y segmentación combinadas
      • Reemplazo de páginas
      • Asignación de marcos e hiperpaginación
  5. Planificación de procesos: El alumno explicará las diferentes técnicas de asignación del procesador a los procesos.
    • Tipos de planificación
    • Algoritmos de planificación
    • Planificación de multiprocesadores y en tiempo real
    • Planificación de hilos
  6. Sistemas de archivos: El alumno describirá las diferentes formas de organización y acceso a archivos, basándose en el modelo de sistema de archivos.
    • Concepto y tipos de archivos
    • Organización y acceso a archivos
    • Estructura de los directorios
    • Estructura de los sistemas de archivos
    • Métodos de asignación
    • Administración del espacio libre

Además de los temas anteriores, el temario de la Facultad marca los siguientes temas como unidades independientes:

  1. Sistemas de entrada/salida: El alumno explicará las diversas funciones de entrada/salida en la administración y control de dispositivos periféricos. Además analizará, con un enfoque práctico, las diferentes políticas y técnicas de almacenamiento de archivos en disco.
  2. Sistemas distribuídos: El alumno explicará cómo se administran los procesos y archivos que se encuentran en un sistema distribuido.
  3. Seguridad y medidas de desempeño: El alumno explicará cómo asegurar el adecuado funcionamiento del sistema operativo.

Estos temas serán abordados de forma transversal a lo largo del curso — Esto significa, no son temas que puedan ser tratados de forma independiente, sino que tienen que presentarse desde sus distintos ángulos, conforme implican a los demás subsistemas que estudiaremos.

6 Bibliografía

6.1 Del programa de la Facultad

El curso fue diseñado siguiendo principalmente los siguientes textos:

  • SILBERSCHATZ, GALVIN, GAGNE: Sistemas Operativos 6a. edición (México, Limusa - Wiley, 2002)
  • TANENBAUM, Andrew y WOODHULL, Albert: Sistemas Operativos. Diseño e implementación 2a. edición (México, Prentice Hall, 1999)

Los siguientes forman también parte de la bibliografía sugerida por parte de la Facultad, y pueden también emplearse como libros de texto

  • CARRETO DE MIGUEL, GARCÍA PÉREZ: Sistemas Operativos. Una visión aplicada (España, Mc. Graw Hill/Interamericana de España, 2001)
  • DEITEL, H. M.: Introducción a los Sistemas Operativos 2a. edición (México Addison Wesley Iberoamericana, 2000)
  • FLYNN, Ida y McIver A.: Sistemas Operativos 3a. edición (México, Thomson Learning, 2001)
  • STALLINGS, William: Operating Systems 5th edition (USA, Prentice Hall, 2004)
  • MÁRQUEZ GARCÍA, Francisco Manuel: UNIX. Programación avanzada 3a. edición (México Alfa omega Grupo Editor, 2004)

6.2 Adicional

Aquí compartiré algunos textos de libre redistribución que pueden ser buen material de referencia para el curso.

Además de este material, hay textos que emplearemos para temas específicos, y se indicarán en la unidad correspondiente.

  • Luis La Red Martínez: Sistemas Operativos (2001): Texto completo y a profundidad, con varios temas desarrollados con un nivel apto para estudios de posgrado
  • Pablo Ruiz Múzquiz: Sistemas Operativos (2004): Texto más simple e introductorio, bien escrito, fácil de seguir.
  • An Operating Systems Vade Mecum (Raphael Finkel, 1988). Si bien este libro es ya algo más que muy viejo, especialmente dada la velocidad de este campo, tiene muy buenas descripciones de varios de los temas que abordaremos.
  • A short introduction to operating systems (Mark Burgess, 2001). Un libro tutorial que cubre buena parte del material de este curso, presentado sin entrar demasiado en detalles. Muy bueno para comprender algunos conceptos, aunque no profundiza en detalles. Está fuertemente centrado en la implementación de Unix BSD, incluye varios buenos ejemplos de código (C++) ilustrando diversas áreas.

    Varios de los conceptos que menciona muestran ya su edad, muchos detalles de un sistema Unix moderno sobrepasan ya los conceptos aquí descritos, pero presenta un buen fundamento.

    Incluyo a este libro por conveniencia al alumno; el autor distribuye este texto desde su sitio Web, tanto en formato PDF como en formato HTML.

6.3 Para subtemas específicos

  • Allen Downey: The little book of semaphores (2008) desarrolla a profundidad, con ejemplos y muchos más patrones de los que veremos en clase, el uso de semáforos para la sincronización entre hilos que tocaremos en la unidad Administración de procesos.

Pies de página:

1 Probablemente, al inicio de cada unidad

2 Esta unidad se presenta adicional al programa de la Facultad