Sistemas Operativos 1 Introducción Prof. Javier Cañas R. Nota • El texto guía es: Operating System Concepts, Eight Edition, Avi Silberschatz, Peter Baer Galvin, Greg Gagne • Estas PPT están basadas en las PPT originales que el autor del texto guía mantiene en: http://www.os-book.com/ Copyright Note The slides below are copyright Silberschatz, Galvin and Gagne, 2008. The slides are authorized for personal use, and for use in conjunction with a course for which Operating System Concepts is the prescribed text. Instructors are free to modify the slides to their taste, as long as the modified slides acknowledge the source and the fact that they have been modified. Paper copies of the slides may be sold strictly at the price of reproduction, to students of courses where the book is the prescribed text. Any use that differs from the above, and any for profit sale of the slides (in any form) requires the consent of the copyright owners; contact Avi Silberschatz ([email protected]) to obtain the copyright owners consent. Temario 1. ¿Qué hacen los Sistemas Operativos? 2. Organización de un Sistema Computacional 3. Arquitectura de un Sistema Computacional 4. Estructura de un Sistema Operativo 5. Operaciones de un Sistema Operativo 6. Gestión de Procesos ... Temario 7. Gestión de Memoria 8. Gestión de Almacenamiento 9. Protección y Seguridad 10. Sistemas Operativos de Código Abierto Objetivos • Un “paseo” por los principales componentes de un Sistema Operativo. • Cubrir aspectos relevantes de Sistemas Comutacionales. 1 ¿Qué es un Sistema Operativo (SO)? • Un programa que actúa como intermediario entre el usuario y el hardware. • Objetivos de un SO: - Ejecutar programas del usuario y solucionar problemas que puedan ocurrir. - Hacer que un sistema computacional sea conveniente de utilizar. ... ¿Qué es un Sistema Operativo (SO)? • Objetivos de un SO: - Usar el Hardware computacional de una manera eficiente. • Una métafora: el director de una orquesta: Estructura de un Sistema Computacional • Un sistema computacional está formado por cuatro componentes: • Hardware: proporciona los recursos básicos: CPU, memoria, dispositivos de I/O. • Sistema Operativo: Controla y coordina el uso de HW entre varias aplicaciones y usuarios ... Estructura de un Sistema Computacional • Aplicaciones: Define la forma a través de la cual los recursos del sistema son utilizados para resolver los problemas de los usuarios. Ejemplos: procesadores de texto, compiladores, browser, base de datos, juegos etc... • Usuarios: Se consideran usuarios a personas, máquinas y otros computadores. Los cuatro componentes ¿Qué es un SO? • Es un asignador de recursos: • • Gestiona todos los recursos. Toma decisiones entre requerimientos conflictivos para su utilización eficiente y justa • Es un programa de control: • Controla la ejecución de programas para evitar errores y usos impropios. ¿Qué es un SO? • No existe una definición universalmente consensuada. • Una buena aproximación: “todo aquello que un vendedor entrega cuando se compra un OS”. El problema es que varía mucho.... • El único programa que corre todo el tiempo es el kernel. Todo lo demás son programas de sistema o aplicaciones. Encendido de un computador • El programa bootstrap se carga cuando el computador se enciende o reinicia: - Se almacena en ROM o EPROM (firmware) Inicializa todos los aspectos del sistema Carga el kernel del SO e inicia la ejecución. 2 Organización de un Sistema Computacional • La operación de un SC requiere: - Una más CPU y controladores con acceso a la memoria a través de un bus común. - Ejecución concurrente de CPU y controladores compitan por ciclos de memoria ... Organización de un Sistema Computacional Operación de un SC • Dispositivos de I/O y CPU pueden funcionar concurrentemente. • Cada controlador tiene a su cargo tipos distintos de dispositivos. • Cada controlador tiene un buffer local. • La CPU mueve datos entre memoria y los buffers locales. Operación de un SC • El I/O se realiza sólo entre el dispositivo y el buffer local del controlador. • El contolador del dispositivo informa a la CPU que la transferencia a finalizado a través de una interrupción. Interrupciones • Una interrupción es una llamada no planificada a una subrutina. • Ante una interrupción, el control se transfiere a una rutina de servicio, normalmente a través de el vector de interrupción. • El vector de interrupción contiene la dirección de la rutina de servicio. ... Interrupciones • Interrupciones vectorizadas: interrupt vector Memory Direcciones de todas las subrutinas de servicio • La arquitectura de manejo de la interrupción salva la dirección de la próxima instrucción. • Al procesar una interrupción se desactivan otras interrupciones para prevenir pérdidas de interrupción. ... Interrupciones • Se denomina trap a una interrupción generada por software. Esto puede ser por un error o por requerimiento. • Un SO es conducido por interrupciones (interrupt driven). Esto significa que cualquiera de sus acciones tiene como causa una interrupción. • Ante una interrupción el SO preserva el estado de la CPU almacenando sus registros en un Stack. Diagrama de tiempo de interrupciones Estructura del I/O • El I/O puede ser sincrónico o asincrónico • I/O Sincrónico: Una vez que se activa el I/O, el control sólo retorna al usuario cuando el I/O termina: • • • Una instrucción wait deja la CPU ociosa hasta la próxima interrupción. Otra opción es un loop de espera. Sólo un I/O por vez. No es posible concurrencia. ... Estructura del I/O • I/O Asincrónico: Una vez que se activa el I/O, el control retorna al usuario sin esperar termino de I/O • • El I/O se inicia mediante una llamada al sistema. • El SO indexa la Tabla de estado de dispositivos para saber su estado y modificarla. Una Tabla de Estados de Dispositivos contiene una entrada para cada dispositivo de I/ O indicando tipo, dirección y estado. Estructura del Acceso Directo a memoria (DMA) • El DMA permite que dispositivos de I/O rápidos (ej. discos) puedan transferir información a tasas cercanas a la velocidad de memoria. • Los controladores transfieren bloques de datos entre los buffer de almacenamiento en forma directa a la memoria, sin intervención de la CPU. ... DMA • Sólo se genera una interrupción por bloque en vez de una interrupción por Byte cuando no hay DMA. Estructura del Almacenamiento • Memoria principal: arreglo de Bytes. medio de almacenamiento de gran capacidad que la CPU puede accesar directamente. • Almacenamiento secundario: extensión de la memoria principal que proporciona una gran capacidad de memoria no volátil. ... Estructura del Almacenamiento • Discos magnéticos: discos rígidos de metal o cerámica cubierto de material magnético. - La superficie se divide en tracks. cada track se subdivide en sectores. - El controlador determina la interacción lógica entre el dispositivo y el computador. Disco magnético Jerarquía de almacenamiento • Los sistemas de almacenamiento están organizados jerárquicamente. La jerarquía está determinada por: velocidad de transferencia, costo y volatilidad. • Caching: consiste copiar información de dispositivos lentos a dispositivos rápidos. Por ejemplo la memoria principal se puede ver como una caché para almacenamiento secundario. Jerarquía Cachés • Caching es un importante principio. Se implementa en varios niveles. • La información más utilizada se copia desde memorias lentas a rápidas temporalmente. • La caché es la memoria rápida. Se verifica para determinar si contiene la información correcta. Si la tiene, se usa directamente. Si no, se copian datos y después se usa. ... Cachés • El tamaño de la caché es menor que el tamaño de la memoria más lenta. • Los desafíos que impone esta técnica a los SO son: - La gestión de las cachés es un importante desafío de diseño. - Determinación del tamaño y políticas de reemplazo. 3 Arquitectura de Sistemas computacionales • Hay dos grandes posibilidades: • Procesador simple de propósito general (desde PDA hasta mainframes) • Multiprocesadores. Estos sistemas, día a día crecen en importancia Multiprocesadores • Se conocen también como: sistemas paralelos, sistemas fuertemente acoplados. • Las ventajas son: - Aumento de productividad Economías de escala Confiabilidad, degradación graciosa o tolerancia a fallas ... Multiprocesadores • Hay dos tipos: • Multiprocesamiento asimétrico (master-slave) • Multiprocesamiento simétrico (todos los procesadores son pares) Arquitectura de Procesamiento Simétrico Diseño Dual Core Interacciones en un computador moderno Sistemas en Cluster • Equivalente a un multiprocesadior, pero compuesto por múltiples sistemas trabajando coordinadamente. • Usualmente comparten almacenamiento a través de un SAN (storage-area network) • Permiten alta disponibilidad, es decir, servicios que sobreviven a las fallas. ... Sistemas en Cluster • Cluster asimétricos: tienen una máquina en un modo “hot-standby” • Clusters simétricos: contienen múltiples nodos corriendo aplicaciones y monitoreando a los demás. • Algunos Cluster son de HPC: las aplicaciones son escritas para utilizar paralelismo. 4 Estructura de un SO • Dos conceptos relevantes de SO son: • Multiprogramación: para lograr eficiencia. • Tiempo compartido (Multitarea): extensión lógica de la multiprogramación donde la CPU conmuta entre distintas tareas permitiendo la computación interactiva. Multiprogramación • Se basa en que un usuario simple no puede ocupar simultáneamente la CPU y dispositivos de I/O. • Se organizan los jobs (código y datos) para que la CPU siempre tenga uno que ejecutar. • Un subconjunto de los jobs reside en memoria principal. • Se selecciona un job para ejecutarse mediante la itineración de jobs (job scheduling). • Cuando un job espera por I/O, el SO conmuta a otro. Timesharing (multitarea) • • El tiempo de respuesta debe ser menor a 1 seg. • De los jobs listos para ejecutar, el itinerador de CPU selecciona uno. • Si un proceso no cabe en la memoria la técnica de swapping mueve jobs hacia y desde la memoria. • La técnica de memoria virtual permite la ejecución de de procesos que no tienen suficiente memoria. Cada usuario tiene al menos un programa ejecutándose en memoria (proceso) Layout de memoria en multiprogramación 5 Operaciones de un SO • Las interrupciones son activadas por el HW. • Por errores en el SW o por requerimientos se activan excepciones o traps (división por cero, llamadas al sistema, loops infinitos, violaciones de memoria, etc...) Prevención de loops infinitos • Un timer previene de loops infinitos programando una interrupción en un tiempo determinado a través de un contador. • El SO decrementa el contador. • Al llegar a cero se genera una interrupción. Modo Dual de operación • • • El modo dual protege al SO y sus componentes. Modos: Usuario y Kernel Apoyo de HW: bit de modo - Permite distinguir los dos modos, es decir cuando se ejecuta código de usuario o código del kernel. - Instrucciones previlegiadas sólo en modo kernel. Una llamada al sistema permite pasar a modo kernel. Al retorno se vuelve a modo usuario. Transición de modo usuario a modo kernel 6 Gestión de Procesos • Un proceso es un programa en ejecución. Corresponde a una unidad de trabajo dentro del sistema. • Proceso: entidad activa. Programa: entidad pasiva. • Un proceso necesita recursos para completar su tarea: CPU, memoria, archivos, I/O y datos de inicialización. ... Gestión de Procesos • Al término de un proceso se devuelven los recursos reutilizables. • En un proceso de un Thread, el registro PC (Program Counter) determina la siguiente instrucción a ejecutar. Las instrucciones se ejecutan en forma secuancial hasta el termino. ... Gestión de Procesos • En procesos Multi-Thread, cada thread tiene su propio PC. • En forma típica en un sistema hay múltiples procesos corriendo en una o varias CPU: procesos de usuarios y del so. • La concurrencia se logra por multiplexión de la CPU entre los distintos procesos/ threads Actividades en la Gestión de Procesos • Creación y eliminación de procesos de usuarios y de sistema. • • • • Suspención y reanudación de procesos. Proporcionar mecanismos para susincronización. Proporcionar mecanismos para su comunicación. Proporcinar mecanismos para el manejo de deadlocks. 7 Gestión de Memoria • Todo debe estar en memoria antes de la ejecución: datos e instrucciones. • Gestión de memoria: qué y cuando deben estar en memoria. • Una buena gestión de memoria optimiza la utilización de la CPU y los tiempos de respuesta a los usuarios. Actividades en la Gestión de memoria • Registro de la memoria utilizada actualmente y por quien. • Decidir que procesos y datos deben moverse hacia y desde la memoria. • Asignar y liberar memoria según se necesite. 8 Gestión del Almacenamiento • Un SO proporciona una vista lógica y uniforme de la información almacenada. - Se abstraen propiedades físicas y se presentan unidades lógicas: archivos. - Cada medio se controla por un dispositivo. Cada dispositivos tiene distintas propiedades físicas: velocidades, capacidades, métodos de acceso (secuencial o directo) ... Gestión del Almacenamiento • Los archivos se organizan en directorios. • El control de acceso determina quien y que puede accesar. • Las actividades de Gestión incluyen: - Creación y eliminación de archivos y directorios Primitivas para el manejo de archivos y directorios Mapeo de archivos en almacenamiento secundario Respaldos en en medios estables. Gestión del Almacenamiento Masivo • Usualmente se almacenan en discos datos que no entran en memoria o datos que deben permanecer por largos períodos de tiempo. • La Gestión del Almacenamiento tiene impacto en el desempeño global de un sistema. • Actividades: Gestión de espacio libre, asignación itineración de disco ... Gestión del Almacenamiento Masivo • El almacenamiento masivo no necesariamente es rápido ya que incluye discos ópticos y unidades de cinta. Aún así, debe ser gestionado. • Varía entre WORM (write-once, read-manytimes) y RW (read-write). Desempeño de varios niveles de almacenamiento • Los movimientos entre los distintos niveles de la jerarquía de almacenamiento puede ser explícito o implícito. Ejemplo: mover un entero entre el disco y memoria • • Ejemplo: int A; A=A+1 /*A is located in file B */ Los sistemas Multitarea deben ser cuidadosos en utilizar los valores recientes en forma independiente de su almacenamiento en la jerarquía de memoria. ... Ejemplo • La coherencia de cachés por hardware es lo más conveniente. De esta forma todas las CPU tienen en sus cachés los valores más recientes. • En sistemas distribuidos es aún más complejo. Deben existir múltiples copias de un dato. Subsistema de I/O • Un propósito de los SO es ocultar las particularidades de dispositivos de I/O. • El subsitema de I/O es responsable de: - Gestionar la memoria del I/O es decir, buffers, cachés, spooling (traslape de la salida de un job con la entrada de otro) - Proporcionar una interfaz general. Disponer de driver para dispositivos específicos. 9 Protección y Seguridad • Protección: cualquier mecanismo para el control del acceso de procesos usuarios a recursos definidos por el SO. • Seguridad: defensa del sistema ante ataques externos e internos: denegación de servicios, virus, worms, suplantación de identidad etc.. • ... Protección y Seguridad El SO primero distingue entre distintos usuarios para determinar que puede hacer cada uno: • • • • Identidad (uid): nombres, números,.. Este uid se asocia a archivos y procesos para facilitar el control de acceso. El identificador de grupo (gid) reconoce grupos de usuarios. Escalamiento de privilegios: permiten a los usuarios obtener mayores derechos. 10 SO de código abierto • Actualmente es posible obtener un so en código fuente en vez de código binario cerrado. • Este movimiento comenzó por la Free Software Foundation (FSF), que tiene una licencia GNU Public License (GPL) • Ejemplos incluyen GNU/Linux, BSD UNIX (incluido el núcleo de MAC OS X) y SUN Solaris Sistemas Operativos 1 Introducción Prof. Javier Cañas R.