Generalidades • Sistemas Operativos • 2018-1 Sistemas Operativos: Generalidades

Índice

1 Calendario general

Esta materia se imparte los días martes y jueves de 18:15 a 20:30 en el salón A301.

Según el calendario del semestre 2017-2, la primer sesión es el martes 8 de agosto, y la última el jueves 23 de noviembre. El 2 de noviembre es feriado, por lo que, tendremos 31 clases efectivas, esto es 67.5 horas de las 72 que contempla el temario de la materia.

Este semestre realizaré una evaluación del curso basada más en trabajos prácticos que en la resolución de exámenes. Iremos evaluando cómo nos resulta este esquema a lo largo del semestre.

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:

  • El alumno conocerá el desarrollo histórico de los sistemas operativos, lo que le llevará a comprender la razón de ser y el funcionamiento general de los diversos componentes de los sistemas operativos actuales.
  • Aplicando el conocimiento obtenido sobre el funcionamiento general de los sistemas operativos, el alumno podrá sacar mejor provecho de la computadora.
    • Al emplearla como usuario final
    • Al administrarla
    • Al programar
  • El alumno conocerá las principales herramientas que ofrecen los sistemas operativos libres para el monitoreo y administración.

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:

Proyectos / exámenes 60%
Tareas / prácticas 30%
Exposiciones 20%

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

Los invito a consultar las rúbricas o matrices de evaluación que explican los criterios específicos a calificar en proyectos de desarrollo y en exposiciones.

3.1 Proyectos / exámenes

Las unidades del curso se enfocan en los distintos aspectos primarios de la operación de un sistema operativo.

En el transcurso del semestre tendremos tres evaluaciones parciales. Planeo que estas se realicen la primera y tercera por medio de un proyecto, y la segunda con un examen.

3.1.1 Examen parcial

La fecha de celebración del examen parciales será anunciado con por lo menos una semana de antelación.

El examen deberá rendirse el día que sea programados, y se presentará 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.1.2 Proyectos

Los alumnos presentarán desarrollos propios y originales que integren parte de los contenidos de la unidad respectiva.

Los proyectos pueden ser desarrollados de forma individual o en equipos de dos integrantes. Sugiero que se familiaricen con las rúbricas que empleo para su calificación.

3.2 Tareas

La entrega de las tareas es obligatoria. Las tareas (sean ejercicios, investigación, cuestionarios, programación 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 sobre el 50%.

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.2.1 Práctica

Busco que las tareas sean trabajo creativo, no mecánico. Sin embargo, algunos conceptos se asientan mejor desarrollándolos como práctica guiada.

Para una práctica guiada, les proporcionaré una guía para su desarrollo; las prácticas son opcionales, y su calificación se promediará como adicional al apartado de tareas. Su valor en cuanto a calificación será pequeño, pero sensible.

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.5 (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 exámenes parciales y proyectos.

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 proyectos 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 Exposiciones

En el sitio Web de la materia encontrarán algunos temas, con la esperanza de que sean de su interés, relacionados con los temas expuestos, invitándolos a desarrollar un breve trabajo de investigación o un proyecto de desarrollo de software, aunque los invito a elegir otros temas relacionados que les resulten de interés. 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 que no esté planteado en la lista, puede platicarlo conmigo para revisar la pertinencia, buscar la fecha acorde para hacerlo, o hacer algunas anotaciones y 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. Esto no significa que requiero un trato formal — Me parece perfecto que nos tuteemos si se sienten cómodos.

Asumo y exijo un ambiente respetuoso. 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.

5 Estructura temática

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.

Las presentaciones empleadas para la exposición de conceptos en clase está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:1 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 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
  4. 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
  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 Fundamentos de Sistemas Operativos

El curso está estructurado siguiendo de cerca el libro en el que participé como autor y coordinador, Fundamentos de Sistemas Operativos. Este libro, a su vez, está diseñado para seguir el temario oficial de la materia en la Facultad de Ingeniería.

El libro está publicado por parte de la FI-UNAM, y puede ser descargado gratuitamente desde su página Web.

6.2 Del programa de la Facultad

Tanto el curso como el libro fueron diseñados 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.3 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.

  • 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.

6.4 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.
  • Mi amigo Enrique Sánchez "el Nahual" me ha brindado material inédito de su autoría para la explicación de temas relativos a seguridad en la administración de memoria, el texto The Tao of Buffer Overflows.

6.5 Mis coordenadas

Por último, en caso de requieran contactarme para cualquier duda, trabajo en el Instituto de Investigaciones Económicas de la UNAM. Pueden contactarme por correo electrónico a la dirección sistop@gwolf.org o por teléfono, al 5623-0154.

Nota al pie de página:

1
Esta unidad se presenta adicional al programa de la Facultad

Autor: Gunnar Wolf — IIEc-UNAM

Created: 2017-09-16 Sat 23:10

Validate