Servicios y Estructuras de Diseño de los Sistemas Operativos Ing. Luis Eduardo Sepúlveda Rodríguez. M.Sc
Servicios y Estructuras de Diseño de los Sistemas Operativos
Ing. Luis Eduardo Sepúlveda Rodríguez. M.Sc
3.2Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
● Servicios del Sistema Operativo
● Las llamadas del sistema
● Tipos de llamadas del sistema
● Programas del sistema
● Diseño e implementación del Sistema Operativo
● Estructura del Sistema Operativo
● Depuración del Sistema Operativo
● Generación del Sistema Operativo
● Sistema de arranque
Contenido | Servicios y Estructuras de Diseño de los Sistemas Operativos / Contenido |
Servicios del Sistema Operativo
3.4Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Servicios del Sistema Operativo | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo |
En forma resumida, un sistema operativo ofrece servicios en las áreas siguientes:
● Interfaz de usuario
● Ejecución de programas
● Operaciones de Entrada/Salida
● Manipulación de los archivos
● Comunicaciones
● Detección de errores
● Asignación de recursos
● Protección y seguridad
3.5Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Interfaz de Usuario
● Casi todos los sistemas operativos tienen una IU
• Las hay de línea de comandos (CLI), gráPicas (GUI), batch
● Por lo general, los sistemas operativos tienen una interfaz de usuario (UI – User Interface).
• Interfaz de Línea de Comando (CLI – Command Line Interface)
• Interfaz GráPica de Usuario (GUI – Graphics User Interface)
• Por lotes (Batch)
Servicios del Sistema Operativo | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Interfaz de Usuario |
3.6Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
CLI o intérprete de comandos
● Permite la entrada directa de comandos
● En primer lugar obtiene un comando del usuario y lo ejecuta
Servicios del Sistema Operativo | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Interfaz de Usuario |
3.7Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Servicios del Sistema Operativo | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Interfaz de Usuario |
Bourne Shell Command Interpreter
3.8Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Servicios del Sistema Operativo | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Interfaz de Usuario |
● Interfaz de fácil uso, implementa una metáfora de escritorio
• Por lo general utiliza el ratón, el teclado y el monitor.
• Los iconos representan archivos, programas, acciones, etc.
• Los botones del ratón sobre los objetos causas diversas acciones (proporcionar información, ejecutan funciones, abren directorios, etc.)
• Inventado en Xerox PARC
● Muchos sistemas incluyen ahora tanto CLI y las interfaces GUI
• Microsoft Windows y Apple Mac OS X tienen GUI principalmente y CLI opcionalmente.
• UNIX y GNU/Linux tiene CLI principalmente y opcionalmente GUI (CDE, KDE, GNOME)
3.9Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Ejecución de Programas
● El sistema operativo debe ser capaza de cargar un programa en memoria, leer archivos relacionados y preparar los dispositivos de E/S para realizar la ejecuión y posterior terminación del programa, ya sea nomal o anormal (indicando un error).
Servicios del Sistema Operativo | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Ejecución de Programas |
3.10Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Operaciones de Entrada y Salida
● Un programa en ejecución puede requerir operaciones de E/S, que puede involucrar desde archivos hasta dispositivos de E/S.
● Cada dispositivo E/S requiere un conjunto propio y peculiar de instrucciones o señales de control para su funcionamiento.
● El sistema operativo tiene en cuenta estos detalles de modo que el programador pueda pensar en forma más abstracta, es decir, lectuas y escrituras simples.
Servicios del Sistema Operativo | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Operaciones de Entrada y Salida |
3.11Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Manipulación de los archivos
● El sistema de archivos es de gran importancia en cualquier Sistema Operativo, debido a que allí se implemente la persistencia de información para el usuario.
● Los programas necesitan leer y escribir archivos y directorios; crearlos y borrarlos; buscarlos, listar información acerca de ellos, además de manejar sus propiedades y permisos.
Servicios del Sistema Operativo | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Manipulación de los archivos |
3.12Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Comunicaciones
● Los procesos pueden intercambiar información, ya sea en el mismo equipo o entre equipos a través de una red.
● Las comunicaciones pueden ser a través de memoria compartida o mediante el paso de mensajes (paquetes de información movidos por el sistema operativo)
Servicios del Sistema Operativo | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Comunicaciones |
3.13Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Detección de errores
El SO necesita estar constantemente al tanto de los posibles errores
● Puede ocurrir en el hardware de la CPU y la memoria, en los dispositivos de E/S, o en los programas de usuario.
● Para cada tipo de error, el sistema operativo debe tomar las medidas adecuadas para garantizar la computación correcta y consistente
Servicios del Sistema Operativo | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Detección de errores |
3.14Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Asignación de recursos
● Cuando varios usuarios o varias tareas se ejecutan simultáneamente, los recursos deben asignarse a cada uno de ellos
● Existen muchos tipos de recursos -‐ ciclos de CPU, memoria principal, de almacenamiento de archivos, dispositivos de E / S.
Servicios del Sistema Operativo | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Asignación de recursos |
3.15Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Contabilidad
● Para mantener registro de qué usuarios utilizan qué proporción de los recursos del sistema.
● Permite supervisar los parámetros de rendimiento tales como el tiempo de respuesta
Servicios del sistema operativo | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Contabilidad |
3.16Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Protección y seguridad
● Los propietarios de la información almacenada en un sistema multiusuario o computador en red pueden querer controlar el uso de esa información.
• Protección implica garantizar que todos los accesos a los recursos del sistema es controlado
• Seguridad del sistema de los forasteros requiere autenticación del usuario, se extiende a la defensa de los dispositivos de E / S externos de intentos de acceso no válidos
Servicios del sistema operativo | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Protección y Seguridad |
3.17Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Una vista de los Servicios de los Sistemas Operativos
| Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Protección y Seguridad |
Llamadas al Sistema Sistemas Operativos
3.19Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Llamadas al sistema | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Llamadas al sistema |
● Interfaz de programación de los servicios proporcionados por el sistema operativo
● Normalmente escrito en un lenguaje de alto nivel (C o C ++)
● Generalmente accedido por los programas a través de una programación de aplicaciones de alto nivel de interfaz (API) en lugar de utilización llamada al sistema directo
● Tres API más comunes son la API Win32 para Windows, POSIX API para sistemas basados en POSIX (incluyendo casi todas las versiones de UNIX, Linux y Mac OS X), y la API de Java para la máquina virtual Java (JVM).
3.20Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Llamadas al sistema | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Llamadas al sistema |
● Ejemplo de llama de sistema para copiar el contenido de un archivo a otro.
3.21Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Llamadas al sistema | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Llamadas al sistema |
● Ejemplo de un API estándar
3.22Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Llamadas al sistema | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Llamadas al sistema |
● Típicamente, se asocia un número con cada llamada del sistema
• La interfaz de llamada al sistema mantiene una tabla indexada de acuerdo a estos números
● La interfaz de llamada al sistema invoca la llamada al sistema previsto en el núcleo del sistema operativo y devuelve el estado de la llamada al sistema y los valores de retorno
● La persona que llama no necesita saber nada acerca de cómo se implementa la llamada al sistema
• Sólo necesita obedecer la API y entender lo que el sistema operativo hará como una llamada
• La mayoría de los detalles de interfaz del Sistema Operativo son ocultados al programador por la API
• Gestionado por la librerías de soporte en tiempo de ejecución (conjunto de funciones incorporadas en las librerías incluidas en el compilador)
3.23Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Llamadas al sistema | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Llamadas al sistema |
● Relación entre API, llama al sistema y el Sistema Operativo
3.24Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Llamadas al sistema | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Llamadas al sistema |
Tipos de llamadas al sistema
● Control de procesos
● Gestión de archivos
● Gestión de dispositivos
● Mantenimiento de información
● Comunicaciones
● Protección
3.25Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Llamadas al sistema | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Llamadas al sistema |
Tipos de llamadas al sistema
● Control de procesos
• Crear y terminar proceso
• Finalizar, abortar
• Cargar, ejecutar
• Obtener atributos del proceso
• Establecer atributos del proceso
• Esperar por tiempo, esperar evento
• Asignar y liberar memoria
• Volcado de memoria si hoy error
• Depurador para determinar errores
• Cerraduras para gestionar el acceso a los datos compartidos entre los procesos
3.26Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Llamadas al sistema | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Llamadas al sistema |
Tipos de llamadas al sistema
● Gestión de archivos
• Crear el archivo, borrar
• Archivo cerrar el archivo abierto
• Leer, escribir, cambiar la posición
• Obtener y establecer los atributos de archivo
• Conectar o desconectar lógicamente los dispositivos de almacenamiento
3.27Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Llamadas al sistema | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Llamadas al sistema |
Tipos de llamadas al sistema
● Mantenimiento de Información
• Obtener y establecer la hora o la fecha del sistema
• Obtener y establecer datos del sistema
• Obtener datos de conPiguración del sistema
• Obtener y establecer procesos y los atributos de archivos o dispositivos.
3.28Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Llamadas al sistema | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Llamadas al sistema |
Tipos de llamadas al sistema
● Comunicaciones
• Crear y eliminar la conexión de comunicación
• Enviar y recibir mensajes entre el cliente al servidor
• Modelo de memoria compartida (crear y tener acceso a las regiones de memoria)
• Información sobre el estado de transferencia
• Conectar y desconectar dispositivos remotos
3.29Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Llamadas al sistema | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Llamadas al sistema |
Tipos de llamadas al sistema
● Protección
• Control de acceso a recursos
• Obtener y establecer permisos
• Permitir y denar acceso a usuarios
3.30Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Llamadas al sistema | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Llamadas al sistema |
Ejemplos de llamadas al sistema en Sistemas Windows y Unix
3.31Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Llamadas al sistema | Servicios y Estructuras de Diseño de los Sistemas Operativos / Servicios del Sistema Operativo / Llamadas al sistema |
Ejemplos de llamada al sistema desde un programa en C
Diseño e implementación de un Sistema Operativo Sistemas Operativos
3.33Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
● Diseñar e implementar un SO es un problema “insoluble”, pero hay ideas que han probado ser exitosas
● La estructura interna de distintos SO puede variar dramáticamente
● Iniciamos por dePinir metas y especiPicaciones
● Afecta la selección de hardware y tipo de sistema
● Metas de usuario y metas de sistema
• Metas de usuario: el sistema operativo debe ser conveniente, fácil de aprender, conPiable, seguro y rápido.
• Metas del sistema: el sistema operativo debe ser fácil de diseñar, implementar y mantener. Así como ser Plexible, conPiable, libre de errores y ePiciente.
Diseño e implementación del Sistema Operativo
| Servicios y Estructuras de Diseño de los Sistemas Operativos / Diseño del Sistema Operativo |
3.34Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
● Un principio importante es separar
• La política del SO: ¿Qué se hará?
• Los mecanismos del SO: ¿Cómo hacerlo?
● Los mecanismos determinan cómo hacer algo, las políticas deciden lo que se hará
● La separación de la política del mecanismo es un principio muy importante, permite la máxima Plexibilidad para que las decisiones políticas se van a cambiar más tarde (ejemplo -‐ temporizador)
● La especiPicación y diseño de un sistema operativo es una tarea altamente creativa de la ingeniería de software
Diseño e implementación del Sistema Operativo
| Servicios y Estructuras de Diseño de los Sistemas Operativos / Diseño del Sistema Operativo |
3.35Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
MS-‐DOS: escrito para proveer la mayor funcionalidad en el menor espacio
● No tiene módulos
● Aunque MS-‐DOS tiene algo de estructura, sus interfaces y niveles de funcionalidad no están bien separados
Estructura simple -‐ monolítica | Servicios y Estructuras de Diseño de los Sistemas Operativos / Diseño del Sistema Operativo |
ROM – BIOS -‐ Disposi/vos
Programas de aplicación
Programas de Sistema
MS-‐DOS Driver de disposi/vos
3.36Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
● Primeros sistemas operativos.
● Se crean procedimientos separados que pueden llamarse unos a otros.
● Carecen de protecciones y privilegios.
● Eran muy ePicientes debido a su forma de operación.
Estructura simple -‐ monolítica | Servicios y Estructuras de Diseño de los Sistemas Operativos / Diseño del Sistema Operativo |
3.37Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
● El SO está dividido en niveles o capas, cada uno construido sobre los anteriores. La capa más baja (layer 0), es el hardware; la más alta (layer N) es la interfaz de usuario.
● Las capas se seleccionan de tal manera que cada una utilice funciones (operaciones) y servicios exclusivamente de capas inferiores
Enfoque por capas -‐ Jerárquica | Servicios y Estructuras de Diseño de los Sistemas Operativos / Diseño del Sistema Operativo |
Capa N
Capa 0
Capa N-1
Capa …
3.38Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
● Sistema dividido en niveles.
● Cada nivel le presta una serie de servicios al nivel superior.
● En esta estructura se basan la mayoría de los sistemas operativos actuales.
Enfoque por capas -‐ Jerárquica | Servicios y Estructuras de Diseño de los Sistemas Operativos / Diseño del Sistema Operativo |
Capa N
Capa 0
Capa N-1
Capa …
3.39Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
● UNIX: Estaba limitado por funcionalidad del hardware, el SO UNIX original tenía una estructura limitada, con dos partes separadas:
• Programas de sistema
• El kernel
• Todo abajo de la interfaz de llamadas al sistema y arriba del hardware
• Provee: sistema de archivos, programación de CPU, manejo de memoria y otras operaciones del SO. Un gran número de funciones para una capa.
UNIX | Servicios y Estructuras de Diseño de los Sistemas Operativos / Diseño del Sistema Operativo |
3.40Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Estructura del sistema UNIX | Servicios y Estructuras de Diseño de los Sistemas Operativos / Diseño del Sistema Operativo |
3.41Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
● Mueve mucho del kernel al espacio del “usuario”
● La comunicación entre módulos se realiza con paso de mensajes
● BenePicios:
• Más fácil de extender un microkernel
• Más fácil portar el SO a otras arquitecturas
• Más conPiable (menos código se ejecuta en modo kernel)
• Más seguro
● Problemas:
• Sobrecarga de comunicación entre los espacios de usuario y kernel
Estructura Microkernel
Mach
Entorno de aplicaciones y servicios comunes
BSD
Entorno de
l Kerne
l
3.42Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
● La mayoría de los SO modernos implementan módulos de kernel
• Enfoque orientado a objetos
• Cada componente base está separado
• Cada uno habla con los otros a través de interfaces comunes
• Cada uno puede cargarse (al kernel) conforme se necesita
● En general, similar a las capas, pero más Plexible
Módulos
Solaris Kernel
Scheduling classes
File systems
Loadable system calls
Executable formats
Streams modules
Miscellaneous moudeles
Device and bus drivers
3.43Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
● Una máquina virtual lleva el enfoque de capas a su conclusión lógica. Trata el hardware y el kernel del SO como si fueran hardware ambos
● Una máquina virtual ofrece una interfaz idéntica para cualquier hardware que esté abajo
● El sistema operativo crea la ilusión de múltiples procesos, cada uno ejecutando en su propio procesador con su propia memoria (virtual)
Máquinas virtuales
3.44Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
● Los recursos de la computadora Písica se comparten para crear las máquinas virtuales
• La planiPicación de la CPU produce la ilusión 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 máquina virtual de la consola del operador
Máquinas virtuales (Cont.)
3.45Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Máquinas virtuales (Cont.)
Hardware
Kernel
Procesos
Procesos
Procesos
Hardware
Implementación de Máquina Virtual
VM 3 VM 1
Kernel
Procesos
Procesos
Procesos
Kernel
Procesos
Procesos
Procesos
Kernel
Procesos
Procesos
Procesos
VM 2
Sin máquina virtual
Con máquina virtual
3.46Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
● El concepto de máquinas virtuales provee protección completa de los recursos del sistema, ya que cada máquina virtual está aislada de las demás. Sin embargo, por el aislamiento no pueden compartir recursos directamente.
● Una máquina virtual es un excelente vehículo para hacer investigación en SO. El desarrollo se lleva a cabo en la máquina virtual, sin afectar la operación normal del sistema.
● El concepto de máquina virtual es diPícil de implementar debido al gran esfuerzo de proveer un duplicado exacto de la máquina.
Máquinas virtuales (Cont.)
3.47Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Virtualizació alojada
Hardware
Sistema Opera/vo Anfitrión ( GNU/Linux)
Sistema Opera/vo Huésped Free BSD CPU virtual RAM virtual Disposi/vos virtuales
Aplicación Aplicación Aplicación
CPU Memoria E/S
Capa de Virtualización
Sistema Opera/vo Huésped
Windows NT CPU virtual RAM virtual Disposi/vos virtuales
Sistema Opera/vo Huésped
Windows XP CPU virtual RAM virtual Disposi/vos virtuales
Aplicación
3.48Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
Arquitectura de Windows XP
3.49Basado en Operating System Concepts – 9th Edition de Silberschatz, Galvin and Gagne ©2013
● STALLING W. Operating Systems: Internals and Design Principles. 7th Edition. 2011.
BibliograPía
¡ SILBERSCHATZ A, GALVIN P, GAGNE G. Opera/ng System Concepts. 8th Edi/on. 2009.
¡ VIÑAS R, LLINAS F. Sistema Opera/vo GNU/Linux básico. UOC. 2003.
¡ ESTEVE J, BOLDRITO R, Administración avanzada de GNU/LINUX. UOC. 2004.