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...

4 de junio de 2011

¿Qué es GNU/Linux?: Definición e Historia de GNU Linux

GNU/Linux es uno de los términos empleados para referirse a la combinación del núcleo o kernel libre similar a Unix denominado Linux, que es usado con herramientas de proyecto GNU. Su desarrollo es uno de los ejemplos más prominentes de software libre; todo su código fuente puede ser utilizado, modificado y redistribuido libremente por cualquiera bajo los términos de la GPL (Licencia Pública General de GNU, en inglés: General Public License) y otra serie de licencias libres.

GNU Linux A pesar de que Linux es, en sentido estricto, el sistema operativo, parte fundamental de la interacción entre el núcleo y el usuario (o los programas de aplicación) se maneja usualmente con las herramientas del proyecto GNU o de otros proyectos como GNOME. Sin embargo, una parte significativa de la comunidad, así como muchos medios generales y especializados, prefieren utilizar el término Linux para referirse a la unión de ambos proyectos.

A las variantes de esta unión de programas y tecnologías, a las que se les adicionan diversos programas de aplicación de propósitos específicos o generales se las denomina distribuciones. Su objetivo consiste en ofrecer ediciones que cumplan con las necesidades de un determinado grupo de usuarios. Algunas de ellas son especialmente conocidas por su uso en servidores y supercomputadoras, donde tiene la cuota más importante del mercado.

Según un informe de IDC, GNU/Linux es utilizado por el 78% de los principales 500 servidores del mundo, otro informe le da una cuota de mercado de 89% en los 500 mayores supercomputadores. Con menor cuota de mercado el sistema GNU/Linux también es usado en el segmento de las computadoras de escritorio, portátiles, computadoras de bolsillo, teléfonos móviles, sistemas embebidos, videoconsolas y otros dispositivos.

 

Etimología de GNU/Linux

Richard StallmanEl nombre GNU, GNU's Not Unix (GNU no es Unix), viene de las herramientas básicas de sistema operativo creadas por el proyecto GNU, iniciado por Richard Stallman en 1983 y mantenido por la FSF. El nombre Linux viene del núcleo Linux, inicialmente escrito por Linus Torvalds en 1991.

La contribución de GNU es la razón por la que existe controversia a la hora de utilizar Linux o GNU/Linux para referirse al sistema operativo formado por las herramientas de GNU y el núcleo Linux en su conjunto.

 

Historia

El proyecto GNU, que se inició en 1983 por Richard Stallman; tiene como objetivo el desarrollo de un sistema operativo Unix completo y compuesto enteramente de software libre. La historia del núcleo Linux está fuertemente vinculada a la del proyecto GNU. En 1991 Linus Torvalds empezó a trabajar en un reemplazo no comercial para MINIX que más adelante acabaría siendo Linux.

Linus TorvaldsCuando Torvalds liberó la primera versión de Linux, el proyecto GNU ya había producido varias de las herramientas fundamentales para el manejo del sistema operativo, incluyendo un intérprete de comandos, una biblioteca C y un compilador, pero como el proyecto contaba con una infraestructura para crear su propio núcleo (o kernel), el llamado Hurd, y este aún no era lo suficiente maduro para usarse, comenzaron a usar a Linux a modo de continuar desarrollando el proyecto GNU, siguiendo la tradicional filosofía de mantener cooperatividad entre desarrolladores. El día en que se estime que Hurd es suficiente maduro y estable, será llamado a reemplazar a Linux.

Entonces, el núcleo creado por Linus Torvalds, quien se encontraba por entonces estudiando en la Universidad de Helsinki, llenó el "espacio" final que había en el sistema operativo de GNU.

 

Componentes del sistema GNU/Linux

Entorno gráfico

Linux puede funcionar tanto en entorno gráfico como en modo consola. La consola es común en distribuciones para servidores, mientras que la interfaz gráfica está orientada al usuario final tanto de hogar como empresarial. Un escritorio es un conjunto de elementos conformado por ventanas, iconos y similares que facilitan la utilización del computador.

Los escritorios más populares en Linux, en orden alfabético son Android (debido a su éxito comercial en teléfonos móviles y tablets), GNOME, KDE, LXDE y Xfce. Intel anunció productos de consumo basados en MeeGo para mediados del 2011, por lo que es probable que este entorno tenga una creciente importancia en los próximos años.

 

Escritorio GNOME 3.0.1 Escritorio KDE 4.6
Escritorio GNOME 3.0.1 Escritorio KDE 4.6
Escritorio LXDE 0.5.0 Escritorio XFCE 4.4
Escritorio LXDE 0.5.0 Escritorio XFCE 4.4
GNU/Linux como sistema de programación

La colección de utilidades para la programación de GNU es con diferencia la familia de compiladores más utilizada en este sistema operativo. Tiene capacidad para compilar C, C++, Java, Ada, entre otros muchos lenguajes. Además soporta diversas arquitecturas mediante la compilación cruzada, lo que hace que sea un entorno adecuado para desarrollos heterogéneos.

Hay varios entornos de desarrollo integrados disponibles para GNU/Linux incluyendo, Anjuta, KDevelop, Ultimate++, Code::Blocks, NetBeans IDE y Eclipse. También existen editores extensibles como Emacs o Vim. GNU/Linux también dispone de capacidades para lenguajes de guion (script), aparte de los clásicos lenguajes de programación de shell, o el de procesado de textos por patrones y expresiones regulares llamado awk, la mayoría de las distribuciones tienen instalado Python, Perl, PHP y Ruby.

Aplicaciones de usuario

Las aplicaciones para Linux se distribuyen principalmente en los formatos.deb y.rpm, los cuales fueron creados por los desarrolladores de Debian y Red Hat respectivamente. También existe la posibilidad de instalar aplicaciones a partir de código fuente en todas las distribuciones.

Software de código cerrado para GNU/Linux

Durante la etapa temprana había pocas aplicaciones de código cerrado para GNU/Linux. Con el tiempo se fueron portando programas no libres al sistema GNU/Linux, entre ellos Adobe Reader, Adobe Flash, Google Picasa, Opera, entre otros.

 

Empresas que patrocinan el uso de GNU/Linux

Con la adopción por numerosas empresas fabricantes, un buen número de computadoras se venden con distribuciones pre-instaladas, y GNU/Linux ha comenzado a tomar su lugar en el vasto mercado de las computadoras de escritorio.

Algunas de las empresas que colaboran en la difusión de este sistema operativo ya sea trabajando en el núcleo Linux, proporcionando soluciones de software o preinstalando el sistema operativo, son: Intel, Google, IBM, AMD, Sun Microsystems, Dell, Lenovo, Asus, Hewlett-Packard (HP), Silicon Graphics International (SGI), Renesas Technology, Fujitsu, Analog Devices, Freescale, VIA Technologies, Oracle, Novell y RedHat, entre otras.

El respaldo de compañías de software también está presente, ya que, entre otras aplicaciones, Nero, Java, Google Earth, Google Desktop,Adobe Reader, Adobe Flash, RealPlayer y Yahoo! Messenger están disponibles para GNU/Linux.

 

Cuota de mercado de GNU/Linux

Numerosos estudios cuantitativos sobre software de código abierto están orientados a tópicos como la cuota de mercado y la fiabilidad, y ciertamente muchos de estos estudios examinan específicamente a GNU/Linux.

La medición "cuota de mercado" puede resultar inservible ya que es un concepto basado en ventas comerciales (unidades materiales vendidas). Por otro lado Linux es utilizado frecuentemente en servidores con acceso público desde Internet por lo que la cuota de mercado es extremadamente inferior a la cuota de uso.

Baste notar, p.ej, que Facebook, Gmail, LinkedIn o Yahoo funcionan sobre servidores GNU/Linux, de forma que aún cuando estemos accediendo desde un navegador ejecutándose en Windows/Mac, la aplicación real se está ejecutando en servidores Linux y los datos están almacenándose igualmente en dichos servidores.

 

Argumentos en favor de GNU/Linux

La creciente popularidad de GNU/Linux se debe, entre otras razones, a su estabilidad, al acceso al código fuente (lo que permite personalizar el funcionamiento y auditar la seguridad y privacidad de los datos tratados), a la independencia de proveedor, a la seguridad, a la rapidez con que incorpora los nuevos adelantos tecnológicos (IPv6, microprocesadores de 64 bits), a la escalabilidad (se pueden crear clusters de cientos de computadoras), a la activa comunidad de desarrollo que hay a su alrededor, a su interoperabilidad y a la abundancia de documentación relativa a los procedimientos.

IBM Roadrunner, la supercomputadora más potente de 2008, funciona bajo una distribución GNU/Linux Red Hat Enterprise Linux.

Hay varias empresas que comercializan soluciones basadas en GNU/Linux: IBM, Novell (SuSE), Red Hat (RHEL), Mandriva (Mandriva Linux),Rxart, Canonical Ltd. (Ubuntu), así como miles de PYMES que ofrecen productos o servicios basados en esta tecnología.

 

Aplicaciones de GNU/Linux

Supercomputadoras

Dentro del segmento de supercomputadoras, a noviembre de 2009, el uso de este sistema ascendió al 89,2% de las computadoras más potentes del mundo por su confiabilidad, seguridad y libertad para modificar el código. De acuerdo con TOP500.org, que lleva estadísticas sobre las 500 principales supercomputadoras del mundo, a noviembre de 2009: 446 usaban una distribución basada en GNU/Linux, 25 Unix, 23 mezclas, 1 BSD y 5 Windows.

Las primeras 19 supercomputadoras, incluidas la número 1 la Jaguar, Cray XT5-HE con 224,162 procesadores utilizan distribuciones basadas en GNU/Linux.

GNU/Linux, además de liderar el mercado de servidores de Internet debido, entre otras cosas, a la gran cantidad de soluciones que tiene para este segmento, tiene un crecimiento progresivo en computadoras de escritorio y portátiles. Además, es el sistema base que se ha elegido para el proyecto OLPC: One Laptop Per Child.

Supercomputadora IBM Roadrunner

Smartphones

Linux tiene un papel imprescindible en el territorio de los smartphones debido a que Android lo utiliza. Actualmente Android es el sistema operativo predominante en los nuevos smartphones y su cuota de mercado mundial supera hasta el iOS de Apple.

Administración Pública

Hay una serie de administraciones públicas que han mostrado su apoyo al software libre, sea migrando total o parcialmente sus servidores y sistemas de escritorio, sea subvencionándolo. Como ejemplos se tiene a Alemania, Argentina, Australia, Brasil, España, Chile, China, Cuba, México, Perú, República Dominicana, Ecuador, El Salvador,Uruguay o Venezuela.

 

Denominación GNU/Linux

Parte de la comunidad y numerosos medios prefieren denominar a esta combinación como Linux, aunque GNU/Linux (con las variantes GNU con Linux y GNU+Linux) es la denominación defendida por el Proyecto GNU y la FSF junto con otros desarrolladores y usuarios para el conjunto que utiliza el sistema operativo Linux en conjunto con las aplicaciones de sistema creadas por el proyecto GNU y por muchos otros proyectos de software.

Desde 1984, Richard Stallman y muchos voluntarios están intentando crear un sistema operativo libre con un funcionamiento similar al UNIX, recreando todos los componentes necesarios para tener un sistema operativo funcional. A comienzos de los años 90, unos seis años desde el inicio del proyecto, GNU tenía muchas herramientas importantes listas, como editores de texto, compiladores, depuradores, intérpretes de comandos de órdenes etc., excepto por el componente central: el núcleo.

GNU tenía su propio proyecto de núcleo, llamado Hurd. Sin embargo, su desarrollo no continuó como se esperaba al aparecer el núcleo Linux. De esta forma se completaron los requisitos mínimos y surgió el sistema operativo GNU que utilizaba el núcleo Linux.

El principal argumento de los defensores de la denominación GNU/Linux es resolver la posible confusión que se puede dar entre el núcleo (Linux) y gran parte de las herramientas básicas del resto del sistema operativo (GNU). Además, también se espera que, con el uso del nombre GNU, se dé al proyecto GNU el reconocimiento por haber creado las herramientas de sistema imprescindibles para ser un sistema operativo compatible con UNIX, y se destaque la cualidad de estar compuesto sólo por software libre.

La primera distribución que incluyó el GNU en su nombre fue Yggdrasyl en 1992, donde aparecía como Linux/GNU/X. La FSF denominó a este sistema "Linux" hasta al menos junio de 1994 y recién a partir de enero de 1995 empezó a llamarlo "GNU/Linux" (también GNU+Linux y lignux, términos que han caído en desuso a instancias del propio Stallman).

Algunas distribuciones apoyan esta denominación, e incluyen GNU/Linux en sus nombres, como Debian GNU/Linux o GNU/LinEx, mientras que otras, como Slackware, Gentoo o Ubuntu, eligen denominarse basadas en Linux.

En ocasiones, el proyecto KDE ha utilizado una tercera denominación: GNU/Linux/X para enfatizar los tres proyectos sobre los que se apoya su entorno de escritorio.

Fuente: Wikipedia

Seguir leyendo...