th Edition, Nov 15, 2006 Captulo 2: Estructuras sistema operativo 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Captulo 2: Estructuras sistema operativo ! Servicios del sistema operativo ! Interfaz de usuario del sistema operativo ! Llamadas al sistema ! Tipos de llamadas al sistema ! Programas del sistema ! Diseo e implementacin del sistema operativo ! Estructura del sistema operativo ! Mquinas virtuales ! Generacin del sistema operativo ! Inicio del sistema 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Objetivos ! Describir los servicios provistos a usuarios, procesos y otros sistemas por el sistema operativo ! Discutir las distintas formas de estructurar un sistema operativo ! Explicar como se instalan y configuran los sistemas operativos y cmo inician 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Servicios del sistema operativo ! Servicios provistos por el SO (usuarios): " Interfaz de usuario Casi todos los sistemas operativos tienen una IU ! Las hay de lnea de comandos (CLI), grficas (GUI), batch " Ejecucin de programas El sistema debe ser capaz de cargar un programa en memoria y ejecutarlo, terminar ejecucin ya sea de manera normal o anormal (indicando un error) " Operaciones E/S - Un programa en ejecucin puede requerir E/S, que puede involucrar un archivo o dispositivo de E/S. " Manipulacin del sistema de archivos - Los programas necesitan leer y escribir archivos y directorios, crearlos y borrarlos, buscarlos, listar informacin acerca de ellos, manejar sus permisos. 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Servicios de sistemas operativos (Cont.) ! Servicios provistos por el SO (usuarios): " Comunicaciones Los procesos pueden intercambiar informacin, en la misma computadora o entre computadoras distintas en una red ! Puede utilizar memoria compartida o paso de mensajes (paquetes que mueve el SO) " Deteccin de errores SO siempre atento a posibles errores ! Puede ocurrir en el hardware de la memoria o el CPU, en dispositivos de E/S, en programas de usuario ! Para cada tipo de error, SO debe tomar la accin apropiada para asegurar cmputo consistente y correcto ! Herramientas de depurado pueden mejorar enormemente las habilidades de usuarios y programadores para utilizar el sistema eficientemente 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Servicios del sistema operativo (Cont.) ! Servicios provistos por el SO (operacin eficiente - compartir recursos): " Asignacin de recursos Cuando varios usuarios o trabajos se ejecutan concurrentemente, deben asignarse recursos a cada uno de ellos ! Muchos tipos de recursos - Algunos (como ciclos de CPU, memoria principal y almacenamiento para archivos) pueden incluir cdigo especial de asignacin, otros (dispositivos de E/S) pueden utilizar cdigo general de solicitud y liberacin. " Contabilidad Para mantener registro de qu usuarios utilizan qu tanto de los recursos del sistema " Proteccin y seguridad Los dueos de informacin almacenada en una computadora multi-usuario o en red deben controlar el uso de esa informacin, procesos concurrentes no deben interferir entre ellos ! Proteccin asegurar que todo acceso al sistema es controlado ! Seguridad del sistema de ajenos requiere autenticacin de usuarios, se extiende para defender dispositivos de E/S externos de intentos invlidos de acceso ! Si hemos de proteger y asegurar el sistema completo, debemos instalar precauciones a lo largo y ancho del sistema. Una cadena es tan fuerte, como su eslabn ms dbil. 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Linea de comandos SO - CLI !CLI permite el ingreso de comandos ! Implementados en el kernel o por programas del sistema ! Pueden ser distintos sabores shells ! Obtiene el comando del usuario y lo ejecuta # Pueden ser incluidos o programas # Si son programas, agregar nuevas caractersticas no implica modificar el shell 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Interfaz grfica de usuario SO - GUI ! Interfaz amigable, metfora escritorio " Usualmente ratn, teclado y monitor " conos representan archivos, programas, acciones, etc. " Los botones del ratn sobre objetos en la interfaz producen acciones (proveen informacin, opciones, ejecutan funciones, abrir directorios) " Inventada en Xerox PARC ! Muchos sistemas incluyen interfaces CLI y GUI " Microsoft Windows es GUI con CLI un shell de comandos " Apple Mac OS X, interfaz Aqua GUI con kernel de UNIX tras bambalinas y shells disponibles " Solaris es CLI con interfaces GUI opcionales (Java Desktop, KDE) " Qu es Linux? 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Llamadas al sistema ! Interfaz de programacin para servicios del SO ! Escritas en lenguajes de alto nivel (C or C++) ! Se accede a travs de una Interfaz de Programa de Aplicacin (API) ! Tres APIs comunes: Win32 Windows, POSIX virtualmente todas las variantes de UNIX, Linux, and Mac OS X, y Java mquina virtual de Java (JVM) ! Por qu utilizar APIs en lugar de llamadas al sistema? 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Ejemplo de llamada al sistema ! Secuencia de llamada al sistema para copiar el contenido de un archivo a otro archivo 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Ejemplo de API estndar ! Considera el comando read() de Java byte[] b el buffer en el cul leemos los datos int off el desplazo inicial en b donde leemos los datos int len el nmero mximo de bytes a leer 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Implementacin de llamadas al sistema ! Tpicamente hay un nmero asociado con cada llamada " Interfaz de llamada al sistema mantiene una tabla indexada de acuerdo a estos nmeros ! La interfaz invoca la llamada al sistema adecuada en el kernel del SO y regresa su estado y valor de regreso ! No necesitas saber cmo est implementada " Slo obedecer API y entender lo que el SO har como resultado " API encapsula los detalles de implementacin ! Manejados por bibliotecas de soporte en tiempo de ejecucin 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Relacin: API Llamada al sistema SO 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Ejemplo de la biblioteca estndar C ! Programa invoca la llamada printf(), que llama a write() (llamada al sistema) 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Paso de parmetros llamadas al sistema ! Usual se requiera ms informacin que nombre de llamada al sistema " Tipo exacto y cantidad de informacin vara dependiendo del SO y la llamada ! Existen tres mtodos generales para pasar parmetros al SO " El ms sencillo: pasar los parmetros en registros ! Pueden ser ms parmetros que registros " Se almacenan los parmetros en un bloque, o tabla en memoria. Direccin del bloque se pasa como parmetro en un registro ! Linux y Solaris hacen esto " Los parmetros se empujan al stack por el programa y son sacados por el SO " Los mtodos de bloque y stack no limitan el nmero o longitud de los parmetros que se pasan 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Paso de parmetros en tabla 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Tipos de llamadas al sistema ! Control de procesos ! Manejo de archivos ! Manejo de dispositivos ! Mantenimiento de informacin ! Comunicaciones 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Ejecucin en MS-DOS (a) Inicio del sistema (b) ejecutando un programa 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 FreeBSD ejecutando varios programas 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Programas de sistema ! Programas de sistema proveen ambiente conveniente para desarrollo y ejecucin de programas. Se dividen en: " Manipulacin de archivos " Informacin de estado " Modificacin de archivos " Soporte para lenguajes " Cargado y ejecucin de programas " Comunicaciones " Aplicacin de programas ! La visin de los usuarios est definida por los programas de sistema (y no por las llamadas al sistema). 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Programas de sistema ! Ambiente apropiado para desarrollar y ejecutar programas " Algunos interfaces de usuario a las llamadas del sistema; otros son ms complejos ! Manejo de archivos Crear, borrar, copiar, renombrar, imprimir, vaciado, lista y en general manipular archivos y directorios ! Informacin de estados " Informacin del sistema fecha, hora, memoria disponible, espacio en disco, nmero de usuarios " Detalles de rendimiento, bitcoras e informacin de depuracin. " Tpicamente, dan formato e imprimen la salida en una terminal o en otro dispositivo de salida " Algunos sistemas implementan un registro utilizado para almacenar y recuperar informacin de configuracin 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Programas de sistema (contd) ! Modificacin de archivos " Editores de texto para crear y modificar archivos " Comandos especiales para buscar contenidos de archivos o realizar transformaciones del texto ! Soporte lenguajes de programacin compiladores, intrpretes, ensambladores y depuradores ! Cargado y ejecucin de programas Cargadores absolutos, cargadores relocalizables, editores de ligado y sistemas de depurado para lenguajes de alto nivel y de mquina ! Comunicaciones Mecanismos para crear conexiones virtuales entre procesos, usuarios y computadoras " Permiten a los usuarios enviar mensajes a la pantalla de otros, navegar pginas web, enviar mensajes de correo, acceso remoto y transferir archivos de una mquina a otra 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Diseo e implementacin de SO ! Disear e implementar un SO es un problema insoluble, pero hay ideas que han probado ser exitosas ! Estructura interna de distintos SO vara dramticamente ! Iniciamos por definir metas y especificaciones ! Afecta la seleccin de hardware y tipo de sistema ! Metas de usuario y metas de sistema " Metas de usuario SO debe ser conveniente, fcil de aprender, confiable, seguro y rpido " Metas del sistema SO debe ser fcil de disear, implementar y mantener. Adems: flexible, confiable, libre de errores y eficiente 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Diseo e implementacin del SO (Cont.) ! Principios importantes a separar Poltica: Qu se va a hacer? Mecanismo: Cmo se har? ! Los mecanismos determinan cmo hacer algo, las polticas deciden qu se har " Esta separacin ofrece mayor flexibilidad para cambiar polticas ms adelante 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Estructura simple ! MS-DOS escrito para proveer la mayor funcionalidad en el menor espacio " No tiene mdulos " Aunque MS-DOS tiene algo de estructura, sus interfaces y niveles de funcionalidad no estn bien separados 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 MS-DOS estructura en capas 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Enfoque por capas ! SO dividido en niveles o capas, cada uno construido sobre los anteriores. Capa ms baja (layer 0), es el hardware; la ms alta, la interfaz de usuario. ! Las capas utilizan funciones (operaciones) y servicios exclusivamente de capas inferiores 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Sistema operativo por capas 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 UNIX ! UNIX SO UNIX original una estructura limitada, con dos partes separadas " Programas de sistema " Kernel ! Todo abajo de la interfaz de llamadas al sistema y arriba del hardware ! Provee: sistema de archivos, CPU scheduling, manejo de memoria y otras operaciones del SO. ! Demasiadas funciones para una capa. 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Estructura del sistema UNIX 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Estructura del sistema de Microkernel ! Mueve mucho del kernel al espacio del usuario ! Comunicacin entre mdulos con paso de mensajes ! Beneficios: " Ms fcil de extender un microkernel " Ms fcil portar el SO a otras arquitecturas " Ms confiable (menos cdigo se ejecuta en modo kernel) " Ms seguro ! Problemas: " Sobrecarga de comunicacin entre los espacios de usuario y kernel 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Estructura de Mac OS X 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Mdulos ! La mayora de los SO modernos implementan mdulos de kernel " Enfoque orientado a objetos " Cada componente base est separado " Cada uno habla con los otros a travs de interfaces comunes " Cada uno puede cargarse (al kernel) conforme se necesita ! En general, similar a las capas, pero ms flexible 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Enfoque modular en Solaris 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Mquinas virtuales ! Mquina virtual lleva el enfoque de capas a su conclusin lgica: ! Tratar hardware y el kernel del SO como si ambos fueran hardware ! Mquina virtual ofrece interfaz idntica para cualquier hardware que est abajo ! El SO crea ilusin de mltiples procesos, cada uno ejecutando en su propio procesador con su propia memoria (virtual) 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Mquinas virtuales (Cont.) ! Los recursos de la computadora fsica se comparten para crear las mquinas virtuales " Planificacin de CPU produce ilusin de que los usuarios tienen su propio procesador " Colas (spooling) y el sistema de archivos pueden ofrecer lectores de tarjetas e impresoras virtuales " Una terminal de usuario en un sistema de tiempo compartido, sirve como la mquina virtual de la consola del operador 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Mquinas virtuales (Cont.) (a) Mquina no virtual Mquina virtual 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Mquinas virtuales (Cont.) ! Mquina virtual provee proteccin completa de los recursos del sistema: cada mquina virtual est aislada de las dems. ! Por el aislamiento no pueden compartir recursos directamente. ! Mquina virtual es un excelente vehculo para hacer investigacin en SO. ! El desarrollo se lleva a cabo en la mquina virtual, sin afectar la operacin normal del sistema. ! Mquina virtual es difcil de implementar debido al gran esfuerzo de proveer un duplicado exacto de la mquina. 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Arquitectura de VMware 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Java ! Java consiste de ! Especificacin del lenguaje de programacin ! Interfaz de programacin de aplicacin (API) ! Especificacin de mquina virtual: 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 La mquina virtual Java Portabilidad de Java en varias plataformas 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Ambiente de desarrollo Java 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Java Operating Systems El sistema operativo JX 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Generacin de sistemas operativos ! SO se disean para correr en una clase de mquinas; pero debe configurarse para cada sitio especfico ! El programa SYSGEN (SYStem GENeration) obtiene informacin sobre configuracin del hardware ! Booting iniciar una computadora cargando el kernel ! Programa de bootstrap cdigo almacenado en ROM que puede localizar el kernel, cargarlo en memoria e iniciar su ejecucin ! Usualmente los cargadores son de varias etapas 2. Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Inicio del sistema (boot) ! El SO debe estar disponible (disco duro, live CD, memoria USB, etc.) " Pequea pieza de cdigo bootstrap loader, localiza el kernel, lo carga en memoria e inicia " A veces es un proceso de dos pasos, donde un bloque de arranque en una localidad fija carga el bootstrap " Cuando arranca la computadora, la ejecucin inicia en una posicin fija de memoria ! Firmware tiene el cdigo inicial de arranque Silberschatz, Galvin and Gagne 2007 Operating System Concepts with Java 7 th Edition, Nov 15, 2006 Fin del Captulo 2