15 de julio de 2011

Sistema Operativo Solaris

Historia de Solaris

El primer sistema operativo de Sun nació en 1983 y se llamó inicialmente SunOS. Estaba basado en el sistema UNIX BSD, de la Universidad de Berkeley, del cual uno de los fundadores de la compañía fue programador en sus tiempos universitarios. Más adelante incorporó funcionalidades del System V, convirtiéndose prácticamente en un sistema operativo totalmente basado en System V.

Esta versión basada en System V fue publicada en 1992 y fue la primera en llamarse Solaris, más concretamente Solaris 2. Las anteriores fueron llamadas Solaris 1 con efecto retroactivo. SunOS solo Logo Solaristendría sentido a partir de ese momento como núcleo de este nuevo entorno operativo Solaris. De esta forma Solaris 2 contenía SunOS 5.0. Desde ese momento se distingue entre el núcleo del sistema operativo (SunOS), y el entorno operativo en general (Solaris), añadiéndole otros paquetes como Apache o DTrace. Como ejemplo de esta función, Solaris 8 contiene SunOS 5.8.

Arquitecturas soportadas

Solaris usa una base de código común para las arquitecturas que soporta: SPARC y x86 (incluyendo AMD64/EM64T). También fue portado a la arquitectura PowerPC (en plataforma PReP) en la versión 2.5.1, pero el porte fue cancelado casi tan pronto como fue liberado. En un tiempo se planeó soporte para el Itanium pero nunca se llevó al mercado.

Sun también tiene planes de implementar APIs de Linux en Solaris 10, permitiendo la ejecución de código objeto Linux de forma nativa en la plataforma x86, lo cual sería facilitado por el hecho de que ambos sistemas operativos utilizan el formato ejecutable Executable and Linkable Format. Por el momento, Sun ha adoptado la tecnología Lxrun y la ofrece como descarga gratuita, si bien no está incorporada a la distribución base.

Solaris tiene una reputación de ser muy adecuado para el multiprocesamiento simétrico (SMP), soportando un gran número de CPUs. También ha incluido soporte para aplicaciones de 64 bits SPARC desde Solaris 7. Históricamente Solaris ha estado firmemente integrado con la plataforma hardware de Sun, SPARC, con la cual fue diseñado y promocionado como un paquete combinado. Esto proporcionaba frecuentemente unos sistemas más fiables pero con un coste más elevado que el del hardware de PC. ha dejado de ofrecer estaciones de trabajo basadas en arquitectura SPARC, reemplazándolas por modelos basados en Intel Core 2 y AMD64.

Árbol de familia de sistemas UNIX

Entornos de escritorio en Solaris

El primer entorno de escritorio para Solaris fue OpenWindows. Fue reemplazado por CDE en la versión Solaris 2.5. El escritorio Java Desktop System, basado en GNOME, se incluye por defecto con Solaris 10.

 

OpenSolaris

El código fuente de Solaris (con unas pocas excepciones) ha sido liberado bajo la licencia CDDL (Licencia Común de Desarrollo y Distribución) como un proyecto de software libre bajo el nombre OpenSolaris.

La licencia CDDL ha sido aprobada por la Open Source Initiative (OSI) como una licencia de código abierto y por la FSF como una licencia de software libre (aunque incompatible con la popular licencia GPL).

La base de OpenSolaris fue alimentada el 14 de junio de 2005 a partir de la entonces actual base de desarrollo de código de Solaris. Es posible descargar y licenciar versiones tanto binarias como en forma de código fuente sin coste alguno. Además, se ha añadido al proyecto Open Solaris código para características venideras como soporte Xen. Sun ha anunciado que las versiones futuras de Solaris se derivarán a partir de OpenSolaris.

 

Versiones de Solaris

Solaris es un sistema operativo de tipo Unix desarrollado desde 1992 inicialmente por Sun Microsystems y actualmente por Oracle Corporation como sucesor de SunOS. Es un sistema certificado oficialmente como versión de Unix. Funciona en arquitecturas SPARCy x86 para servidores y estaciones de trabajo.

En orden descendente, las siguientes versiones de Solaris han sido liberadas a 2010:
Versión de Solaris Versión de SunOS Fecha de publicación Descripción
Solaris 10 SunOS 5.10 31 de enero, 2005 Incluye soporte AMD64/EM64T, Dtrace, Solaris Containers, Service Management Facility (SMF) para reemplazar al sistema init.d, NFSv4. Modelo de seguridad basado en el menor privilegio.

Se ha eliminado soporte para procesadores sun4m y UltraSPARC I a frecuencia menor que 200 Mhz. Se ha añadido Java Desktop System como escritorio por defecto. Se ha añadido GRUB como cargador de arranque para plataformas x86. Se ha añadido soporte iSCSI. Se ha añadido soporte para el nuevo sistema de archivos, ZFS (versión 1/06).

Solaris 9 SunOS 5.9 28 de mayo, 2002(SPARC)
10 de enero, 2003(x86)
iPlanet Directory Server, Resource Manager, Solaris Volume Manager.

Añadida compatibilidad con Linux. Eliminado OpenWindows. Eliminado soporte para sun4d. La actualización más reciente es Solaris 9 9/05.

Solaris 8 SunOS 5.8 Febrero de 2000 Incluye Multipath I/O, IPv6 y IPsec. Introduce RBAC (control de acceso basado en roles).

Soporte para sun4c eliminado. La actualización más reciente es Solaris 8 2/04.

Solaris 7 SunOS 5.7 Noviembre de 1998

La primera versión de 64 bits para plataforma UltraSPARC. Añadido soporte nativo para registro de metadatos en el sistema de archivos (UFS logging).

Solaris 2.6 SunOS 5.6 Julio de 1997

Incluye protocolo Kerberos, PAM, TrueType, WebNFS, y soporte de archivos grandes.

Solaris 2.5.1 SunOS 5.5.1 Mayo de 1996

Ésta fue la primera y única versión que soportó la plataforma PowerPC. También se añadió soporte Ultra Enterprise, y los identificadores de usuario (uid_t) se expandieron a 32 bits.

Solaris 2.5 SunOS 5.5 Noviembre de 1995

Primera versión en soportar UltraSPARC e incluir CDE, NFSv3 y NFS/TCP.

Solaris 2.4 SunOS 5.4 Noviembre de 1994

Primera versión unificada SPARC/x86. Incluye soporte de ejecución OSF/Motif.

Solaris 2.3 SunOS 5.3 Noviembre de 1993 OpenWindows 3.3 cambia de NeWS a Display PostScript y elimina soporte de SunView.

Esta versión fue sólo para SPARC.

Solaris 2.2 SunOS 5.2 Mayo de 1993

Primera en soportar la arquitectura sun4d. Esta versión fue sólo para SPARC.

Solaris 2.1 SunOS 5.1 Diciembre de 1992(SPARC), Mayo de1993 (x86)

Soporte para arquitectura Sun-4 y sun4m. Primera versión para Solaris x86.

Solaris 2.0 SunOS 5.0 Junio de 1992

Primera versión preliminar, soporte solamente para la arquitectura sun4c.

Solaris 7 ya no se distribuye pero aún está soportado. Las versiones anteriores no están soportadas. Las versiones de Solaris también se describen en el FAQ de Solaris 2.

 

Línea de tiempo de Solaris

Línea de tiempo de Solaris

Versión en desarrollo

La base de código subyacente de Solaris ha estado bajo desarrollo continuo desde que el trabajo empezó a finales de los años 1980 en lo que fue con el tiempo liberado como Solaris 2.0. Cada versión como Solaris 10 se basa en una instantánea (snapshot) de este tren de desarrollo, tomada cerca del momento de su liberación, que es después mantenida como un proyecto derivado. Las actualizaciones a ese proyecto son construidas y entregadas varias veces al año hasta que sale la siguiente versión oficial.

La versión de Solaris bajo desarrollo por Sun a día de hoy se llama Nevada y se deriva de lo que es ahora la base de código OpenSolaris.

En 2003 se inició una adición al proceso de desarrollo de Solaris. Bajo el nombre de programa Solaris Express, una instantánea del tren de desarrollo se hace ahora disponible para su descarga una vez al mes, permitiendo a cualquiera probar las nuevas características y probar la calidad y estabilidad del sistema a medida que progresa hacia la liberación de la siguiente versión oficial.

Dado que Solaris Express pre data la liberación de Solaris como proyecto de código abierto, empezó como un programa solamente en forma de binarios, pero ahora hay una versión llamada Solaris Express: Community Release dirigida especialmente hacia desarrolladores OpenSolaris.

Modelo de negocio

Si bien Solaris en un ordenador personal apenas necesita mantenimiento profesional, utilizado en una empresa es posible que el empresario quiera contratar los servicios del equipo de Sun para hacer rendir al máximo su negocio, exprimiendo todas las novedades en seguridad de redes y muchas más cosas. Sun fabrica hardware libre, como lo es la tecnología SPARC.

 

Solaris 10

Solaris 10 es la versión más reciente del sistema operativo desarrollado por Sun Microsystems. Solaris es en sí software propietario y ahora la parte principal del sistema operativo se ha liberado como un proyecto de software libre denominado OpenSolaris. Esto es novedad para Sun, pues todas las versiones anteriores eran cerradas. Plantearon distribuir su producto bajo la licencia CDDL (Common development and distribution license).

Sun solaris se ejecuta sobre la arquitectura SPARC en 32 y 64 bits (más conocida como Ultra Sparc) o sobre procesadores x86 (incluidos Intel y AMD).

A comienzos del 2005, Sun Microsystems sacó a la luz la versión 10 (5.10) de su sistema operativo Solaris con nuevas características.

Predictive Self-Healing

Sun ha insertado en el núcleo del sistema operativo solaris un sistema denominado "Tecnología preventiva de auto recuperación" (PSH, Predictive Self-Healing). Con esta tecnología se reducen los riesgos y aumenta la disponibilidad del equipo, además PSH permite tomar medidas (diagnosticar, aislar, y recuperar las fallas existentes en los dispositivos de E/S o zonas en la memoria) para reducir daños por futuros peligros que puedan causar el caos en los sistemas y como resultado reducir los tiempos de caída, lo cual significa ahorrar tiempo y dinero.

Como bien se sabe, el sistema operativo es un software básico que controla una computadora; el sistema operativo tiene 3 principales funciones: coordina y manipula el hardware del ordenador o computadora; (como la impresora, la memoria, etc.), y gestiona los errores del hardware y la pérdida de datos;(el teclado, el mouse). Es por ello que Sun ha creado el PSH, cuya finalidad general es evitar los errores del sistema y/o minimizar el daño que estos puedan ocasionar.

Ventajas de las características del PSH del sistema operativo
  • Disponibilidad de servicio y sistema mejorado a través de un diagnostico y aislamiento de los componentes defectuosos.
  • Diagnostico automático y reinicio de componentes de hardware y software en milésimas de segundo.
  • Administración simplificada para administrar servicios.
DTrace

Denominado también rastreo dinámico, que busca el fondo y llega a la raíz de los problemas de rendimiento en tiempo real. Dicha herramienta trabaja utilizando sondas inteligentes del sistema que pueden acceder a áreas de más lento rendimiento o con cuellos de botella, estas sondas están dispersadas por todo el sistema, que ilumina cada rincón oscuro del sistema Solaris. Y además permite visualizar mejor la actividad del núcleo y de la aplicación. Y a la vez ofreciendo una visión operativa y una ganancia operativa no superada aún por otro sistema operativo.

Solaris Containers

Permite la creación de muchos ambientes privados de ejecución y una sola instancia de solaris. Cada ambiente tiene su propia identidad, independiente del hardware subyacente aunque se comporta como si se estuviera ejecutando en su propio sistema, permitiendo así que la consolidación sea un proceso sencillo, confiable y seguro. Y dado que los recursos del sistema están virtualizados, los administradores pueden incrementar la utilización del hardware, al tiempo que satisfacen los altos picos de demanda.

ZFS, Zettabyte File System

Es un nuevo sistema de archivos dinámico del sistema operativo Solaris. Ofrece una administración sencilla que automatiza y consolida complicados conceptos de almacenamiento y por otro lado protege todos los datos con sumas de 64 bits que detectan y corrigen el daño de datos silenciosos.

Es el primer sistema de archivos de 128 bits, ofrece una capacidad de 16.000 millones de veces superior a la de los sistemas de 32 o 64 bits, virtualmente es el único sistema de archivos con capacidad de almacenamiento prácticamente ilimitada.

Process rights management

Solaris 10 ofrece una solución para el modelo de usuario "todo o nada" mediante la integración de mínimos privilegios de seguridad directamente dentro de la base del sistema operativo. Gracias a esta nueva función, Solaris se mantiene como el único sistema operativo UNIX que ofrece este modelo de seguridad completamente integrado dentro de sus componentes del núcleo del sistema operativo, cada aplicación Solaris tiene una lista cerrada de los privilegios específicos impuestos por el núcleo, en lugar de un solo privilegio de raíz todopoderoso.

Libre de virus por más de 20 años, Solaris incluye la tecnología del Trusted Solaris ampliamente utilizada por el gobierno de los Estados Unidos para garantizar la seguridad de sus sistemas.

Sun Update Connection

Utilizando Solaris 10 los usuarios disponen de un servicio de actualizaciones que les permitirá estar al día con las innovaciones y el entorno del nuevo ambiente operativo.

Compatibilidad garantizada

Se asegura las aplicaciones escritas en versiones previas de Solaris pueden correr en Solaris 10 extendiendo la cobertura de compatibilidad hasta la versión de Solaris 2.6 la cual es una garantía sin precedentes en más de 7 años de lanzamiento de sistemas operativos en la industria. Además es capaz de correr la mayoría de las aplicaciones para GNU/Linux de forma nativa.

Fuente: Wikipedia

Seguir leyendo...

6 de julio de 2011

Kernel o Núcleo Híbrido

Los núcleos híbridos fundamentalmente son micronúcleos que tienen algo de código «no esencial», en espacio de núcleo para que éste se ejecute más rápido de lo que lo haría si estuviera en espacio de usuario.

Éste fue un compromiso que muchos desarrolladores de los primeros sistemas operativos, con arquitectura basada en micronúcleo, adoptaron antes que se demostrara que los micronúcleos pueden tener muy buen rendimiento.

Núcleos híbridosLa mayoría de sistemas operativos modernos pertenecen a esta categoría, siendo el más popular Microsoft Windows.

XNU, el núcleo de Mac OS X, también es un micronúcleo NO modificado, debido a la inclusión de código del núcleo de FreeBSD en el núcleo basado en Mach.

DragonFlyBSD es el primer sistema BSD que adopta una arquitectura de núcleo híbrido sin basarse en Mach.

 

Ejemplos de SO con núcleos híbridos

  • Microsoft Windows NT, usado en todos los sistemas que usan el código base de Windows NT
  • XNU (usado en Mac OS X)
  • DragonFlyBSD
  • ReactOS

Se tiende a confundir el término núcleo híbrido con los núcleos monolíticos que pueden cargar módulos después del arranque, lo que es un error. El núcleo híbrido implica que el núcleo en cuestión usa conceptos de arquitectura o mecanismos tanto del diseño monolítico como del micronúcleo, específicamente el paso de mensajes y la migración de código “no esencial” hacia el espacio de usuario, pero manteniendo cierto código no esencial en el propio núcleo por razones de rendimiento.

Estructura de núcleo monolítico, micronúcleo y núcleo híbrido

Fuente: Wikipedia

Seguir leyendo...

29 de junio de 2011

Definición y descripción del Micronúcleo (microkernel)

“Micronúcleo (en inglés: microkernel) es un tipo de núcleo de un sistema operativo que provee un conjunto de primitivas o llamadas al sistema mínimas, para implementar servicios básicos como espacios de direcciones, comunicación entre procesos y planificación básica”.

Todos los otros servicios (gestión de memoria, sistema de archivos, operaciones de E/S, etc.), que en general son provistos por el núcleo, se ejecutan como procesos servidores en espacio de usuario.

Esquema del funcionamiento de un micronúcleo. El paradigma del micronúcleo, tuvo una gran relevancia académica durante los años ochenta y principios de los noventa, dentro de lo que se denominó self healing computing, esto es, sistemas independientes que fuesen capaces de superar por si mismos errores de software o hardware. En un principio pretendía ser una solución a la creciente complejidad de los sistemas operativos.

Las principales ventajas de su utilización son la reducción de la complejidad, la descentralización de los fallos (un fallo en una parte del sistema no lo colapsaría por completo) y la facilitación para crear y depurar controladores de dispositivos.

Por otro lado, sus principales dificultades son la complejidad en la sincronización de todos los módulos que componen el micronúcleo y su acceso a la memoria, la anulación de las ventajas de Zero Copy, la Integración con las aplicaciones. Además, los procesadores y arquitecturas modernas de hardware están optimizadas para sistemas de núcleo que pueden mapear toda la memoria.

Esto mejora la tolerancia a fallos y eleva la portabilidad entre plataformas de hardware, según los defensores de esta tendencia. Sus detractores le achacan, fundamentalmente, mayor complejidad en el código, menor rendimiento, o limitaciones en diversas funciones.

Estructura de núcleo monolítico, micronúcleo y núcleo híbrido

 

Sistemas operativos con micronúcleo

Entre los sistemas operativos con micronúcleo podemos citar:

  • AIX
  • AmigaOS
  • Amoeba
  • Minix
  • NeXTSTEP (algunos lo consideran un núcleo híbrido)
  • L4
  • Netkernel
  • RaOS
  • RadiOS
  • ChorusOS
  • QNX
  • SO3
  • Symbian
  • SymbOS

Fuente: Wikipedia

Seguir leyendo...

21 de junio de 2011

¿Qué es un Núcleo Monolítico?

Un núcleo monolítico es un tipo de núcleo o kernel de un sistema operativo. Como ejemplo de sistema operativo de núcleo monolítico están UNIX, Linux y FreeBSD.

Estos sistemas tienen un núcleo grande y complejo, que engloba todos los servicios del sistema. Está programado de forma no modular, y tiene un rendimiento mayor que un micro núcleo. Sin embargo, cualquier cambio a realizar en cualquier servicio requiere la recopilación del núcleo y el reinicio del sistema para aplicar los nuevos cambios.

Vista gráfica general de un núcleo monolítico Hay diversas ramificaciones de este diseño, que se han ido amoldando a nuevas necesidades. Podemos citar el sistema de módulos ejecutables en tiempo de ejecución, que le brinda al modelo de núcleo monolítico algunas de las ventajas de un micro núcleo.

Dichos módulos pueden ser compilados, modificados, cargados y descargados en tiempo de ejecución, de manera similar a los servicios de un micro núcleo, pero con la diferencia de que se ejecutan en el espacio de memoria del núcleo mismo (anillo 0). De esta forma, un bloqueo del módulo, es probable que bloquee todo el núcleo.

Además, el módulo pasa a formar un todo con el núcleo, usando la API del mismo, y no se emplea un sistema de mensajes como en los micro núcleos. Este es el esquema usado por, entre otros, Linux, FreeBSD y varios derivados de UNIX. Cabe resaltar que el paso constante de mensajes entre los servicios del micro núcleo, es en parte responsable del pobre rendimiento de los micro núcleos.

Un sistema operativo con núcleo monolítico concentra todas las funcionalidades posibles (planificación, sistema de archivos, redes, controladores de dispositivos, gestión de memoria, etc) dentro de un gran programa. El mismo puede tener un tamaño considerable, y deberá ser recompilado por completo al añadir una nueva funcionalidad. Todos los componentes funcionales del núcleo tienen acceso a todas sus estructuras de datos internas y a sus rutinas. Un error en una rutina puede propagarse a todo el núcleo.

La alternativa es tener una estructura de micro núcleo, donde las partes funcionales están divididas en unidades separadas con mecanismos de comunicación estrictos entre ellos.

Estructura de núcleo monolítico, micronúcleo y núcleo híbrido

 

Sistemas operativos con núcleos monolíticos

Entre los sistemas operativos que cuentan con núcleos monolíticos se encuentran:

  • Núcleos tipo Unix
    • Syllable
      • BSD (FreeBSD, NetBSD, OpenBSD)
      • Solaris
  • Núcleos tipo DOS
    • DR-DOS
    • MS-DOS
    • Familia Microsoft Windows 9x (95, 98, 98SE, Me)
  • Núcleos del Mac OS hasta Mac OS 8.6
  • OpenVMS
  • XTS-400

Fuente; Wikipedia

Seguir leyendo...

12 de junio de 2011

Multiprocesamiento Simétrico (SMP)

SMP es la sigla de Symmetric Multi-Processing, multiproceso simétrico. Se trata de un tipo de arquitectura de ordenadores en que dos o más procesadores comparten una única memoria central.

Arquitectura SMP

La arquitectura SMP (Multi-procesamiento simétrico, también llamada UMA, de Uniform Memory Access), se caracteriza por el hecho de que varios microprocesadores comparten el acceso a la memoria. Todos los microprocesadores compiten en igualdad de condiciones por dicho acceso, de ahí la denominación "simétrico".

Los sistemas SMP permiten que cualquier procesador trabaje en cualquier tarea sin importar su localización en memoria; con un propicio soporte del sistema operativo, estos sistemas pueden mover fácilmente tareas entre los procesadores para garantizar eficientemente el trabajo.

Una computadora SMP se compone de microprocesadores independientes que se comunican con la memoria a través de un bus compartido. Dicho bus es un recurso de uso común. Por tanto, debe ser arbitrado para que solamente un microprocesador lo use en cada instante de tiempo. Si las computadoras con un solo microprocesador tienden a gastar considerable tiempo esperando a que lleguen los datos desde la memoria, SMP empeora esta situación, ya que hay varios parados en espera de datos.

Multiproceso simétrico

Conceptos relacionados

Multiproceso simétrico, una de las formas más fáciles y baratas de aumentar el rendimiento del hardware es poner más de una CPU en la placa. Esto se puede realizar haciendo que CPUs diferentes tengan trabajos diferentes (multiproceso asimétrico) o haciendo que todos se ejecuten en paralelo, realizando el mismo trabajo (multiproceso simétrico o SMP). El hacer multiproceso asimétrico requiere un conocimiento especializado sobre las tareas que la computadora debe ejecutar, que no es fácilmente discernible en un sistema operativo de propósito general como Linux. En cambio el multiproceso simétrico es relativamente fácil de implementar.

En un entorno de multiproceso simétrico, las CPU comparten la misma memoria, y como resultado, el código que corre en una CPU puede afectar a la memoria usada por otra. No se puede estar seguro de que una variable que se ha establecido a un cierto valor en la línea anterior todavía tenga el mismo valor; la otra CPU puede modificar el valor de la variable. No es posible programar algo de esta manera.

En el caso de la programación de procesos esto no suele ser un problema, porque un proceso normalmente sólo se ejecutará en una CPU a la vez. El núcleo, sin embargo, podría ser llamado por diferentes procesos ejecutándose en CPUs diferentes.

En la versión 2.0.x del núcleo de Linux, esto no es un problema porque el núcleo entero está en un gran `spinlock'. Esto significa que si una CPU está dentro del núcleo y otra CPU quiere entrar en él, por ejemplo por una llamada al sistema, tiene que esperar hasta que la primera CPU haya acabado. Esto es lo que hace el SMP en Linux; es seguro, pero ineficiente.

En la versión 2.2.x, varias CPUs pueden estar dentro del núcleo al mismo tiempo. Esto es algo que los escritores de módulos deben tener en cuenta.

Fuente: Wikipedia

Seguir leyendo...