Ministerio de Cultura y Educación
Universidad Nacional de San Luis
Facultad de Ciencias Físico Matemáticas y Naturales
Departamento: Informatica
Área: Area II: Sistemas de Computacion
(Programa del año 2020)
I - Oferta Académica
Materia Carrera Plan Año Periodo
SISTEMAS OPERATIVOS ING. INFORM. 026/12- 08/15 2020 1° cuatrimestre
II - Equipo Docente
Docente Función Cargo Dedicación
FLORES, SONIA EDITH Prof. Responsable P.Adj Exc 40 Hs
MIRANDA, NATALIA CAROLINA Prof. Co-Responsable P.Adj Exc 40 Hs
PALACIO, GABRIELA DEL VALLE Responsable de Práctico A.1ra Semi 20 Hs
III - Características del Curso
Credito Horario Semanal Tipificación Duración
Teórico/Práctico Teóricas Prácticas de Aula Práct. de lab/ camp/ Resid/ PIP, etc. Total B - Teoria con prácticas de aula y laboratorio Desde Hasta Cantidad de Semanas Cantidad en Horas
Periodo
 Hs. 3 Hs. 2 Hs. 1 Hs. 6 Hs. 1º Cuatrimestre 09/03/2020 19/06/2020 15 90
IV - Fundamentación
Este curso se ubica en el 3º año de la Carrera Ingeniería en Informática, con el fin de dar formación básica al alumno desde el título menor, siendo fundamental la articulación con Arquitectura I. Los ejes temáticos de la materia: el Sistema Operativo, llevando la práctica a casos particulares como UNIX y LINUX.
V - Objetivos / Resultados de Aprendizaje
La asignatura Sistemas Operativos tiene por objeto de estudio a los Sistemas Operativos convencionales.

El objetivo principal de la asignatura es suministrar al alumno conocimientos sólidos referidos a los Sistemas Operativos como administradores de recursos y como máquina extendida de un sistema de computación.

Objetivos generales:
A) Estudio teórico de Sistemas Operativos a fin de capacitar al alumno en la comprensión de las funciones de un sistema operativo en un sistema de computación bajo distintos entornos y configuraciones.
B) Desarrollar en el alumno la capacidad de implementar distintas técnicas relativas al área, con los elementos al alcance del Departamento de Informática.

Objetivos específicos:
Como resultados derivados de los puntos A) y B) se espera desarrollar en el alumno, luego de adquirida cierta experiencia en el área, las siguientes capacidades:
-Adquirir criterios para el diseño e implementación de Sistemas Operativos.
- Modificar un Sistema Operativo acorde a las necesidades de su entorno.
- Mantener un Sistema Operativo según las especificaciones de hardware de un sistema de cómputo específico.
- Utilizar en otras áreas de aplicaciones los conocimientos adquiridos a fin de producir software de mejor calidad.
- Adquirir habilidades para la administración y utilización en general adecuado del Sistema Operativo LINUX.

Acorde con los objetivos y dentro de las restricciones del plan de estudios, el desarrollo de la materia profundizará en las áreas del administrador del procesador, del administrador de la memoria, administradores de la información y de los dispositivos.
No obstante se espera que la introducción a los mismos, dada durante el curso sea suficiente para encarar estos aspectos en situaciones futuras.
VI - Contenidos
* UNIDAD TEMÁTICA 1: Introducción
Visiones de un Sistema Operativo: Como máquina extendida y como Administrador de recursos.
Historia de los Sistemas Operativos, generaciones.
Estructuras de Sistemas Operativos: Monolíticos, en capas, de máquina virtual, de redes,
distribuidos, etc.

* UNIDAD TEMÁTICA 2: Administrador del Procesador
Procesos. Un modelo de operación. Multiplicidad de Procesos. Networking, multiprocesamiento,
multiprogramación. Tareas básicas, multiplexado del Procesador, context switching. Diagrama de
estados; Otras unidades computacionales;
El problema de la coordinación de procesos: Sincronización, concurrencia, comunicación entre procesos (IPC).
Semáforos, CR, CCR, monitores, pasajes de mensajes.
Scheduling de Procesos: Mecanismos y Políticas.
Deadlock; Condiciones necesarias. Prevención, Detección y Recuperación.
Hebras (leightweight processes): Introducción, definición, motivación. Estados de Threads: Ciclo de vida de las hebras. Operaciones. Modelos de Threading:Threads a nivel de Usuarios, Threads a nivel de Kernel y Combinación de Threads a nivel de Usuario y Kernel. Conceptos de Threads: Delivery de señal de Threads, terminación de threads. POSIX y PThreads. Threads en Linux y Threads en Windows XP.

* UNIDAD TEMÁTICA 3 : Administrador de la Memoria
Memoria Real. Organización y Administración: Asignación contigua y no contigua. Particionado
fijo y variable. Swapping. Memoria Virtual. Organización; almacenamiento múltiple. Paginado y Segmentado. Administración; estrategias de reemplazo de página. Working Sets. Faltas de páginas. Trashing.

* UNIDAD TEMÁTICA 4: Administrador de la Información
Archivos: Estructuras, tipos, accesos y operaciones. Directorios. El sistema de Archivos; funciones,
organización jerarquías. Control de acceso. Asignación de espacio. Seguridad y protección. Políticas de protección. Sistemas de archivos distribuidos.

* UNIDAD TEMÁTICA 5: Administración de los Dispositivos
Dispositivos de entrada/salida. Buffering. Acceso Directo a Memoria (DMA) y Buffering.
Control dirigido por programa. Interrupciones. Sistemas de Interrupciones. Canales: Protocolos para transmisión de datos. Software de entrada/salida y dispositivos.

* UNIDAD TEMÁTICA 6: Caso de estudio LINUX : File System
Generalidades: Objetivos. Interfases. Login. Shell. Directorios y archivos. Programas utilitarios. Conceptos fundamentales: procesos. System calls de Memoria. Systems calls de archivos y directorios. System calls de entrada/salida.

VII - Plan de Trabajos Prácticos
TRABAJOS PRÁCTICOS DE AULA

* Práctico 1: Conceptos Básicos. Revisión de conceptos referentes a la Unidad Temática 1.

* Práctico 2: Procesos. Revisión de conceptos introductorios referentes a la Unidad Temática 2.

* Práctico 3: Administrador del Procesador. Revisión de conceptos de administración de procesos incluidos en la Unidad Temática 2.

* Práctico 4:Threads. Revisión de conceptos incluidos en la Unidad Temática 2 referentes a los Threads y su administración.

* Práctico 5: Sincronización de Procesos. Revisión de conceptos incluidos en la Unidad Temática 2 referentes a la sincronización de procesos.

* Práctico 6: Bloqueo Mutuo. Revisión de conceptos incluidos en la Unidad Temática 2 referentes a los problemas de bloqueo de procesos y threads.

* Práctico 7:Administrador de la Memoria. Revisión de conceptos incluidos en la Unidad Temática 3.

* Práctico 8: Administrador de la Información. Revisión de conceptos incluidos en la Unidad Temática 4.

* Práctico 9: Administrador de los Dispositivos.Revisión de conceptos incluidos en la Unidad Temática 5.


TRABAJOS PRÁCTICOS DE MÁQUINA

* Práctico 1: Procesos. Aplicación de conceptos incluidos en la Unidad Temática 2. Introducción al uso de simuladores para el estudio de procesos.

* Práctico 2: Administrador del Procesador. Aplicación de conceptos incluidos en la Unidad Temática 2 referentes a la planificación de procesos. Utilización de simuladores de planificación de procesos para la visualización y cálculo de métricas según las diferentes políticas de planificación.

* Práctico 3: Procesos y Threads. Aplicación de conceptos incluidos en la Unidad Temática 2 referentes a threads. Utilización de comandos del Shell de linux para la administración de procesos y threads. Utilización de llamadas al sistema y librerías del lenguaje JAVA y C++ para el manejo de threads. Aplicación de herramientas de monitoreo de Linux para la administración de procesos threads.

* Práctico 4: Administración de la Memoria. Aplicación de conceptos incluidos en la Unidad Temática 3. Utilización de herramientas de monitoreo para la administración de memoria en Linux.

* Práctico 5: File System. Aplicación de conceptos incluidos en la Unidad Temática 4 referentes a la administración de la información. Administración de archivos en el sistema operativo Linux utilizando herramientas gráficas del sistema y comandos del Shell. Administración de archivos a través del uso de llamadas al sistema desde programas implementados en lenguajes de alto nivel como C++.




VIII - Regimen de Aprobación
RÉGIMEN DE REGULARIZACIóN

Para regularizar la materia los alumnos deberán cumplir con las siguientes condiciones:
* Aprobar los prácticos de aula.
Se entiende por práctico de aula a todo práctico que la cátedra fije para cada unidad, a realizar o entregar en el aula.
* Contar con una asistencia del
- 80% a las clases teóricas.
- 80% a las clases prácticas en aula y en máquina.

* Aprobar los prácticos de máquina.
Se entiende por práctico de máquina a todo práctico que involucre el uso de herramientas de software y de programación. Cada práctico se deberá entregar y aprobar en la fecha fijada por la cátedra o en una fecha de recuperación.

* Aprobar los exámenes parciales.
La cátedra establece dos parciales a realizarse durante su dictado. Los alumnos deberán aprobar tales
parciales para regularizar con notas mayor o igual a seis (6) y menor que siete (7), pudiendo recuperar cada uno de ellos acorde a las normativas vigentes.

Los alumnos que acrediten su condición de trabajadores ante las autoridades de la Facultad, podrán acceder a una recuperación adicional por trabajo de los parciales que se establezcan.


RÉGIMEN DE PROMOCIÓN

Los alumnos además de cumplir con los requisitos para regularizar la materia, deberán aprobar cada uno de los parciales de primera o de segunda instancia con una calificación igual o mayor a siete (7), para poder acceder a la evaluación de promoción, la cual consistirá de un coloquio oral sobre temas que integren la materia.

EXAMEN FINAL
El examen final será escrito u oral, pudiendo incluir uno o varios temas teóricos y/o prácticos.

EXAMEN LIBRE
No se aceptan alumnos en condición de Alumnos Libres

IX - Bibliografía Básica
[1] * Operating Systems - Harvey M. Deitel - Addison-Wesley- 2004 - ISBN: 0131828274-
[2] * Fundamentos de Sistemas Operativos. Séptima Edición. Silberschatz, Abraham; Galvin Baer, Peter; Greg, Gagne. Editorial: MCGRAW-HILL. ISBN: 84-481-4641-7
[3] * Operating Systems - Harvey M. Deitel - Addison-Wesley- 1990 - ISBN: 0-201-50939-3
[4] * El núcleo LINUX. Review, versión 0.8-2 - RUSLING DAVID A. (1996-1998) Trabajo en preparación disponible en internet.
[5] * Operating Systems Design the XINU Approach - Douglas E. Comer - Prentice Hall - ISBN: 0-13-637539-1
[6] * Linux Kernel Internal - Second Edition - Michael Beck, Harald Bohme, Mirko Dziadzka, Ulrich Kunitz, Robert Magnums, Dirk Verworner - Addison-Wesley - 1998 - ISBN: 0-201-33143.8
[7] * Modern Operating Systems - Andrew S. Tanenbaum - Prentice Hall - 1992 - ISBN: 0-13-588187-0
[8] * The Design of the UNIX Operating System - Maurice J. Bach - Prentice Hall - 1986 - ISBN: 0-13-201799-7 025
X - Bibliografia Complementaria
[1] * UNIX for Programmers and Users A Complete Guide - Graham Glass - Prentice Hall - 1993 - ISBN: 0-13-061771-7
XI - Resumen de Objetivos
Son objetivos de la materia Sistemas Operativos los siguientes:
a) Estudio teórico de Sistemas Operativos a fin de capacitar al alumno en la comprensión de las funciones de un sistema operativo en un sistema de computación.
b) Desarrollar en el alumno la capacidad de implementar distintas técnicas relativas al área, con los elementos al alcance del Departamento de Informática.
c) Como resultados derivados de los puntos A) y B) se espera desarrollar en el alumno, luego de adquirida cierta experiencia en el área, las siguientes capacidades:

Participar en el diseño e implementación de Sistema Operativos.
Modificar un Sistema Operativo acorde a las necesidades de su entorno.
Mantener un Sistema Operativo según las comunicaciones con el proveedor de equipo.
Utilizar en otras áreas de aplicaciones los conocimientos a fin de producir software de mejor calidad.
Un manejo aceptable en la plaza del Sistema Operativo LINUX.

Acorde con los objetivos y dentro de las restricciones del plan de estudios, el desarrollo de la materia profundizará en las áreas del administrador del procesador y del administrador de la memoria.

Los administradores de la información y de los dispositivos no serán tratados al mismo nivel de detalle debido a la brevedad del curso y a la dependencia de una configuración particular.
No obstante se espera que la introducción a los mismos, dada durante el curso sea suficiente para encarar estos aspectos en situaciones futuras.
XII - Resumen del Programa
Historia, evolución y filosofía. Métodos de estructuración: modelos de capas y cliente-servidor de objetos. Tareas y procesos: definición, bloques de control, listas ready, dispatching, context switch. Coordinación y sincronización de procesos. Deadlocks: causas, condiciones, prevención; modelos y mecanismos. Scheduling and dispatching. Administrador de memoria. Administrador de dispositivos. Sistema de Archivos. Seguridad. Protección. Un caso de estudio.
Laboratorios sugeridos: Diseño e implementación de un context switcher simple y múltiples tareas usando un reloj para causar context switch hecho en un lenguaje de alto nivel. Implementación de algún mecanismo de sincronización de accesos y probar la falta de conflictos.
Correr varias mezclas de jobs bajo varios algoritmos de scheduling
y analizar los resultados (a través de simulaciones).
XIII - Imprevistos
El presente programa se ha desarrollado en un contexto mundial de pandemia causado por Covid'19. El plan de trabajo ha sido adecuado al dictado en forma no presencial, a través de aulas virtuales dispuesta por la FCFMyN de la UNSL, grupos de mails, además la çatedra cuenta desde hace varios períodos anteriores la disponibilidad del material y demás comunicación con los alumnos y alumnas, a través de su página web.En el caso de los alumnos y alumnas promocionados y promocionadas la evaluación integradora final será considerada en el momento oportuno en forma presencial o remota, según la situación.
XIV - Otros