Maquinas a nivel de Kernel

Publicado: septiembre 12, 2012 en Uncategorized

MicroKernel:

El patrón de arquitectura Microkernel se aplica a los sistemas de software quedeben ser capaces de adaptarse a los cambios en los requisitos del sistema. Sesepara un núcleo mínimo funcional de la funcionalidad extendida y partesespecíficas del cliente.El microkernel también sirve como una toma paraconectar estas extensiones y la coordinación de su colaboración

  • Proporciona solo un pequeño numero de servicios.
  • Intenta tener un kernel pequeño y escalable
  • Alto grado de modularidad
  • Extensible, portable y escalable
  • Se incrementa el nivel de comunicacion entre modulos
  • Puede degradar el rendimiento del sistema

File:OS-structure.svg

NanoKernel:

Es un núcleo del sistema operativo que es incluso más pequeño que un microKernel

El nanoKernel representa la capa más cercana de abstracción al hardware del sistema operativo interconectando a la CPU, maneja las interrupciones e interactúa recíprocamente con la unidad de manejo de memoria MMU.

El manejo de interrupciones y la interfaz con MMU no son necesariamente parte de un nanoKernel; sin embargo, en la mayoría de las arquitecturas estos componentes están conectados directamente con laCPU, por lo tanto, tiene a menudo sentido de integrar estas interfaces en el núcleo del sistema.

Interfaces uniformes en las peticiones realizadas por un proceso

  • Extensibilidad
  • Flexibilidad
  • Portabilidad
  • Fiabilidad
  • Soporte de sistemas distribuidos.

ExoKernel:

Es un sistema creado con fines de investigación en el Instituto Tecnológico de Massachusetts (MIT) sobreOpenBSD y un tipo de sistemas operativos similares. Su propósito es crear una especie de capa de software para otros sistemas virtuales.

La idea tras los exoKernel es obligar a los desarrolladores a usar el menor número posible de abstracciones, permitiéndoles hacer tantas decisiones como sea posible sobre las abstracciones de hardware. Los exoKernels son pequeños, ya que su funcionalidad está limitada a asegurar la protección y el multiplexado de recursos, que son muchísimo más simples que las implementaciones del paso de mensajes y las abstracciones de hardware de los núcleos monolíticos tradicionales.

Las aplicaciones pueden pedir direcciones específicas de memoria, bloques de disco, etc. El núcleo sólo asegura que el recurso está libre y se permite a la aplicación usarlo. Este acceso de bajo nivel al hardware permite al programador implementar abstracciones personalizadas y omitir las innecesarias, normalmente contribuyendo a un mejor desempeño de la aplicación. Esto también permite a los programadores escoger qué nivel de abstracción desean.

Los exoKernel pueden ser vistos como una aplicación del principio del “fin al fin” a los sistemas operativos, en el sentido en que no fuerzan a una aplicación a poner sus abstracciones en distintas capas de las que fueron diseñadas con diferentes requisitos en mente. Por ejemplo, en el proyecto del exoleo del MIT, el servidor web Cheetah guarda paquetes preformateados del protocolo IP en el disco, y el núcleo garantiza un acceso seguro al disco evitando lecturas y escrituras no permitidas, pero cómo se abstrae el funcionamiento del disco se deja a la elección de las librerías que la aplicación usa.

File:Kernel-exo.svg

Jerarquía de Diseño de SO (Brown – Denning)

Nivel 1: Consta de circuitos electrónicos, donde los objetos que se tratan son registros, celdas de memoria y puertas lógicas. Las operaciones definidas sobre estos objetos son acciones tales como borrar un registro o leer una posición de memoria.

Nivel 2: Es el conjunto de instrucciones del procesador. Las operaciones a este nivel son aquellas permitidas por el conjunto de instrucciones del lenguaje de la máquina, tales como SUMAR, RESTAR, CARGAR y DEPOSITAR.

Nivel 3: Añade el concepto de procedimiento o subrutina, así como las operaciones de llamada y retomo.

Nivel 4: Introduce las interrupciones, las cuales hacen que el procesador salve el contexto actual e invoque a una rutina de tratamiento de la interrupción.
Estos primeros cuatro niveles no forman parte del sistema operativo, sino que constituyen el hardware del procesador. Sin embargo, algunos de los elementos de los sistemas operativos comienzan a aparecer en estos niveles, tales como las rutinas de tratamiento de interrupción. Es en el nivel 5 en el que comienza a alcanzarse el sistema operativo propiamente dicho y en el que comienzan a aparecer los conceptos asociados con la multiprogramación.

Nivel 5: En este nivel se introduce la noción de proceso como un programa en ejecución. Entre los requisitos fundamentales de un sistema operativo que ofrezca soporte para múltiples procesos se incluye la capacidad de suspender y reanudar los procesos. Esto exige salvaguardar los registros del hardware, de modo que la ejecución pueda cambiar de un proceso a otro. Además, si los procesos necesitan cooperar, hace falta algún método de sincronización. Una de las técnicas más simples, pero un concepto importante en el diseño de sistemas operativos, es el semáforo.

Nivel 6: Tiene que ver con los dispositivos de almacenamiento secundario del computador. En este nivel se sitúan las funciones de ubicación de las cabezas de lectura y escritura, y se producen las transferencias reales de bloques. El nivel 6 se apoya en el nivel 5 para planificar las operaciones y notificar al proceso que hizo la solicitud que la operación ha culminado. Los niveles más altos se ocupan de las direcciones de los datos pedidos del disco y son los que presentan la solicitud de los bloques apropiados al manejador del dispositivo del nivel 5.

Nivel 7: Crea un espacio de direcciones lógicas para los procesos. Este nivel organiza el espacio de direcciones virtuales en bloques que se pueden mover entre la memoria principal y la memoria secundaria. Tres son los esquemas de uso más habitual: los que utilizan páginas de longitud fija, los que usan segmentos de longitud variable y los que utilizan los dos. Cuando el bloque necesario no está en memoria, la lógica de este nivel le solicita una transferencia al nivel 6.

Hasta este punto, el sistema operativo se ocupa de los recursos de un solo procesador. Empezando por el nivel 8, el sistema operativo trata con objetos externos, tales como dispositivos periféricos y, posiblemente, redes y computadores conectados. Los objetos de estos niveles superiores son lógicos, objetos con nombre que pueden ser compartidos por varios procesos en un mismo computador o en varios computadores.

Nivel 8: Se dedica a la comunicación de información y mensajes entre los procesos. Mientras que el nivel 5 proporciona el mecanismo de señalización primitivo que permite la sincronización entre procesos, este nivel trata con una forma más completa de compartir información. Una de las herramientas más potentes en este nivel es el tubo (pipe), que es un canal lógico para el flujo de datos entre los procesos. Un tubo se define con su salida en un proceso y su entrada en otro proceso. También se pueden usar para enlazar dispositivos externos o archivos con los procesos.

Nivel 9: Da soporte al almacenamiento a largo plazo de los archivos con nombre. En este nivel, los datos del almacenamiento secundario se contemplan en términos de entidades abstractas de longitud variable, en contraste con el enfoque orientado al hardware del nivel 6, en términos de pistas, sectores y bloques de tamaño fijo.

Nivel 10: Es el que proporciona acceso a los dispositivos externos mediante interfaces estandarizadas.

Nivel 11: Es responsable de mantener la asociación entre los identificadores externos e in- ternos de los recursos y objetos del sistema. El identificador externo es un nombre que puede ser empleado por una aplicación o un usuario. El identificador interno es una direc- ción que es utilizada en los niveles inferiores del sistema operativo para ubicar y controlar un objeto. Estas asociaciones se mantienen en un directorio. Las entradas incluyen no sólo las asociaciones externo/interno, sino otras características, como los derechos de acceso.

Nivel 12: Proporciona servicios completos de soporte a los procesos. Esto va mucho más allá que lo que se ofrece en el nivel 5. En el nivel 5, sólo se mantienen los contenidos de los registros del procesador asociados con un proceso, junto a la lógica para expedir a los procesos. En el nivel 12, se da soporte a toda la información necesaria para la gestión ordenada de los procesos. Esto incluye el espacio de direcciones virtuales del proceso, una lista de objetos y procesos con los que puede interactuar y las limitaciones de dicha interacción, los parámetros pasados al proceso en su creación y cualesquiera otras características del proceso que pudieran ser utilizadas por el sistema operativo para su control.

Nivel 13: Ofrece al usuario una interfaz con el sistema operativo. Se denomina caparazón o shell porque separa al usuario de los detalles y le presenta el sistema operativo como un simple conjunto de servicios. El shell acepta las órdenes del usuario o las sentencias de control de trabajos, las interpreta, crea y controla los procesos según sea necesario.
Este modelo hipotético de un sistema operativo proporciona una descripción útil de la es-tructura, a la vez que sirve como guía de implementación. Se puede volver a esta estructura en el transcurso de este libro para observar el contexto de cualquier aspecto particular de diseño que esté en discusión.

Proceso (informática)

Un proceso puede informalmente entenderse como un programa en ejecución. Formalmente un proceso es “Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados”.1

Para entender la diferencia entre un programa y un proceso, A. S. Tanenbaum propone la analogía “Un científico computacional con mente culinaria hornea un pastel de cumpleaños para su hija; tiene la receta para un pastel de cumpleaños y una cocina bien equipada con todos los ingredientes necesarios, harina, huevo azúcar, leche, etcétera.” Situando cada parte de la analogía se puede decir que la receta representa el programa (el algoritmo), el científico computacional es el procesador y los ingredientes son las entradas del programa. El proceso es la actividad que consiste en que el científico computacional vaya leyendo la receta, obteniendo los ingredientes y horneando el pastel.

Sistema Con memoria Virtual

Cuando se usa Memoria Virtual, o cuando una dirección es leída o escrita por la CPU, una parte del hardware dentro de la computadora traduce las direcciones de memoria generadas por el software (direcciones virtuales) en:

  • la dirección real de memoria (la dirección de memoria física).
  • una indicación de que la dirección de memoria deseada no se encuentra en memoria principal (llamado excepción de memoria virtual)

En el primer caso, la referencia a la memoria es completada, como si la memoria virtual no hubiera estado involucrada: el software accede donde debía y sigue ejecutando normalmente. En el segundo caso, el sistema operativo es invocado para manejar la situación y permitir que el programa siga ejecutando o aborte según sea el caso. La memoria virtual es una técnica para proporcionar la simulación de un espacio de memoria mucho mayor que la memoria física de una máquina. Esta “ilusión” permite que los programas se ejecuten sin tener en cuenta el tamaño exacto de la memoria física.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s