UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO LICENCIADO EN CIENCIAS DE LA COMPUTACIÓN Programa de la asignatura: Sistemas operativos Clave: Semestre: Campo de conocimiento: Área de formación: 0713 6 Ciencias de la computación Organización de Sist de Cómp Linea terminal: Horas por Horas Total de horas Diploma semana Créditos: Teo T/P Prác 12 3 2 4 9 144 Tipo: Modalidad: Carácter: Teórico-práctico Curso Obligatoria Seriación indicativa antecedente: Análisis de Algoritmos I, Organización y Arquitectura de Computadoras, Ingenierı́a de Software. Seriación obligatoria antecedente: Probabilidad I, Modelado y Programación, Álgebra Lineal I. Seriación indicativa subsecuente: Redes de Computadoras. Objetivo General: Proporcionar un panorama de los elementos que conforman un sistema operativo a fin de entender la forma en que se controlan los recursos de los sistemas de cómputo. Establecer las bases para explotar los recursos de los sistemas de cómputo a su máxima capacidad. Conocer los aspectos de seguridad a considerar al diseñar e implmentar un sistema operativo. Se estudiará la estructura de los sistemas operativos tradicionales (en sistemas independientes) y se sentarán las bases para entender los sistemas operativos distribuidos. Al finalizar el curso el alumno comprenderá el papel del sistema operativo entre los distintos niveles de abstracción en que se puede trabajar con un sistema de cómputo. Contenido temático Unidad 1 2 3 4 5 6 7 8 Tema Introducción Programación Procesos Manejo de memoria Seguridad Sistemas de archivos Entrada-salida Sistemas operativos modernos Total de Semanas 1 Semanas 2.0 1.0 3.5 2.5 1.0 2.5 2.5 1.0 16.0 Desarrollo temático 1. Introducción. Comprender las funciones de un sistema operativo y las diferentes formas de analizarlo, ası́ como los elementos que lo componen. 1.1. Funciones de un sistema operativo. Evolución de los sistemas operativos. Factores a considerar al diseñar un sistema operativo. 1.2. Máquinas virtuales. 1.3. Control de recursos. 1.4. Elementos que conforman un sistema operativo; estructuras de los sistemas operativos. 2. Programación. Aprender a utilizar las funciones de un sistema operativo. 2.1. Uso de los servicios de un sistema operativos; API; creación de procesos; estados de los procesos. 3. Procesos. Comprender el funcionamiento interno de un sistema operativo. Conocer el comportamiento de los procesos. 3.1. Ejecución de procesos; procesos concurrentes; comunicación entre procesos; problemas de manejo de procesos; despacho de procesos; hilos. 4. Manejo de memoria. Comprender la forma en que su usa la memoria de una computadora para la coexistencia de procesos. 4.1. Utilización de la memoria; intercambio de bloques de memoria; memoria virtual; paginación y segmentación. 5. Seguridad. Conocer los aspectos que debe considerar un sistema operativo para ofrecer seguridad a los recursos del sistema. 5.1. Polı́ticas y mecanismos; sistemas seguros; mecanismos de protección. 6. Sistemas de archivos. Conocer la forma en que se organiza la información en un medio de almacenamiento permanente. 6.1. Datos y meta-datos; archivos y su organización; directorios; problemas de implantación; seguridad. 7. Entrada-salida. Conocer los problemas a resolver para integrar dispositivos periféricos a un sistema operativo. 7.1. Problemas de hardware; problemas de software; manejo de discos; manejo de terminales; manejo del reloj. 8. Sistemas operativos modernos. Conocer temas de interés en el desarrollo de sistemas operativos modernos. 8.1. Sistemas operativos distribuidos: Caracterı́sticas generales; problemas de comunicación en sistemas distribuidos; sincronización; relación entre procesos y procesadores; sistemas de archivos distribuidos. 8.2. Nuevas arquitecturas para los sistemas operativos. 2 BIBLIOGRAFÍA BÁSICA: 1. Tanenbaum, A. S., Modern Operating Systems 3rd ed., Prentice Hall, 2007. 2. Silberschatz, A., Galvin, P. B., Gagne, G. Operating Systems Concepts, 8th ed., John Wiley and sons, 2008, 3. Tanenbaum, A. S., Woodhull, A. S., Operating Systems: Design and Implementation 3rd ed., Prentice Hall, 2006. 4. Bic, L., Shaw, A., Operating Systems Principles, Pearson Education, 2003, 5. Stallings, W., Operating Systems: Internals and Design Principles, 6th ed., Prentice Hall, 2008, BIBLIOGRAFÍA COMPLEMENTARIA: 1. Bach, M., The Design of the UNIX Operating System, Prentice Hall, 1986. 2. Bovet, D. P., Cesati, M., Understanding the Linux Kernel, O’Reilly, 2000, Sugerencias didácticas: Exposición oral Exposición audiovisual Ejercicios dentro de clase Ejercicios fuera del aula Seminarios Lecturas obligatorias Trabajo de investigación Prácticas de taller o laboratorio Otras: Realizar trabajo práctico modificando el núcleo de un sistema operativo experimental, como Pintos o Minix. Mecanismos de evaluación del aprendizaje: √ Exámenes parciales (√) Examen final escrito (√) Trabajos y tareas fuera del aula (√ ) Prácticas de laboratorio ( √) Exposición de seminarios por los ( ) alumnos √ Participación en clase ( ) Asistencia ( √) Proyectos de programación (√) Proyecto Final ( ) Otras: ( ) √ (√) (√) (√) (√) (√) (√) (√) ( ) √ ( ) PERFIL PROFESIOGRÁFICO: Egresado preferentemente de la Licenciatura en Ciencias de la Computación o Matemático con especialidad en Computación. Es conveniente que posea un posgrado en la disciplina. 3