Universidad de Costa Rica - ECCI

CI0122 Sistemas Operativos

Curso teórico

Curso semestral, 3 horas, 4 créditos

Carta al estudiante

Profesor Oficina Correo Casillero
Francisco Arroyo Mora 240 Francisco 1


1. Objetivo general
  • Brindar al estudiante los conceptos básicos en el tema de sistemas operativos
2. Objetivos específicos
  • Estudiar los conceptos básicos de la teoría de sistemas operativos, incluyendo la estructura de los sistemas computacionales
  • Cubrir algunos de los tópicos específicos de la teoría de sistemas operativos, como la administración de procesos y del almacenamiento de información
  • Aprender a resolver problemas utilizando concurrencia, aprender conceptos de programación concurrente y sincronización, realizar programas que utilicen concurrencia empleando distintas metodologías
  • Brindar al estudiante los conocimientos básicos del sistema operativo UNIX, de manera que puede desenvolverse como programador en este ambiente, desarrollando programas de bajo nivel en C, que le permitan aplicar los conceptos adquiridos durante el curso
  • Conocer las características, en los tópicos que conciernen al curso, de varios sistemas operativos populares como Linux, Android, IOS, BSD, Windows, Solaris, Macintosh System
  • Lograr que el estudiante reconozca la importancia que tiene la lectura del revistas especializadas, como medio para complementar el material cubierto en clase
  • Capacitar al estudiante para que pueda escribir porciones de código de un sistema operativo real, para que de esta forma pueda asimilar los conceptos teóricos estudiados

3. Metodología
  • El curso se basa en clases cuyos temas son extraídos principalmente de los libros de Silberchatz & Galvin y Tanenbaum
  • Cada tema es complementado con varios artículos de revistas especializadas que el estudiante deberá leer antes de clase
  • La cobertura magistral del texto en clase será parcial, por lo que el estudiante tendrá que leer cada capítulo detenidamente
  • Los artículos de revistas tendrán un momento para su discusión en clase
  • Un aspecto fundamental para el desenvolvimiento del curso será la elaboración de tareas y proyectos programados
  • El material estudiado en clase y las lecturas obligatorias estarán sujetas a evaluación periódica mediante exámenes cortos
  • Se estudiarán como ejemplo los sistemas operativos Linux, Android, BSD, Windows, Solaris, MINIX, MS-DOS, etc., también algunas arquitecturas de las máquinas que dan soporte a estos sistemas operativos

4. Contenido
  • Generalidades

    • Introducción

      • Concepto de Sistema Operativo
      • Descripción del curso
      • El Sistema Operativo UNIX
      • El lenguaje de programación C y C++
      • Entrega de la tarea programada (C, UNIX, vi)
      • El sistema operativo educacional NACHOS
      • Historia de los sistemas computacionales
    • Referencia: Libro de texto, capítulo 1

    • Estructura de los sistemas operativos

      • Servicios del sistema operativo
      • Interfaz de usuario del sistema operativo
      • Llamadas al sistema operativo (System Calls)
      • Tipos de llamadas al sistema
      • Programas del sistema
      • Diseño e implantación del sistema operativo
      • Estructura del sistema operativo
      • Máquinas virtuales
      • Generación del sistema operativo
      • Inicio de sistema operativo
    • Referencia: Libro de texto, capítulo 2
  • Administración de Procesos

    • Procesos

      • Concepto de proceso
      • Administración de procesos
      • Operaciones sobre procesos
      • Comunicación entre procesos (IPC)
      • Comunicación en sistemas Cliente/Servidor
      • Casos de estudio: IPC de UNIX (Mensajes y memoria compartida)
    • Referencia: Libro de texto, capítulo 3

    • Hilos

      • Conceptos
      • Modelos multi-hilos
      • Bibliotecas de hilos
      • Consideraciones con hilos
      • Ejemplos en sistemas operativos
    • Referencia: Libro de texto, capítulo 4

    • Administración de la CPU

      • Conceptos
      • Criterios de administración
      • Algoritmos de despacho
      • Administración bajo múltiples procesadores
      • Algoritmos de despacho para hilos
      • Evaluación de algoritmos
    • Referencia: Libro de texto, capítulo 5

    • Sincronización de procesos

      • Conocimientos previos
      • El problema de la sección crítica
      • Hardware de sincronización
      • Semáforos
      • Problemas clásicos de sincronización
      • Discusión de artículo sobre aspectos internos de Nachos
      • Discusión de proyecto programado #1
      • Regiones críticas
      • Monitores
      • Transacciones atómicas
    • Referencia: Libro de texto, capítulo 6

    • Deadlocks

      • Modelos del sistema
      • Caracterización del deadlock
      • Métodos para manejar el deadlock
      • Prevensión del deadlock
      • Evasión del deadlock
      • Detección del deadlock
      • Recuperación del deadlock
      • Enfoque combinado para el manejo de deadlocks
    • Referencia: Libro de texto, capítulo 7
  • Administración del memoria

    • Administración de memoria principal

      • Conocimientos previos
      • Espacios de direcciones
      • Swapping
      • Asignación contigua
      • Paginación
      • Estructura de la tabla de páginas
      • Segmentación
      • Enfoques combinados
    • Referencia: Libro de texto, capítulo 8

    • Memoria Virtual

      • Conocimientos previos
      • Paginación por demanda y su desempeño
      • Copy-on-write (COW)
      • Reemplazo de páginas
      • Algoritmos para el reemplazo de páginas
      • Asignación de frames
      • Thrashing
      • Memory mapped files
      • Asignación de memoria del kernel
      • Otras consideraciones
      • Segmentación por demanda
    • Referencia: Libro de texto, capítulo 9
  • Administración del almacenamiento

    • Interfaz con el sistema de archivos

      • Concepto de archivo
      • Métodos de acceso
      • Estructuras de directorios
      • Montaje de sistemas de archivos
      • Compartir sistemas de archivos (NFS)
      • Protección
    • Referencia: Libro de texto, capítulo 10

    • Implantación del sistema de archivos

      • Estructura del sistema de archivos
      • Implantación del sistema de archivos
      • Implantación de directorios
      • Métodos de asignación del espacio
      • Administración del espacio libre
      • Eficiencia y desempeño
      • Recuperación
      • Sistemas de archivos basados en bitacoras
      • NFS
    • Referencia: Libro de texto, capítulo 11

    • Estructuras de almacenamiento en masa

      • Conceptos
      • Estructuras de discos
      • Agregación de discos
      • Atención de solicitudes de discos
      • Administración de discos
      • Administración del espacio de intercambio (swap)
      • Estructuras RAID
      • Implantación de almacenamiento estable
      • Estructuras de almacenamiento terciario
    • Referencia: Libro de texto, capítulo 12
    • Sistemas de entrada y salida

      • Sistemas de entrada y salida
      • Hardware para entrada y salida
      • Interfaz de entrada y salida para las aplicaciones
      • Subsistema de entrada y salida en el kernel
      • Transformación de solicitudes en operaciones de hardware
      • Desempeño
    • Referencia: Libro de texto, capítulo 13
  • Protección y seguridad

    • Protección

      • Metas para la protección
      • Dominios de protección
      • Matriz de accesos
      • Implantación de la matriz de accesos
      • Revocación de los derechos de acceso
      • Sistemas basados en capacidades
      • Protección basada en lenguaje
    • Referencia: Libro de texto, capítulo 14

    • Seguridad

      • El problema de seguridad
      • Trucos en programas
      • Trucos en el sistema y la red
      • Criptografia como herramienta de seguridad
      • Autenticación de usuarios
      • Implantación de defensas de seguridad
      • Firewall para proteger sistemas y redes
      • Clasificaciones de seguridad de computadoras
      • Ejemplo de un modelo de seguridad: Windows XP
    • Referencia: Libro de texto, capítulo 15

Evaluación
Dos exámenes parciales (25, 25) 50%
Tareas cortas y quices 25%
Tareas de investigación 25%

Notas
  • Los quices incluirán el material cubierto en clase, así como diversas lecturas
  • Los quices se realizan sin aviso durante la primera media hora de lecciones
  • Las tareas de investigación consistirán en trabajos escritos sobre el material para estudio independiente (artículos de revistas y/o secciones de libros)
  • Se repondrán exámenes a estudiantes que presenten la debida excusa médica dentro de los siguientes cinco (5) días hábiles luego de realizada la prueba. La reposición podría postergarse para el final del semestre.
  • Se deben realizar todas las tareas y proyectos programados para aprobar el curso
  • Tareas cortas y de investigación se realizan INDIVIDUALMENTE
Proyectos y Tareas Programadas
  1. Las fechas para entrega son impostergables. Ver calendario adjunto
  2. Las tareas programadas se realizan de manera individual
  3. Cada asignación programada consta de dos etapas: en la primera deberá desarrollarse un documento con el diseño de la solución que será revisado con el profesor; la segunda parte corresponde a la implantación de ese diseño
  4. Cada diseño cuenta como una tarea corta
  5. Cada día adicional tomado para la presentación de la tarea contará como un punto de 10 menos en la nota final de la asignación. Por ejemplo, si la tarea se entrega dos días tarde y se obtiene un 86 en la revisión, la nota final de la tarea sería 66
  6. La documentación de las asignaciones programadas debe enfocarse en una adecuada descripción interna del código, problemas encontrados, casos de prueba, manual de usuario y conclusiones
  7. Las entregas de código fuente se hace por medio del repositorio de control de versiones

Bibliografía
  • Libro de texto
    • Silberchatz, Abraham, Galvin, Peter & Gagne, Greg, Operating Systems Concepts, Décima edición, Addison Wesley Publishing Co., Mass., (2018)
    • Anderson, Thomas & Dahlin Michael, Operatings Systems, Principles and Practice, segunda edición, Recursive Books Ltd., (2014)
  • Material Complementario
    • Bach, J. Maurice. The Design of the UNIX Operating System, Prentice Hall, Englewood Cliff, 1986. ISBN: 0-13-201799-7
    • Coffman, E. G. y Denning P.J. Operating System Theory, Prentice Hall, Englewood Cliff, 1973.
    • Curry, David A., Using C on the UNIX System, O'Reilly and Assoc. Inc., California, 1991.
    • Duncan, Ray, Advanced MS-DOS programming, Microsoft Press, Washington, Segunda Edición, 1988.
    • Frish, Aeleen. Essential System Administration, O'Reilly & Associates Inc., California, 1993. ISBN: 0-937175-80-3
    • Kernighan, Brian y Ritchie, Dennis. El Lenguaje de Programa-ción C, Prentice Hall, Englewood Cliffs, 1978. ISBN: 968-880-024-4
    • Kernighan, Brian y Pike, R.. El Entorno de Programación UNIX, Prentice Hall, Englewood Cliffs, 1987.
    • Maekawa, M., Oldehoeft, A. y Oldehoeft, R. Operating Systems: Advanced Concepts, Benjamin/Cummings Publishing, California, 1987.
    • Peterson, James, Silberchatz, Abraham y Galvin Perter. Operating System Concepts, Tercera Edición, Addison-Wesley Publishing Co., Mass., 1991.
    • Stallings, William. Computer Organization and Architecture, Tercera Edición, MacMillan Publishing Co., New York, 1993. ISBN: 0-02-415495-4
    • Tanenbaum, Andrew. Sistemas Operativos Modernos, Prentice Hall, México, 1994. ISBN: 968-880-323-5