Estructuras de Sistemas Operativos Servicios de Sistemas operativos Estructura del Sistema Operativo Interfaz de Usuario del Sistema Operativo Llamadas a Sistema Tipos de Llamadas a Sistema Programas de Sistemas Diseño e Implementación de un Sistema Operativo Estructura de un Sistema Operativo Módulo 2 Máquinas Virtuales Depuración de un Sistema Operativo Generación de un Sistema Operativo Boot del Sistema Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Objectivos Describir los servicio de un sistema operativo que Servicios del Sistema Operativo Un conjunto de servicios del SO proveen funciones que son útiles al usuario: se ofrecen a usuarios, procesos y otros sistemas. Discutir las distintas formas de estructurar un sistema operativo. Varían operativos, personalizados y como se inician. Sistemas Operativos – Estructura de Sistemas Operativos Una Visión de los Servicios de un Sistema Operativo entre Command-Line (CLI), Graphics User Interface (GUI), Batch Explicar como son instalados los sistemas JRA © 2009 Interfaz de Usuario – Casi todos los SOs tienen una interfaz de usuario (UI) Ejecución de Programas- El sistema debe poder cargar un programa en memoria y ejecutarlo, terminarlo en forma normal o anormal (indicando el error). Operaciones de E/S - Un programa ejecutando puede requerir E/S, las cuales pueden involucrar un archivo o un dispositivo de E/S. Manipulación del Sistema de Archivos - El sistema de archivos es de particular interés. Obviamente el programa necesita leer y escribir archivos y directorios, crearlos y borrarlos, borrarlos, listar información de archivos y la administración de permisos. Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Servicios del Sistema Operativo (Cont) Un conjunto de servicios de SO provee funciones que son útiles al usuario (Cont): Comunicaciones – Los procesos pueden intercambiar información, en la red Las comunicaciones pueden ser vía memoria compartida o por medio de pasaje de mensajes (los paquetes son movidos por el SO) Detección de errores – Los SOs necesitan estar constantemente al margen de errores. Pueden ocurrir en la CPU y hardware de memoria, en dispositivos de E/S, en programas de usuario Para cada tipo de error el SO toma la operación apropiada para asegurar una computación correcta y consistente Las facilidades de depuración pueden mejorar las habilidades del usuario y programador para hacer eficiente el uso del sistema. JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos Servicios del Sistema Operativo (Cont) Otro conjunto de funciones del SO existen para asegurar una Servicios del Sistema Operativo (Cont) Otro conjunto de funciones del SO existen para asegurar una operación eficiente del propio sistema vía recursos compartidos. operación eficiente del propio sistema vía recursos compartidos. Alocación de Recursos – Cuando corren concurrentemente múltiples usuarios o múltiples tareas los recursos deben ser alocados a cada uno de ellos. Muchos tipos de recursos - Algunos (tales como ciclos de CPU, memoria principal y almacenaje de archivos ) pueden tener código especial de alocación, otros (como dispositivos de E/S) pueden tener código general de requerimiento y liberación. Protección y seguridad – Los propietarios de la información almacenada en sistema de computadoras multiusuarios o de red pueden querer controlar el uso de esa información, los cprocesos concurrentes no deben interferir uno con otro. Protección implica asegurar que todos los accesos a recursos del sistema están controlados. Seguridad del sistema frente a los de afuera requiere autenticación, extensión para defender los dispositivos externos de E/S de intentos de accesos no válidos. Contabilidad – Lleva la pista como, cuanto y que clases de recursos de computadora usan los usuarios. Si un sistema debe ser protegido y seguro, deben ser tomadas precauciones pues una cadena es tan fuerte como el más débil de los eslabones. Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Interfaz de Usuario del Sistema Operativo - CLI La interfaz de líneas de comando (Command Line Interface - CLI) o intérprete de comando permite entrar comandos en forma directa Interfaz de Usuario Gráfica del Sistema Operativo - GUI Interfaz desktop “amigable” Algunas veces implementadas en el kernel, otras como programas de sistema A primer lugar espera un comando del usuario y luego lo ejecuta En este último caso, agregar nuevas características no requiere modificaciones en la shell. Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Intérprete de Comando Bourne Shell JRA © 2009 Usualmente mouse, teclado y monitor Los Iconos representan archivos, programas, acciones, etc Varios botones del mouse sobre objetos en la interfaz causa varias acciones (proveen información, opciones, ejecuta funciones, abre directorios (conocidos como carpetas o folder) Inventada por Xerox PARC Casi todos los sistemas incluyen interfaces CLI y GUI Algunas veces están embebidos, otras son solo nombres de programas » JRA © 2009 veces múltiples variantes – shells En – Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos Microsoft Windows es GUI con una CLI que es una shell de “comando” Apple Mac OS X como interfaz GUI “Aqua” soportada por un kernel UNIX por debajo y sus shells disponibles. Solaris es CLI con una interfaz GUI opcional (Java Desktop, KDE) Sistemas Operativos – Estructura de Sistemas Operativos La GUI Mac OS X JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos Llamadas al Sistema Son la interfaz de programación a los servicios provistos por el SO Ejemplo de Llamada a Sistema Llamada a sistema para copiar el contenido de un archivo a otro. Tipicamente escritas en lenguajes de alto nivel (C o C++) Mayoritariamente accedidas por programas vía Application Program Interface (API) más que por el uso llamadas a sistema directas Las tres API más comunes son Win32 para Windows, POSIX API para sistemas POSIX (incluyendo virtualmente todas las versiones de UNIX, Linux, y Mac OS X), y Java API para la máquina virtual Java (JVM) Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Ejemplo de una API Standard Considere la función ReadFile() en la Win32 API—una función para leer de un archivo Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Implementación de Llamadas a Sistema Tipicamente se asocia un número con cada llamada al sistema La interfaz de las llamadas a sistema mantiene una tabla indexada de acuerdo con estos números La interfaz de las llamadas a sistema invoca la llamada a sistema entendida en el kernel del SO y retorna el estado de la llamada a sistema y retorna algún valor El llamador no necesita conocer nada acerca de como está implementada la llamada a sistema JRA © 2009 Solo necesita invocar la API y entender lo que hará el SO como resultado de la llamada La mayoría de los detalles de la interfaz del SO están escondidos para el programador por la API Una descripción de los f the parámetros pasados a ReadFile() HANDLE file—el archivo a ser leído LPVOID buffer—un buffer donde el dato será leído y previamente escrito DWORD bytesToRead— el número de bytes a ser leídos en el buffer LPDWORD bytesRead— el número de bytes leídos durante la última lectura LPOVERLAPPED ovl—indica si es usada una E/S solapada Sistemas Operativos – Estructura de Sistemas Operativos Manejada por librerías run-time (conjunto de funciones construídas en librerías incluídas con el compilador) JRA © 2009 Relación API – Llamada a Sistema del SO Sistemas Operativos – Estructura de Sistemas Operativos Ejemplo de Librería Standard C Un programa C invocando la llamada de librería printf(), la cual llama a la llamada a sistema write() JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos Parámetros Pasados vía Tabla Pasaje de Parámetros en Llamadas a Sistema Frecuentemente es requerida más información que simplemente identificar la llamada a sistema deseada. El tipo exacto y la cantidad de información varía de acuerdo al SO la llamada X X: parámetros Se usan tres métodos para pasar parámetros al SO El más simple: pasar los parámetros en registros En algunos casos, puede haber más parámetros que registros Parámetros almacenados en un bloque, o tabla, en memoria, y la dirección del bloque pasada como parámetro en un registro. Es así en Linux y Solaris Parámetros ubicados , o pushed, en un stack por el programa y popped del stack por el SO. Lo métodos por bloque y stack no limitan el número de parámetros a ser pasados registro se usan los parámetros desde la tabla X load @X system call 13 Programa de usuario JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Tipos Llamadas a Sistema código para system call 13 Sistema operativo Sistemas Operativos – Estructura de Sistemas Operativos Examples of Windows and Unix System Calls Control de procesos Blue box from page 51 Administración de archivos Administración de dispositivos Mantenimiento de Información Comunicaciones Protección JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Ejecución MS-DOS Inicio Sistemas Operativos – Estructura de Sistemas Operativos Múltiples Programas Ejecutando en FreeBSD Programa ejecutando proceso D memoria libre memoria libre memoria libre proceso C proceso intérprete intérprete de comandos intérprete de comandos kernel kernel proceso B kernel JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos 23 JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos Programas de Sistema Los programas de sistema proveen un medio conveniente para el Programas de Sistema Proveen un medio conveniente para el desarrollo de programas y su ejecución desarrollo de programas y ejecución. Pueden ser divididos en: Manipulación de archivos Información de estado Administración de archivos - Crea, borran, copian, renombran, imprimen, Modificación de archivos Soporte de lenguajes de programación vuelcos, listan, y generallmente manipulan archivos y directorios Información de estado Carga de programas y ejecución Comunicaciones Algunos requieren del sistema información - fecha, hora, cantidad de memoria disponible, espacio de disco, número de usuarios Otros proveen detalles de rendimiento, bitácoras e información de depuración Tipicamente estos programas dan forma e imprimen salidas a terminales o a otros dispositivos de salida. Algunos sistemas implementan un registro - usado para almacenar y recuperar información de configuración Programas de aplicación La visión que tienen la mayoría de los usuarios del sistema operativo está dada por los programas de sistema y no por las llamadas a sistema (system calls). Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Diseño e Implementación de un Sistema Operativo El diseño e implementación de SO no está estructurado pero hay algunos enfoques han resultado exitosos Editores de texto crean y modifican archivos Comandos especiales para buscar contenidos de archivos o realizar transformaciones de texto Soporte de lenguajes de programación - Compiladores, ensambladores, depuradores e intérpretes Carga y ejecución de programas – Cargadores absolutos, cargadores reubicables, editores de enlace, y cargadores de overlay, sistemas depuradores para lenguajes máquina y alto nivel Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Programas de Sistema (cont) Modificación de archivos La estructura interna de los diferentes SOs puede variar ampliamente Se comienza por definir los objetivos y las especificaciones Afectado por la elección del hardware, tipo de sistema Objetivos de los Usuarios y los objetivos del Sistema Comunicaciones – Proveen el mecanismo para crear conexiones virtuales Objetivos de los Usuarios – El SO debe ser conveniente para su uso, fácil de aprender, confiable, seguro y rápido Objetivos del Sistema – El SO debería ser fácil de diseñar, implementar y mantener, también flexible, confiable, libre de errores y eficiente entre procesos, usuarios y sistemas de cómputo Permite a los usuarios enviar mensajes, navegar páginas web, enviar mensajes de correo electrónico, conectarse remotamente, transferir archivos de una máquina a otra. Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Algunos de ellos son simples interfaces a llamadas a sistema, otros son considerablemente más complejos Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Estructura Simple Diseño e Implementación de un Sistema Operativo Importante principio de separación MS-DOS – escrito para proveer máxima funcionalidad en el menor espacio Política: ¿Qué deberá hacerse? Mecanismo: ¿Cómo hacerlo? Los mecanismos determinan como hacer algo, las políticias deciden que debe hacerse JRA © 2009 No está dividido en módulos Aunque MS-DOS tiene cierta estructura, sus interfaces y niveles de functionalidad no están bien separados La separación de política de mecanismo es un principio muy importante, permite máxima flexibilidad si las decisiones políticas son cambiadas más tarde Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos Capas de la Estructura MS-DOS Enfoque por Capas El sistema operativo está dividido en un número de capas (niveles), cada una construída sobre el tope de otra. La capa inferior (nivel 0), es el hardware; la mas alta (capa N) es la interfaz de usuario. programa de aplicación En forma modular, las capas son seleccionadas de manera que cada una usa funciones (operaciones) y servicios de las capas inferiores. programa del sistema residente drivers de dispositivos en MS-DOS drivers de dispositivos en ROM BIOS JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos UNIX Estructura de UNIX UNIX – está limitado por la funcionalidad del hardware, el sistema USUARIOS operativo UNIX original tenía una estructura limitada. El SO UNIX consiste de dos partes separables. shells y comandos compiladores e intérpretes librerías de sistema interfaz de system-call al kernel signals manejo terminal sistema I/O caracter drivers terminal sistema de archivos swapping sistema I/O bloque drivers disco y cinta 32 Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Programas de sistema El kernel Consiste de todo lo que esta debajo de la interfaz de los system calls y encima del hardware Contiene el sistema de archivos, la planificación de CPU, manejo de memoria, y otras funciones del sistema operativo; un gran número de funciones en un solo nivel. planificación CPU reemplazo de páginas demanda de páginas memoria virtual interfaz kernel al hardware controladores terminal terminales JRA © 2009 controladores disp discos y cintas controladores memoria memoria física Sistemas Operativos – Estructura de Sistemas Operativos Sistema Operativo por Capas 34 Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Sistema Operativo por Capas Capa M nuevas operaciones operacion es ocultas Capa M-1 operaciones existentes JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos 36 Estructura de Sistema Microkernel Estructura de Mac OS X Mueve tanto como se pueda al espacio de usuario Las comunicaciones tienen lugar entre módulos de usuarios por Ambiente de aplicaciones y servicios comunes medio de pasajes de mensajes Beneficios: Más fácil de extender Más fácil de portar el SO a nuevas arquitecturas Mas confiable (menos código corre el el modo kernel) Más seguro Detrimentos: Sobrecarga de rendimiento en la comunicación del espacio de usuario al espacio de kernel Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 JRA © 2009 Módulos Sistemas Operativos – Estructura de Sistemas Operativos Enfoque Modular en Solaris Los más modernos SOs implementan el kernel en módulos Usa un enfoque orientado a objetos Cada componente del núcleo está separado Los protocolos de comunicación entre ellos son sobre interfaces conocidas Cada uno es cargado en la medida que sea necesitado dentro del kernel En resumen, similar a capas pero más flexible Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Máquinas Virtuales Una máquina virtual lleva la propuesta por capas a su conclusión lógica. Trata el hardware y el kernel del sistema operativo como si fuera todo hardware. Una máquina virtual provee una interfaz idéntica al hardware primitivo subyacente. El sistema operativo crea la ilusión de múltiples procesos, cada uno ejecutando en su propio procesador con su propia memoria (virtual). Cada invitado es provisto con una copia (virtual) de la JRA © 2009 Historia y Beneficios de las Máqunas Virtuales Aparecieron comercialmente en las mainframes de IBM en 1972 Fundamentalmente, múltiples ambientes de ejecución (diferentes Sos) pueden compartir el mismo hardware Están protejidos uno de otro Puede permitirse, en forma controlada, compartir archivos Conmuta uno con otro sistemas físicos vía red Util para desarrollo, testing “Open Virtual Machine Format”, un formato standard de máquinas computadora JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos virtuales, permite a una VM correr dentro de diferentes plataformas (host) de máquinas virtuales Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos Modelos de Sistema Para-virtualización Presenta invitados con un sistema similar pero no idéntico hardware Máquina virtual Máquina no virtual Los invitados deben ser modificados para correr en un hardware paravirtualizado Los invitados pueden ser un SO, o en el caso de Solaris 10 las procesos aplicaciones corren en containers procesos procesos procesos Interfaz de programación kernel hardware JRA © 2009 kerne l kernel kernel implementación de la máquina virtual hardware Sistemas Operativos – Estructura de Sistemas Operativos 43 Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Solaris 10 con Dos Containers JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos Arquitectura de VMware Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 La Máquina Virtual Java Depuración del Sistema Operativo Depuración (debbuging) es encontrar y reparar errores, o bugs Los SOs generan archivos de log files conteniendo información de error Fallas de una aplicación puede generarar un vuelco de memoria (core dump) Fallas en el SO puede generar un archivo con el vuelco del kernel (crash dump) conteniendo la memoria del kernel Más allá de las caídas, la sintonía del rendimiento puede optimizar el rendimiento del sistema. La ley de Kernighan: “Depurar es dos veces más duro que escribir el código en primer lugar. Por lo tanto, si escribe el código tan habilmente como sea posible, usted es, por definición, no lo suficiente astuto como para depurarlo.” La herramienta Dtrace en Solaris, FreeBSD, Mac OS X permite depuración “en vivo” sobre sistemas de producción JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 Dispara pruebas cuando se ejecuta el código, capturando el estado de los datos y enviandolos a los consumidores de esas pruebas Sistemas Operativos – Estructura de Sistemas Operativos Generación de Sistemas (SYSGEN) Dtrace en Solaris 10 siguiendo un System Call Los sistemas operativos son diseñados para ejecutar en algunas clases de máquinas; el sistema debe ser configurado para cada sitio de computación específico. El programa SYSGEN obtiene información concerniente a la configuración específica del hardware. Booting – inicio de la computadora por carga del kernel. Programa Bootstrap – código almacenado en ROM que localiza el kernel, lo carga en la memoria e inicia su ejecución. Sistemas Operativos – Estructura de Sistemas Operativos JRA © 2009 JRA © 2009 Sistemas Operativos – Estructura de Sistemas Operativos Boot del Sistema El SO debe poner disponible al hardware, entonces el hardware puede iniciarlo Pequeñas piezas de código – bootstrap loader, localiza el kernel, lo carga en memoria, y lo pone en marcha A veces es un proceso en dos pasos donde el boot block en una locación fija carga el bootstrap loader Cuando se le da energía y se inicializa el sistema, comienza la ejecución a partir de una dirección fija de memoria Firmware JRA © 2009 es usado para contener el código inicial de boot Sistemas Operativos – Estructura de Sistemas Operativos Fin del Módulo 2 Módulo 2 50