Estructura del Sistema Operativo - Facultad de Ingeniería ... 2-… · Diseño e Implementación...
-
Upload
nguyenminh -
Category
Documents
-
view
220 -
download
0
Transcript of Estructura del Sistema Operativo - Facultad de Ingeniería ... 2-… · Diseño e Implementación...
Departamento de InformáticaFacultad de Ingeniería
Universidad Nacional de la Patagonia “San Juan Bosco”
Módulo 2
Estructura del Sistema Operativo
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Estructuras de Sistemas Operativos
� Servicios de Sistemas operativos
� 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áquinas Virtuales
� Depuración de un Sistema Operativo
� Generación de un Sistema Operativo
� Boot del Sistema
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Objectivos
� Describir los servicio de un sistema operativo que se ofrecen a usuarios, procesos y otros sistemas.
� Discutir las distintas formas de estructurar un sistema operativo.
� Explicar como son instalados los sistemas operativos, personalizados y como se inician.
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Servicios del Sistema Operativo
� Un conjunto de servicios del SO proveen funciones que son útiles al usuario:
� Interfaz de Usuario – Casi todos los SOs tienen una interfaz de usuario (UI)
� Varían entre Command-Line (CLI), Graphics User Interface (GUI), Batch
� 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 Operativo sJRA © 2008
Una Visión de los Servicios de un Sistema Operativo
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
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.
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
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.
� 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.
� Contabilidad – Lleva la pista como, cuanto y que clases de recursos de computadora usan los usuarios.
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
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.
� 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.
�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 Operativo sJRA © 2008
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
�Algunas veces implementadas en el kernel, otras como programas de sistema
�A veces múltiples variantes – shells
�En primer lugar espera un comando del usuario y luego lo ejecuta
– Algunas veces están embebidos, otras son solo nombres de programas
» En este último caso, agregar nuevas características no requiere modificaciones en la shell.
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Interfaz de Usuario Gráfica del Sistema Operativo - GUI
� Interfaz desktop “amigable”
� 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
� 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 Operativo sJRA © 2008
Intérprete de Comando Bourne Shell
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
La GUI Mac OS X
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Llamadas al Sistema
� Son la interfaz de programación a los servicios provistos por el SO
� 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 are 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 Operativo sJRA © 2008
Ejemplo de Llamada a Sistema
� Llamada a sistema para copiar el contenido de un archivo a otro.
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Ejemplo de una API Standard
� Considere la función ReadFile() en la Win32 API—una función para leer de un archivo
� 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 Operativo sJRA © 2008
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
� 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
� Manejada por librerías run-time (conjunto de funciones construídas en librerías incluídas con el compilador)
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Relación API – Llamada a Sistema del SO
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
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()
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
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 y la llamada
� 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
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Parámetros Pasados vía Tabla
X: parámetros
X
load @X
código para system call 13
registro
se usan los parámetros desde la tabla X
Sistema operativoPrograma de
usuario
system call 13
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Tipos Llamadas a Sistema
� Control de procesos
� Administración de archivos
� Administración de dispositivos
� Mantenimiento de Información
� Comunicaciones
� Protección
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Ejecución MS-DOS
Inicio Programa ejecutando
memorialibre
memoria libre
kernel
proceso
kernel
intérpretede comandos
intérpretede
comandos
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Múltiples Programas Ejecutando en FreeBSD
proceso D
intérprete
proceso C
memoria libre
proceso B
kernel
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Programas de Sistema
� Los programas de sistema proveen un medio conveniente para el desarrollo de programas y ejecución. Pueden ser divididos en:
Manipulación de archivos
Información de estado
Modificación de archivos
Soporte de lenguajes de programación
Carga de programas y ejecución
Comunicaciones
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 Operativo sJRA © 2008
Programas de Sistema
� Proveen un medio conveniente para el desarrollo de programas y su ejecución
� Algunos de ellos son simples interfaces a llamadas a sistema, otros son considerablemente más complejos
� Administración de archivos - Crea, borran, copian, renombran, imprimen, vuelcos, listan, y generallmente manipulan archivos y directorios
� Información de estado
� 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
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Programas de Sistema (cont)
� Modificación de archivos
� 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
� Comunicaciones – Proveen el mecanismo para crear conexiones virtuales 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 Operativo sJRA © 2008
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
� 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
� 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
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Diseño e Implementación de un Sistema Operativo
� Importante principio de separación
Política: ¿Qué deberá hacerse?Mecanismo: ¿Cómo hacerlo?
� Los mecanismos determinan como hacer algo, las políticias deciden que debe hacerse
� 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 Operativo sJRA © 2008
Estructura Simple
� MS-DOS – escrito para proveer máxima funcionalidad en el menor espacio
� No está dividido en módulos
� Aunque MS-DOS tiene cierta estructura, sus interfaces y niveles de functionalidad no están bien separados
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Capas de la Estructura MS-DOS
programa de aplicación
programa del sistema residente
drivers de dispositivos en ROM BIOS
drivers de dispositivos en
MS-DOS
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
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.
� En forma modular, las capas son seleccionadas de manera que cada una usa funciones (operaciones) y servicios de las capas inferiores.
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Estructura de UNIX
signalsmanejo terminal
sistema I/O caracter drivers terminal
sistema de archivos swapping
sistema I/O bloque drivers disco y cinta
planificación CPU reemplazo de páginas demanda de páginas
memoria virtual
interfaz de system-call al kernel
interfaz kernel al hardware
controladores terminal
terminales
controladores disp
discos y cintascontroladores memoria
memoria física
shells y comandoscompiladores e intérpretes
librerías de sistema
USUARIOS
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
UNIX
� UNIX – está limitado por la funcionalidad del hardware, el sistema operativo UNIX original tenía una estructura limitada.
El SO UNIX consiste de dos partes separables.
� 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.
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Sistema Operativo por Capas
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Sistema Operativo por Capas
Capa M-1
Capa M
nuevas operaciones
operaciones ocultas
operaciones existentes
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Estructura de Sistema Microkernel
� Mueve tanto como se pueda al espacio de usuario
� Las comunicaciones tienen lugar entre módulos de usuarios por 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 en 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 Operativo sJRA © 2008
Estructura de Mac OS X
Ambiente de aplicacionesy servicios comunes
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Módulos
� 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 Operativo sJRA © 2008
Enfoque Modular en Solaris
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
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 computadora
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
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 protegidos 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 virtuales, permite a una VM correr dentro de diferentes plataformas (host) de máquinas virtuales
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Modelos de Sistema
Máquina no virtual Máquina virtual
procesos procesos
procesos
procesos
kernel
kernel
kernel kernel
hardware
implementación de la máquina virtual
hardware
Interfaz de programación
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Para-virtualización
� Presenta invitados con un sistema similar pero no idéntico hardware
� 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 aplicaciones corren en containers
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Solaris 10 con Dos Containers
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Arquitectura de VMware
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
La Máquina Virtual Java
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
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
� 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 Operativo sJRA © 2008
Dtrace en Solaris 10 siguiendo un System Call
Sistemas Operativos – Estructura de Sistemas Operativo sJRA © 2008
Generación de Sistemas (SYSGEN)
� 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 Operativo sJRA © 2008
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 es usado para contener el código inicial de boot
Departamento de InformáticaFacultad de Ingeniería
Universidad Nacional de la Patagonia “San Juan Bosco”
Módulo 2
Fin del Módulo 2