Sistemas Operativos2 Estructuras de un Sistema Operativo
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. Servicios del SO
2. Interfaz usuario
3. Llamadas al sistema
4. Tipos de llamadas al sistema
5. Programas de sistema
6. Diseño e implementación de un SO
Temario
7. Estructura del SO
8. Máquinas Virtuales
9. Partida (System Boot)
Objetivos
• Describir el servicio que el SO proporciona a los usuarios, procesos y otros sistemas.
• Discutir los distintos modos de estructurar un SO.
• Explicar como los SO parten (boot)
1 Servicios
• Una visión de los servicios del SO:
... Servicios
• Un conjunto de servicios corresponden a funciones útiles a los usuarios:
• Interfaz: casi todos los SO tienen interfaz usuaria (UI). Esta interfaz varía entre Línea de Comando (CLI) a Interfaz Gráfica (GUI). Otra opción son SO tipo Bath.
• Ejecución de Programas: El SO debe poder cargar el programa en memoria y ejecutar. También debe terminar la ejecución, ya sea en forma normal, o anormal en presencia de error.
... Servicios
• Operaciones I/O: Un programa que corre requiere de I/O, ya sea archivos o algún dispositivo.
• Manejo de Archivos: El Sistema de Archivos es de vital importancia. Los programas necesitan leer y escribir archivos, crear, borrar, buscar en ellos, mostrar información y gestionar permisos.
Servicio de Comunicación
• Los procesos pueden intercambiar información, dentro del mismo computador o entre computadores sobre una red.
• Internamente, la comunicación puede ser vía memoria compartida o a través de paso de mensajes.
Servicio de Detección de Errores
• El SO debe estar siempre atento a posibles errores.
• Los errores pueden ocurrir en la CPU, HW de memoria, dispositivos de I/O y programas de usuario.
• Cada tipo de error significa tomar acciones para asegurar una computación correcta y consistente.
• Las facilidades de debugging pueden en buena medida ayudar a la productividad de programadores y a utilizar eficientemente el sistema.
Servicios que aseguran operación eficiente
• Asignación de recursos: Cuando existen múltiples usuarios o múltiples tareas concurrentes, es necesario asignar los recursos a cada uno de ellos.
• Hay muchos tipos de recursos: CPU, memoria, almacenamiento de archivos y también I/O que requiere código para asignar y liberar
Servicios que aseguran operación eficiente
• Contabilidad: Registro de usuarios en relación al uso de recursos como tiempos.
• Protección y Seguridad: Procesos concurrentes no deben interferir en otros:
- Protección: asegurar el control de acceso a todo recurso del sistema.
- Seguridad: se relaciona con autenticación de personas y también resguarda el uso de dispositivos de I/O de intentos inválidos de uso.
2 Interfaz Usuario
• El Intérprete de Comandos (CLI) permite interactuar directamente con el SO.
• CLI puede estar en el kernel o a través de programas de sistema (shells).
• CLI toma un comando del usuario y lo ejecuta. Un comando puede ser el nombre de un programa. Agregar nuevas funciones no requiere modificar completamente el shell.
... Interfaz Usuario
• Otra opción es una interfaz gráfica (GUI) que utiliza la metáfora de escritorio.
• GUI utiliza mouse, teclado y monitor.
• El uso de varios botones en el mouse sobre objetos de interfaz (carpetas) activan varias acciones(información, opciones, ejecutar).
• Fue inventado por Xerox PARC.
... Interfaz Usuario
• La mayoría de los sistemas incluyen interfaces CLI y GUI.
- MS/W es GUI con CLI “shell” de comandos.
- Apple Mac OS X como “Aqua” es interfaz GUI con kernel UNIX y varios shells disponibles.
- Solaris es CLI con interfaces opcionales GUI (Java Desktop, KDE).
Ejemplo de CLI: Bourne Shell
GUI: Mac OS X
3 Llamadas al Sistema
• Son interfaces de programación que permiten el acceso a los servicios del SO.
• Están escritas en lenguajes de alto nivel como C o C++.
• Frecuentemente son accesadas por los programas a través de API de alto nivel en vez de invocaciones directas a ellas.
Las API más comunes
• Las API más comunes son 3:
- Win32 para Windows
- POSIX para sistemas basados en POSIX (UNIX, Linux, Max OS X)
- Java API para la Java virtual Machine (JVM)
• ¿Por qué se usan API en vez de llamadas al sistema directas?
Ejemplo de Llamadas al sistema
• Secuencia de llamadas al sistema para copiar el contenido de un archivo en otro
Ejemplo de Win32
• Consideremos la función ReadFile() de la API Win32 que permite leer desde un archivo:
HANDLE file—the file to be readLPVOID buffer—a buffer where the data will be read into and written fromDWORD bytesToRead—the number of bytes to be read into the bufferLPDWORD bytesRead—the number of bytes read during the last readLPOVERLAPPED ovl—indicates if overlapped I/O is being used
Implementación de llamadas al Sistema
• Se asocia un número a cada llamada al sistema: La interfaz de llamadas al sistema mantiene una tabla indexada por estos números.
• La interfaz invoca a la llamada al sistema correspondiente dentro del kernel del SO y retorna el status de la llamada y un valor si corresponde.
... Implementación de llamadas al Sistema
• El llamante, no necesita saber cómo la llamada al sistema está implementada.
• La API oculta detalles de implementación y es gestionada por la biblioteca de soporte de run-time (conjunto de funciones que incorpora el compilador)
API, Llamada al sistema y Kernel
Ejemplo de la Biblioteca estándar de C
• El programa C invoca la llamada a biblioteca printf(). Esta llamada invoca la llamada al sistema write()
Paso de parámetros en llamadas al sistema
• Existen tres métodos para el paso de parámetros:
1. Pasar parámetros en registros. En algunos casos hay más parámetros que registros.
2. Los parámetros se almacenan en un bloque o tabla en memoria. La dirección del bloque se pasa como parámetro en un registro: Usado por Linux y Solaris.
3. Los parámetros se insertan en un Stack (push) por el programa y el SO hace un pop para sacarlos. Bloques y Stack no limitan el número de parámetros.
Ejemplo: paso por bloques
4 Tipos de Llamadas al Sistema
• Las llamadas al sistema se pueden clasificar en llamadas al sistema para:
• Control de procesos
• Gestión de archivos
• Gestión de dispositivos
• Mantención de la información del sistema
• Comunicaciones
• Protección
Ejemplos de Windows y UNIX
Ejemplos de Control de Procesos
• MS-DOS es un SO que sólo permite una tarea simple y no crea nuevos procesos.
• para ejecutar un programa, lo carga en memoria e inicializa el PC en la primera instrucción.
• El programa corre y pueden pasar dos cosas: un error causa un trap o el programa ejecuta una llamada al sistema para terminar.
Ejemplo proceso: MS-DOS
(a) At system startup (b) running a program
Ejemplo 2: FreeBSD
• FreeBSD es multitarea.
• El intérprete de comandos continua ejecutándose mientras otro programa es ejecutado.
• Para comenzar un nuevo proceso, el shell ejecuta la llamada al sistema fork()
5 Programas de Sistema
• Proporcionan un ambiente favorable para el desarrollo y ejecución de programas. Se pueden dividir en:
- Manipulación de archivos
- Proporcionar información de status- Modificar archivos- Soporte para lenguajes de programación- Comunicaciones- Programas de aplicación
... Programas de Sistemas
• Para muchos usuarios, un SO está definido por sus programas de sistema en vez de sus llamadas al sistema.
• Algunos programas de sistema son sólo interfaces a llamadas al sistema. Otros son más complejos.
• Por ejemplo manipulación de archivos: crear, borrar, copiar, renombrar, imprimir, vaciar, listar archivos y directorios.
... para información de status
• Se necesita saber la fecha, tiempo transcurrido, memoria disponible, espacio en disco, usuarios conectados, etc...
• Algunos sistemas operativos implementan un registro que se utiliza para almacenar y recuperar información de configuración.
... programas de sistema
• Compiladores, assemblers, debuggers e intérpretes.
• Cargadores absolutos, cargadores de overlays.
• Programas que permiten crear conexcciones virtuales entre procesos, usuarios y sistemas computacionales.
6 Diseño e Implementación de SO• No existe ninguna formula clara. Sin
embargo, algunas aproximaciones han probado se exitosas.
• Las estructuras internas varían considerablemente entre distintos so.
• Hay que comenzar estableciendo objetivos y especificaciones.
... Diseño
• La selección de hardware afecta el diseño.
• Hay objetivos de usuarios y objetivos de sistema:
- Usuarios: que sea conveniente de usar, fácil de aprender, confiable, seguro y rápido.
- Sistema: fácil de diseñar, implementar y mantener. Ser flexible, confiable, libre de errores y eficiente.
... Diseño
• Un importante principio es separar:
➡Política: ¿Qué se debe hacer?
➡Mecanismo: ¿Cómo hacerlo?
• El mecanismo determina como hacer algo, la política decide qué se debe hacer.
• Esta separación permite la máxima flexibilidad, sobre todo cuando las decisiones políticas cambian con el tiempo.
7 Estructura de un SO
• Lo más simple es MS-DOS que fue escrito para proporcionar la mayor funcionalidad en el mínimo espacio.
- No está dividido en módulos
- Aunque tiene una estructura, sus interfaces y niveles de funcionalidad, no están claramente separados.
Estructura por niveles de MS-DOS
SO estructurados en capas
• El SO se divide en un número de capas o niveles, cada una sobre el tope de la capa inferior.
• La capa inferior (0) corresponde al hardware. La más alta (N) es la interfaz usuario.
• Con modularidad, las capas son seleccionadas, de manera tal que cada una utiliza funciones (operaciones) y servicios de sólo las capas inferiores.
SO en capas
Estructura de un Sistema UNIX tradicional
... UNIX
• Originalmente, el SO UNIX estaba limitado por hardware y su estructura era bien limitada. Consistía en dos partes separadas:
• Programas de Sistemas
• Kernel: Todo lo que está entre las llamadas al sistema y el hardware. Provee entre otras cosas el sistema de archivos, itineración de CPU y gestión de memoria.
Estructura Microkernel
• La idea es mover todo lo posible desde el kernel al espacio de usuario.
• La comunicación de desarrolla entre los módulos usuarios usando paso de mensajes.
... Microkernel
• Pros:
• Fácil de extender
• Fácil de portar a nuevas arquitecturas
• Más confiable
• Más seguro
• Contra:
• Overhead producto de comunicación entre espacios de kernel y usuario
Estructura Mac OS X
Módulos
• La mayoría de los SO modernos implementan el kernel en base a módulos. Estos SO:
• Usan una aproximación orientada a objeto
• Cada componente base está separada.
• Cada componente conversa con otra a través de interfaces bien definidas.
• Cada módulo se carga en la medida que se necesita.
• En general es similar a la estructuración en capas, pero más flexible.
Ejemplo: Solaris
8 Máquinas Virtuales
• Se estructuran en base a la aproximación por capas o niveles.
• Trata el hardware y el kernel del so como si todo fuera hardware.
• El SO host, crea la ilusión que un proceso tiene su pripio procesador y memoria (virtual).
• Cada huésped tiene una copia (virtual) del hardware.
Historia y beneficios• Inicialmente desarrollada comercialmente por IBM
en sus mainframes en 1972.
• Diferentes SO pueden coexistir en un mismo hardware. Cada SO está protegido respecto a otro.
• Es posible compartir archivos controladamente.
• El formato estándar “Open Virtual Machine Format” permite a una VM correr en diferentes plataformas.
Máquinas Virtuales
(a) Nonvirtual machine (b) virtual machine
Para-virtualización
• Consiste en presentar al huésped, un HW similar, pero no idéntico.
• El huésped debe modificarse para correr en un hardware para-virtualizado.
• El huésped puede ser un SO, o en caso de Solaris 10, aplicaciones corriendo en los llamados contenedores.
Solaris 10 con dos contenedores
Arquitectura de VMware
JVM: La máquina Virtual Java
9 Partida (System Boot)
• Iniciar el SO significa que éste, debe estar disponible para el HW, es decir, el HW debe iniciarlo.
๏ Un pequeño programa llamado bootstrap o bootstrap loader debe ubicar el kernel, cargarlo en memoria e iniciarlo.
๏ Algunos computadores (PC) utiliza un proceso de dos etapas: un bootstrap simple carga un programa más complejo desde el disco, el cual carga el kernel.
... Partida
• El bootstrap puede realizar otras tareas, por ejemplo correr programas de diagnóstico de HW.
• El bootstrap usualmente está en ROM.
• Sistemas operativos de celulares o PDA almacenan todo el SO en ROM (corre más lento que en memoria RAM).
... Partida
• SO más grandes (Linix, MS/W, Mac) usan el cargador Bootstrap en firmware y el SO en disco.
• En estos casos el bootstrap contiene código que realiza diagnóstico y lee un bloque de disco de una dirección fija (ej. bloque 0) y ejecuta el código de este bloque de booteo. GRUB es un ejemplo.
Sistemas Operativos2 Estructuras de un Sistema Operativo
Prof. Javier Cañas R.
Top Related