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/