Sistemas Operativos (2 aņo - 2do cuatrimestre)

Carga horaria: 6 hs. semanales

Correlatividades

  - Arquitectura de las computadoras
  - Algoritmos y estructuras de datos I

Introducción:

  - Básicamente, un sistema operativo, es el conjunto de programas y librerías que controloan los recursos de una computadora y proporcionan la base sobre la cual pueden ejecutarse otros programas, de una manera más sencilla que si se hiciera directamente sobre el software que controla al hardware.
  - A pesar de la amplia gama de sistemas operativos existentes en la actualidad, puede identificarse un conjunto de conceptos y algoritmos comunes a todos ellos que conforma la base teórica imprescindible para su entendimiento. Esta materia, pretende que el alumno consiga dominar dichos conceptos que constituyen esta base común.

Objetivos:

Los objetivos de la materia son que el alumno:
  - comprenda los fundamentos básicos de los sistemas operativos, haciendo especial énfasis en la gestión de procesos, comunicación y sincronización de procesos, programación concurrente y sus problemas, administración de memoria y sistemas de archivos.
  - conozca las principales decisiones de diseņo que particiapan en la implementación de los servicios que ofrece un sistema operativo - aprenda los conceptos básicos del sistema operativo UNIX desde la perspectiva del programador de aplicaciones, con especial hincapié en el empleo de mecanismos de gestión y sincronización de procesos.

Contenidos:

1) Introducción

  Base común para el lenguaje C
  Práctica 1
  Historia de los sistemas operativos
  Conceptos generales
  Componentes y servicios
  Diseņo de sistemas operativos
  Llamadas al sistema
  Práctica 2

2) Procesos

  Concepo de proceso
  Planificación de procesos (scheduling)
  Operaciones con procesos
  Procesos en UNIX
  Primitivas de administración de procesos en UNIX

3) Comunicación y sincronización de procesos

  IPC en UNIX: Pipes, Fifos, Shared Memory, Mapped Memory
  El problema de la sección crítica
  Hardware de sincronización
  Semáforos
  Monitores
  Práctica 3

4) Bloqueos mutuos (deadlocks)

  Conceptos generales y condiciones necesarias para su existencia
  Problemas y algoritmos clásicos
  Detección y recuperación
  Prevención
  Algoritmos relacionados

5) Programación concurrente

  Definición de thread
  Diferencias y similitudes respecto a procesos
  El modelo pthreads
  Práctica 4

6) Memoria

  Conceptos básicos
  Paginación
  Segmentación
  Memoria virtual
  Swapping
  Algoritmos de reemplazo de páginas
  Hiperpaginación

7) Sistema de archivos

  Organización de los sistemas de archivos
  Operaciones sobre archivos
  Métodos de acceso
  Organización de estructuras de directorios
  Protección de archivos
  Implementaciones

Bibliografía

  - Tanenbaum, Andrew - Sistemas Operativos Modernos (2da Ed.) - Prentice Hall 2003
  - Silberschatz & Galvin - Sistemas Operativos (5ta Ed.) - Pearson 1999
  - Nichols, Buttlar & Proulx Farrell - Pthreads Programming - O'Reilly
  - Mitchell, Oldham & - Advanced Linux Programming - New Riders Publishing - http://www.advancedlinuxprogramming.com/