servicios de sistemas operativos estructura del sistema...
TRANSCRIPT
Módulo 2
Estructura del Sistema Operativo
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 2009
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 OperativosJRA © 2009
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 OperativosJRA © 2009
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 OperativosJRA © 2009
Una Visión de los Servicios de un Sistema Operativo
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 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.
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 2009
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 OperativosJRA © 2009
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 OperativosJRA © 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
�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 OperativosJRA © 2009
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 OperativosJRA © 2009
Intérprete de Comando Bourne Shell
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 2009
La GUI Mac OS X
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 2009
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 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 OperativosJRA © 2009
Ejemplo de Llamada a Sistema
� Llamada a sistema para copiar el contenido de un archivo a otro.
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 2009
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 OperativosJRA © 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
� 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 OperativosJRA © 2009
Relación API – Llamada a Sistema del SO
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 2009
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 OperativosJRA © 2009
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
� 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 OperativosJRA © 2009
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 OperativosJRA © 2009
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 OperativosJRA © 2009
Examples of Windows and Unix System Calls
Blue box from page 51
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 2009 23
Ejecución MS-DOS
Inicio Programa ejecutando
memorialibre
memoria libre
kernel
proceso
kernel
intérpretede comandos
intérpretede
comandos
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 2009
Múltiples Programas Ejecutando en FreeBSD
proceso D
intérprete
proceso C
memoria libre
proceso B
kernel
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 2009
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 OperativosJRA © 2009
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 OperativosJRA © 2009
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 OperativosJRA © 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
� 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 OperativosJRA © 2009
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 OperativosJRA © 2009
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 OperativosJRA © 2009
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 OperativosJRA © 2009 32
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 OperativosJRA © 2009
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áginasmemoria 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 OperativosJRA © 2009 34
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 OperativosJRA © 2009
Sistema Operativo por Capas
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 2009 36
Sistema Operativo por Capas
Capa M-1
Capa M
nuevas operaciones
operaciones ocultas
operaciones existentes
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 2009
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 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 OperativosJRA © 2009
Estructura de Mac OS X
Ambiente de aplicacionesy servicios comunes
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 2009
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 OperativosJRA © 2009
Enfoque Modular en Solaris
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 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
computadora
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 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 virtuales, permite a una VM correr dentro de diferentes plataformas
(host) de máquinas virtuales
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 2009 43
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 OperativosJRA © 2009
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 OperativosJRA © 2009
Solaris 10 con Dos Containers
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 2009
Arquitectura de VMware
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 2009
La Máquina Virtual Java
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 2009
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 OperativosJRA © 2009
Dtrace en Solaris 10 siguiendo un System Call
Sistemas Operativos – Estructura de Sistemas OperativosJRA © 2009 50
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 OperativosJRA © 2009
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 Módulo 2
Fin del Módulo 2