Download Asignatura : Sistemas Operativos

Document related concepts

Arquitectura de Windows NT wikipedia , lookup

Windows NT wikipedia , lookup

Núcleo (informática) wikipedia , lookup

Sistema operativo wikipedia , lookup

Compatible Time-Sharing System wikipedia , lookup

Transcript
UNIVERSIDAD NACIONAL DE INGENIERIA
Facultad de Ciencias y Sistemas
Departamento de Sistemas
Programa Analítico de Sistemas Operativos
I .- INTRODUCCIÓN
Carrera
:Ingeniería en Ciencias y Sistemas
Codigo
:
Asignatura
: Sistemas Operativos
Año
: IV
Semestre
:I
Horas Semanales
:4
Horas Semestrales
: 56
Prerrequisitos
: Programación
Precedencia
: Arquitectura de Máquinas Computadoras
II. OBJETIVOS GENERALES Y PARTICULARES.
Objetivo General
Dar a conocer al alumno las partes que componen un sistema operativo,
viendo su funcionamiento y la gestión que realiza sobre el sistema de
computación, así como la importancia que tiene en el mismo.
Como objetivos específicos

Conocer la necesidad de tener sistemas operativos eficientes en un
sistema de computación.

Conocer las distintas partes que integran un sistema operativo, cómo se
relacionan entre ellas y con su entorno: el hardware de la máquina y el
software de aplicación.

Ver cómo se implementa en algún sistema operativo real la gestión de
los recursos vista en teoría.

Ser capaces de implementar algunos de los subsistemas que constituyen
un sistema operativo.

Conocer los servicios que ofrecen los sistemas operativos a los distintos
tipos de usuarios: usuario de aplicaciones, usuario programador y
administrador del sistema.

Conocer, tanto internamente como desde el punto de vista del usuario,
alguno de los sistemas operativos más utilizados en la actualidad.
III. RECOMENDACIONES METODOLOGICAS
Según la experiencia en la impartición de esta asignatura es recomendable incrementar el
número de creditos a 6 hrs para lograr satisfacer las necesidades del plan, de lo contrario
cabe la necesidad de aplicar la asignatura sistemas operativos II en vez de redes de
computadoras en el semestre siguiente a esta asignatura, creo recomendable hacer esto
último por el gran vacio que se refleja en las dos asignaturas.
Prácticas de laboratorio
Práctica
1:
Introducción
al
Sistema
Operativo
Linux.
Esta práctica trata mostrar las órdenes básicas de funcionamiento de un sistema operativo
UNIX/LINUX, que va a ser el que se va a utilizar para realizar las prácticas de la
asignatura. Se evaluará mediante la realización de diversos ejercicios prácticos.
Practica
2:
concurrente
en
Linux.
En esta práctica se aprenderán a utilizar las llamadas al sistema para tratar con procesos
(creación, envío de señales, suspensión, ...). Además se aprenderá a utilizar los mecanismos
de comunicación entre procesos (conocidos como mecanismos IPC) del sistema operativo
Unix, que nos permitirán sincronizar e intercambiar información entre procesos distintos de
una manera sencilla y eficiente.
Su objetivo es obtener la base necesaria para poder realizar el resto de las prácticas.
Práctica 3: Simulación de políticas de gestión de procesos.
Se trata de crear un pequeño subsistema de gestión de procesos donde podamos
implementar y probar las distintas funciones y políticas que llevan a cabo los sistemas
operativos para la gestión de procesos.
Práctica 4: Simulación de políticas de gestión de memoria.
Se trata de crear un pequeño subsistema de gestión de memoria donde podamos
implementar y probar las distintas funciones y políticas que llevan a cabo los sistemas
operativos para la gestión de la memoria del sistema, bien con técnicas de memoria real o
bien con técnicas de memoria virtual.
Práctica 5: Simulación de políticas de gestión de entrada/salida.
Se trata de crear un pequeño subsistema de gestión de entrada/salida donde podamos
implementar y probar las distintas funciones y políticas que llevan a cabo los sistemas
operativos para la gestión de los dispositivos de entrada/salida.
Práctica 6: Simulación de políticas de gestión de ficheros.
Se trata de crear un pequeño subsistema de gestión de ficheros donde podamos
implementar y probar las distintas funciones y políticas que llevan a cabo los sistemas
operativos para la gestión del almacenamiento secundario.
IV.- PLAN TEMÁTICO
UNIDAD
1
2
3
4
5
6
7
8
9
10
TEMA
Introducción
Gestión de procesos
Programación concurrente
Planificación de procesos
Gestión de memoria real
Gestión de memoria virtual
Gestión de entrada/salida
Gestión de ficheros
Interbloqueo
Seguridad.
CT
3
6
4
5
4
3
2
2
2
3
V.- PLAN ANALÍTICO
Programa detallado de la asignatura
Unidad 1: Introducción
1. Repaso de conceptos básicos.
1. Arquitectura tradicional de un sistema informático.
2. Conceptos de programa, proceso, procesador.
3. Ciclo de ejecución de una instrucción
4. Concurrencia. Tipos de concurrencia.
2. Concepto de Sistema Operativo
1. Necesidad de Sistemas Operativos.
2. Definiciones de sistemas operativos.
3. Objetivos de los sistemas operativos.
3. Historia de los Sistemas Operativos.
1. Introducción.
2. Primera Generación (1945-1955).
3. Segunda Generación (1955-1965).
4. Tercera Generación (1965-1980).
5. Cuarta Generación (1980 - ).
6. Quinta Generación (1990 - )
4. Tipos de Sistemas Operativos.
1. Sistemas monoprogramación / multiprogramación.
CP
4
5
4
4
3
2
-
TOTAL
3
6
8
10
8
7
5
4
2
3
5.
6.
7.
8.
9.
2. Sistemas monopuesto / multipuesto.
3. Sistemas monousuario /multiusuario.
4. Sistemas monotarea / multitarea.
5. Sistemas de procesamiento por lotes.
6. Sistemas interactivos (de tiempo compartido).
7. Sistemas en tiempo real.
8. Sistemas multiproposito.
9. Ejemplos.
Conceptos clave en Sistemas Operativos
1. Respecto al usuario de órdenes/aplicaciones.
1. Usuario.
2. Sesión.
3. Programa.
4. Proceso.
5. Fichero.
6. Programas del sistema.
7. Intérprete de órdenes.
2. Respecto al usuario - programador
1. Llamadas al sistema
2. Niveles de ejecución del procesador.
3. Respecto al administrador del sistema.
1. Conceptos relevantes de administración.
2. Tareas de administración a realizar.
3. Órdenes típicas de administración de sistemas.
4. Respecto al diseñador/implementador
1. Sistema de gestión de procesos.
2. Sistema de gestión de memoria.
3. Sistema de gestión de I/O.
4. Sistema de gestión de ficheros.
Arquitecturas de Sistemas Operativos.
1. Sistemas monolíticos.
2. Sistemas estructurados en capas.
3. Sistemas orientados a objeto.
4. Sistemas basados en micronúcleos.
Funciones y servicios de los Sistemas Operativos
1. Servicios al programador.
2. Funciones para asegurar la eficiencia del sistema.
Tendencias actuales y futuras en Sistemas Operativos
1. Paralelismo.
2. Computación distribuida.
3. Sistemas tolerantes a fallos.
4. Interfaces de usuario.
5. Sistemas abiertos.
6. Sistemas operativos orientados a objeto.
7. Personalidades múltiples.
8. Micronúcleos.
Panorámica actual de los sistemas operativos comerciales.
10. Caso de estudio: Sistema Operativo Unix
1. Historia.
2. Características del sistema.
3. Estructura del Sistema Operativo.
4. Estructura del núcleo.
Unidad 2: Gestión de Procesos
1. Concepto de proceso.
2. Estados de un proceso.
3. Funciones del subsistema de gestión de procesos.
1. Funciones de gestión interna.
2. Servicios al usuario
4. Interrupciones
1. Concepto de interrupción
2. Tratamiento de interrupciones
3. Tipos de interrupciones
5. Cambio de contexto
6. Concepto de vapuleo. Causas más frecuentes.
7. Concepto de hilo. Diferencias sobre el concepto tradicional de proceso.
8. Caso de estudio: Sistema Operativo Unix.
1. Introducción.
2. Estados de un proceso.
3. Estructuras de datos utilizadas.
4. Contexto de un proceso y cambio de contexto.
5. Llamadas al sistema para trabajar con procesos
1. Creación de procesos: la llamada fork.
2. Llamadas a otros procesos: las llamadas exec*.
3. Terminación de procesos: la llamada exit.
4. Señales y su manipulación: llamadas signal y kill.
5. Espera de procesos: las llamadas wait y pause.
6. Identificadores de usuario de un proceso.
Unidad: Programación Concurrente
1. Introducción a la programación concurrente.
1. Procesos concurrentes.
2. Tipos de concurrencia.
2. Construcciones para expresar concurrencia.
1. Grafos de precedencia.
2. Instrucciones fork y join.
3. Construcciones estructuradas: cobegin - coend.
4. Lenguajes concurrentes.
3. El problema de la sección crítica.
1. Concepto de sección crítica.
2. Independencia en el tiempo de procesos: las condiciones de Berstein.
3. La exclusión mutua. Características de las soluciones aceptables.
4. Soluciones al problema de la exclusión mutua.
1. Intentos de solución.
2. Algoritmo de Dekker.
3. Algoritmo de Peterson.
4. Algoritmo de Lamport.
4. Mecanismos de sincronización.
1. Instrucción TestAndSet.
2. Semáforos.
1. Definición.
2. Aplicación al problema de la exclusión mutua.
3. Aplicación a la sincronización de procesos.
3. Regiones críticas.
4. Regiones críticas condicionales.
5. Monitores.
6. Otros mecanismos de sincronización.
1. Paso de mensajes.
2. Buzones y puertos.
3. Pipes.
5. Problemas clásicos de sincronización de procesos.
1. Productor-consumidor.
1. Buffer ilimitado.
2. Buffer circular.
2. Semáforos de circulación.
3. Lectores - redactores.
4. La cena de los filósofos.
5. La fotocopiadora.
6. Los fumadores.
7. Otros problemas de sincronización.
6. Caso de estudio: Sistema operativo Unix.
1. Mecanismos de comunicación entre procesos.
1. Memoria compartida.
2. Semáforos.
3. Colas de mensajes.
Unidad 4: Planificación de Procesos
1. Objetivos de la planificación de procesos. Tipos de planificadores.
2. Tipos de planificación.
1. A largo, medio y corto plazo.
2. Apropiativa y no apropiativa.
3. Objetivos de una buena política de planificación.
1. Justicia.
2. Optimización del uso de los recursos.
3. Evitar introducir sobrecarga al sistema.
4. Evitar la inanición de procesos.
5. Degradación paulatina.
6. Optimización de distintos parámetros:
1. Productividad.
2. Utilización de la CPU.
3. Tiempo de retorno.
4. Tiempo de espera.
5. Tiempo de respuesta.
4. Tipos de procesos en relación con la planificación.
1. Procesos limitados por E/S.
2. Procesos limitados por CPU.
3. Concepto de job-mix.
5. Políticas de planificación.
1. FIFO.
2. Prioridades.
1. Estáticas.
2. Dinámicas.
3. Round Robin.
1. Importancia del tamaño del cuanto.
4. SJF - Primero el más corto.
5. SRT - Primero el menor tiempo restante.
6. Prioridad a la tasa de respuesta más alta.
7. Colas en múltiples niveles.
8. Planificación de porción justa.
6. Caso de estudio: Sistema Operativo Unix.
1. Algoritmo de planificación normal.
2. Algoritmo con porción justa.
Unidad 5: Gestión de Memoria Real
1. Introducción
2. Prerequisitos de la gestión de memoria
1. Reubicación o Correspondencia
2. Protección
3. Organización Lógica
4. Organización física
3. Jerarquía de la memoria
1. Paso de un programa fuente a imagen binaria para su ejecución
2. Funcionamiento de la jerarquía
4. Direccionamiento
1. Paso de un programa fuente a imagen binaria para su ejecución
2. Carga dinámica
3. Espacio de direcciones lógicas versus físicas
4. Correspondencia entre direcciones lógicas y físicas
5. Unidad de gestión de memoria MMU
5. Intercambio
6. Tipos de gestión de la memoria
1. Asignación contigua de memoria
2. Asignación no contigua de memoria
Unidad 6: Gestión de memoria virtual
1. Introducción
2. Estructuras hardware empleadas
1. Paginación
2. Segmentación
3. Segmentación con paginación
3. Administración del almacenamiento virtual
1. Políticas de lectura
2. Políticas de ubicación
3. Políticas de asignación de páginas
4. Políticas de reemplazo o sustitución de páginas
5. El modelo del conjunto de trabajo
6. Políticas de vaciado
7. Control de carga
Unidad 7: Gestión de Entrada/Salida.
1. Introducción.
1. Aspectos que influyen en la complejidad.
2. Función del sistema operativo.
2. Dispositivos de entrada/salida
1. Clasificaciones.
1. Por unidad de transferencia.
2. Por "extremos" en la comunicación.
2. Aspectos de "diversidad".
3. Hardware de entrada/salida
1. Breve recorrido histórico.
2. Software relacionado
1. E/S programada - DMA
2. Sondeo- Interrupciones
4. Software de E/S
1. Objetivos de diseño.
1. Independencia del dispositivo.
2. Independencia del código de caracteres.
3. Eficiencia.
4. Uniformidad.
2. Estructuras de datos
1. Descriptor del periférico real.
2. Descriptor del periférico virtual.
3. Bloque de petición de entrada/salida.
3. Implementación por niveles
1. Manejadores de interrupciones.
2. Drivers de dispositivos (E/S con dispositivos)
3. Software independiente del dispositivo (E/S lógica)
4. Software del usuario.
5. E/S síncrona y asíncrona
5. Mejoras al funcionamiento del sistema de entrada/salida.
1. Buffers.
2. Spools.
1. Staging.
6. Ejemplos de dispositivos
1. Discos
1. Hardware de discos
1. Estructura de un disco.
2. Tiempos involucrados en el acceso al disco.
2. Software de discos: Planificación
1. Necesidad de planificación de disco.
2. Tipos de planificación.
3. Características de una buena política de planificación.
4. Políticas de optimización de búsqueda.
1. FCFS.
2. SSTF.
3. Scan y variantes.
5. Políticas de optimización rotacional.
1. SLTF.
2. Relojes
1. Hardware del reloj.
2. Software del reloj.
3. Terminales
1. Hardware de terminales
1. Distintos tipos de terminales
2. Software de terminales
1. De entrada
2. De salida.
Unidad 8: Intebloqueo
1. Concepto de interbloqueo. Ejemplos.
2. Concepto de aplazamiento indefinido. Ejemplos.
3. Recursos y tipos de recursos.
1. Recursos apropiables y no apropiables.
2. Recursos compartibles y dedicados.
4. Condiciones necesarias para el interbloqueo.
5. Tratamiento del interbloqueo.
1. Prevención del interbloqueo.
1. Negación de la condición de espera.
2. Negación de la condición de no apropiación.
3. Negación de la condición de espera circular.
2. Evitación del interbloqueo: Algoritmo del banquero.
3. Detección y eliminación del interbloqueo.
1. Reducción de gráficas de asignación de recursos.
2. Técnicas de eliminación del interbloqueo y problemas que presentan.
6. Perspectivas futuras.
Unidad 9: Gestión de Ficheros.
1. Introducción.
1. El sistema de ficheros. Acepciones del concepto.
2. Definición de fichero.
1. A nivel lógico.
2. A nivel físico.
3. Parámetros característicos de un fichero.
1. Tamaño
2. Volatilidad
3. Actividad
4. Jerarquía de datos
2. El sistema de gestión de ficheros.
1. Funciones a ofrecer al usuario.
2. Funciones de gestión interna.
3. Detalle de aspectos a contemplar.
3. Estructura del sistema de ficheros
1. Concepto de directorio.
2. Tipos de estructura: lineal, jerárquica parcial, jerárquica.
4. Organizaciones de ficheros y métodos de acceso.
5. Gestión del espacio de disco.
1. Consideraciones previas.
2. Asignación contigua.
3. Asignación no contigua.
6. Representación interna de los ficheros.
7. Control de acceso.
8. Respaldo y recuperación.
1. Respaldo periódico.
2. Respaldo incremental.
3. Histórico de transacciones.
4. Discos replicados.
9. Sistemas en red y sistemas de ficheros.
10. Bases de datos.
11. Caso de estudio: Sistema Operativo Unix
1. Introducción.
2. Estructura de un sistema de ficheros.
3. Panorámica general del sistema de ficheros.
4. El buffer caché: utilidad y funcionamiento básico.
5. Representación interna de los ficheros.
1. La tabla de inodos
2. Estructura de un fichero.
3. Ficheros directorio.
4. El superbloque.
6. Llamadas al sistema para el sistema de ficheros.
Unidad 10: Seguridad
1. Introducción.
1. Aspectos de seguridad.
1. Sistemas tolerantes a fallos.
2. Seguridad lógica.
2. Motivos del aumento de los ataques a la seguridad.
1. Aumento del número de ordenadores.
2. Aumento del número de usuarios.
3. Proliferación de las redes.
3. Tipos de amenazas a la seguridad.
1. Interrupción.
2. Intercepción.
3. Modificación.
4. Invención.
4. Componentes amenazados.
1. Hardware.
2. Software.
3. Datos.
4. Líneas de comunicación.
1. Partes de una estrategia global de seguridad.
1. Seguridad física.
1. Protección contra desastres.
2. Detección física de intrusos.
2. Seguridad de operación.
1. Clasificación.
2. División de responsabilidades.
3. Seguridad "interna"
1. Seguridad lógica del sistema
1. Controles de acceso al sistema.
2. Controles de acceso a los recursos.
3. Seguridad en la transmisión de datos.
2. Controles automatizados.
1. A posteriori.
2. On-line.
3. "Supervisión" de amenazas.
2. Principios de diseño
1. Mínimo privilegio.
2. Ahorro de mecanismos.
3. Aceptación.
4. Mediación total.
5. Diseños abierto.
3. Autentificación de la identidad de los usuarios
1. Por algo característico de la persona.
2. Por algo que tiene la persona.
3. Por algo que sabe la persona.
1. Normas para la elección de una contraseña.
2. Técnicas para garantizar la seguridad de las contraseñas.
1. Instrucción del usuario.
2. Contraseñas generadas automáticamente.
3. Inspección reactiva.
4. Inspección proactiva.
4. Criptografía
1. Objetivos.
2. Sistemas no basados en claves.
3. Sistemas simétricos.
4. Sistemas de clave pública
5. Sistemas de una dirección.
6. Aplicaciones.
1. Encriptación de archivos
2. Encriptación de mensajes.
3. Firmas digitales.
4. Almacenamiento de contraseñas.
5. Transmisión de contraseñas encriptadas
6. Sistemas de reto y respuesta.
5. Ataques organizados al sistema
1. Técnicas de intrusión (obtención de contraseñas)
1. Trampas o "puertas traseras".
2. Reventadores de contraseñas (Password Crackers).
3. Programas de escucha de redes. Sniffers.
4. Simuladores de programas de comunicación.
2. Ataques preventivos
1. Asincronía.
2. Hojeo.
3. Usurpación de líneas utilizadas.
4. Código clandestino.
5. Colapso del sistema.
6. Parámetros inesperados en las llamadas al sistema.
7. Engaño al operador.
8. Solicitud reiterada de páginas o bloques de dispositivos.
9. Interrupción de la secuencia de inicio.
6. Programas malignos.
1. Bombas lógicas.
2. Caballos de Troya.
3. Virus.
4. Bacterias.
5. Gusanos.
VI.- SISTEMA DE EVALUACIÓN



I Parcial 35pts. ( Este será en fecha programada por el Depto.)
II Parcial 35 pts. ( Este será en fecha programada por el Depto.).
Sistemáticos 30 pts ( Estos serán en el transcurso de la asignatura).
VII.- LITERATURA DOCENTE
Bibliografía
Si bien no se va a seguir estrictamente ningún libro como "libro de texto", podemos citar
varias obras fundamentales que se van a utilizar como referencia principal en el desarrollo
del curso. Para la parte de teoría, los libros más útiles serán:




Sistemas Operativos. Segunda Edición. Stallings, W. Ed. Prentice Hall, 1997
Sistemas Operativos. Conceptos fundamentales. Silverschatz, A., Peterson, J. y
Galvin, P. Ed. Addison Wesley Iberoamericana, 1994
Sistemas Operativos, Diseño e Implementación, Segunda edición Tanenbaum, A.
Ed. Prentice Hall. 1998
Sistemas Operativos. Segunda Edición. Deitel, H.M. Ed. Addisson-Wesley
Iberoamericana, 1993.
El libro fundamental para estudiar el sistema operativo Unix desde un punto de vista
interno es:

The Design of the Unix Operating System. Bach, M.J. Ed. Prentice Hall, 1986
En el tema de programación concurrente, utilizaremos fundamentalmente los siguientes
textos (el primero de ellos es un "clásico" en el tema)


Principles of Concurrent Programming. Ben-Ari, M. Ed. Prentice Hall, 1982
Programación Concurrente. Pérez Martínez, J.E. Ed. Rueda, 1990
Para las prácticas de la asignatura, dado que se van a realizar en el sistema operativo Unix,
será conveniente echar un vistazo a alguno de los siguientes libros para manejarnos en el
sistema a nivel de usuario:




Introducción a Unix. Un enfoque práctico. Afzal, A. Ed. Prentice Hall, 1997
Libro de prácticas de Unix.Andrés, J.L. y Arias, J.C. Ed. Síntesis, 1994
Unix Sistema V Versión 4. Rosen, Rosinski y Farber. Ed. McGraw-Hill, 1991
Utilizando Linux 2ª Ed. Tackett, J. y Gunter, D. Ed. Prentice Hall, 1996
Para la parte de programación con llamadas al sistema de Unix, pueden ser útiles:


El entorno de programación Unix. Kernighan B. y Pike R. Ed. Prentice Hall, 1984
UNIX. Programación Avanzada, segunda edición. Márquez, F.M. Ed. RA-MA,
1996
Al utilizar el lenguaje C como lenguaje de programación para realizar las prácticas de la
asignatura, también pueden ser útiles las siguientes referencias:


El Lenguaje de Programación C Kernighan, B.W., Ritchie, D.M. Ed. Prentice
Hall 1991
Programación en C y C++ Cueva Lovelle, J.M., López Pérez, B. Cuaderno
Didáctico nº 70 del Departamento de Matemáticas de la Universidad de Oviedo.
1993
Otras referencias sobre teoría de sistemas operativos, que pueden ser utilizadas en algún
tema concreto, son las siguientes:




Operating Systems Principles. Brinch Hansen, P. Ed. Prentice Hall, 1973
Operating Systems: Concept and Design.Milenkovic, M. Ed. McGraw-Hill, 1987
Sistemas Operativos Modernos. Tanenbaum, A. Ed.Prentice Hall. 1992
Distributed Operating Systems Tanenbaum, A.Prentice Hall. 1995
Para repasar conceptos de hardware de computadores dos referencias obligadas son las
siguientes:


VII
Organización y Arquitectura de Computadores (4ª edición) Stallings, W. Ed.
Prentice Hall. 1997
Structured Computer Organization. Tanenbaum, A. Ed.Prentice Hall. 1999
RELACIÓN DE AUTORES Y APROBACIÓN
Tec. Ing. Leonardo Aguirre Sotelo
Docente FCyS
Autor de Programa
Ing. Marvin Parrales
Coordinador de Sistemas
Msc. Ronald Torrez
Decano FCyS
Fecha: 14 de Diciembre de 2000