lunes, 18 de abril de 2011

Nomenclatura del kernel en Linux

Nomenclatura del kernel en Linux

Originalmente Linux era monolítico, es decir, como ya hemos comentado, todas las funcionalidades estaban incluidas en el código del núcleo y era necesario recompilarlo para soportar un nuevo dispositivo, etc. Sin embargo, esta idea no encaja con la enorme diversidad de componentes hardware que existen. Raro es que todo el mundo posea los mismos componentes en su ordenador y Linux, como buen sistema operativo Unix pretende obtener todo el partido de la máquina en la que se está ejecutando. Debido a todo esto, el diseño fue migrando paulatinamente a un modelo basado en módulos. Se procura así que el núcleo sea lo más ligero posible y cuando sea necesario añadir una nueva funcionalidad como soportar una nueva tarjeta de sonido, sólo haya que compilar el módulo y añadirlo al núcleo.


El kernel de Linux (Linux) está escrito en C y es código abierto licenciado bajo licencia GNU/GPL (excepto el planificador de recursos, el cual pertenece a Linus Torvalds y al resto de programadores que se han ocupado de dicha parte), con lo cual tenemos acceso al código para su estudio y/o modificación.

Núcleo de Windows 7 (MinWin)

Núcleo de Windows 7 (MinWin)

Windows 7 es el nombre seguramente provisional con el que han bautizado en Redmon como sucesor del actual Windows Vista, y el cual mostró su por ahora escaso potencial durante una charla en la Universidad de Illinois de la mano del encargado de diseño y desarrollo de los sistemas operativos Windows, Eric Traut.


El desarrollador ejecutó lo que llamó “Mini Win” formado únicamente por el kernel, sin interface gráfica y sin florituras ni añadidos. Esto es, que ahora mismo ocupa 25MB de espacio y 40MB de RAM, y tardó 20 segundos en arrancar.
En la demostración se ejecutaron tareas muy simples, pero se hizo una declaración de intenciones que no pintan nada bien. La primera es que salta a la Vista (valga la redundancia) que el actual sistema operativo de Microsoft es como una ballena con un problema de sobrepeso mórbido, y que quieren poner a dieta  el Windows 7. Esto significa que le van a quitar muchas cosas, y ahora falta saber qué le van a quitar que para todos los usuario sea prescindible. El segundo punto oscuro es que el próximo sistema operativo va a salir con toda la gama de versiones, con lo que implica el que si quieres más, paga más, con todos los riesgos que eso comporta si lo comparamos con el exitoso Windows Vista.
Windows 7 está previsto que salga a la luz en 2010; otra cosa es que se cumpla esta previsión.

Comparación entre el nucleo de Windows y Linux

Comparación entre el nucleo de Windows y Linux


La comparación de Microsoft Windows y Linux es un tema común de discusión entre sus usuarios. Windows es el sistema operativo más importante bajo una licencia propietaria de software, mientras que Linux es el sistema operativo más importante bajo una licencia libre de software. Sin embargo, la mayoría de los sitios de distribución de Linux también disponen de componentes propietarios (tales como los controladores compilados en blob binario, que proveen los fabricantes de hardware para su instalación normal).

Los dos sistemas operativos compiten por el usuario básico en el mercado de las computadoras personales así como el mercado de los servidores, y se utilizan en agencias del gobierno, escuelas, oficinas, hogares, servidores de intranet y de internet, supercomputadoras y sistemas integrados. Windows domina el mercado de las computadoras personales y de escritorio (90%).

Linux y Windows varían en filosofía, costo, facilidad de uso, flexibilidad y estabilidad, aunque ambas buscan mejorar en sus áreas débiles. Las comparaciones de los dos tienden a reflejar los orígenes, la base histórica del usuario y el modelo de distribución de cada una. Típicamente, algunas áreas mayores de debilidades percibidas regularmente citados han incluido el valor práctico "out-of-box" pobre del escritorio de Linux para el mercado popular y la estabilidad pobre de sistema para Windows. Ambos son áreas del desarrollo rápido en ambos campos.

Los defensores de software libre discuten que la fuerza clave de Linux es que respeta lo que ellos consideran ser las libertades esenciales de usuarios: la libertad de correrlo, estudiarlo y cambiarlo, y para redistribuir copias con o sin cambios.

Arquitectura de Windows y de Linux

Arquitectura de Windows y de Linux

Este es el esquema de la arquitectura de windows.


La cual está compuesta por una serie de componentes separados donde cada cual es responsable de sus funciones y brindan servicios a otros componentes. Esta arquitectura es del tipo cliente – servidor ya que los programas de aplicación son contemplados por el sistema operativo como si fueran clientes a los que hay que servir, y para lo cual viene equipado con distintas entidades servidoras.
Ya creado este diseño las demás versiones que le sucedieron a Windows NT fueron tomando esta arquitectura como base y le fueron adicionando nuevos componentes.
Uno de las características que Windows comparte con el resto de los Sistemas Operativos avanzados es la división de tareas del Sistema Operativo en múltiples categorías, las cuales están asociadas a los modos actuales soportados por los microprocesadores. Estos modos proporcionan a los programas que corren dentro de ellos diferentes niveles de privilegios para acceder al hardware o a otros programas que están corriendo en el sistema. Windows usa un modo privilegiado (Kernel) y un modo no privilegiado (Usuario).
Uno de los objetivos fundamentales del diseño fue el tener un núcleo tan pequeño como fuera posible, en el que estuvieran integrados módulos que dieran respuesta a aquellas llamadas al sistema que necesariamente se tuvieran que ejecutar en modo privilegiado (modo kernel). El resto de las llamadas se expulsarían del núcleo hacia otras entidades que se ejecutarían en modo no privilegiado (modo usuario), y de esta manera el núcleo resultaría una base compacta, robusta y estable.
El Modo Usuario es un modo menos privilegiado de funcionamiento, sin el acceso directo al hardware. El código que corre en este modo sólo actúa en su propio espacio de dirección. Este usa las APIs (System Application Program Interfaces) para pedir los servicios del sistema.
El Modo Kernel es un modo muy privilegiado de funcionamiento, donde el código tiene el acceso directo a todo el hardware y toda la memoria, incluso a los espacios de dirección de todos los procesos del modo usuario. La parte de WINDOWS que corre en el modo Kernel se llama Ejecutor de Windows, que no es más que un conjunto de servicios disponibles a todos los componentes del Sistema Operativo, donde cada grupo de servicios es manipulado por componentes que son totalmente independientes (entre ellos el Núcleo) entre sí y se comunican a través de interfaces bien definidas.
Todos los programas que no corren en Modo Kernel corren en Modo Usuario. La mayoría del código del Sistema Operativo corre en Modo Usuario, así como los subsistemas de ambiente (Win32 y POSIX que serán explicados en capítulos posteriores) y aplicaciones de usuario. Estos programas solamente acceden a su propio espacio de direcciones e interactúan con el resto del sistema a través de mensajes Cliente/Servidor.
Arquitectura de Linux
Actualmente Linux es un núcleo monolítico híbrido. Los controladores de dispositivos y las extensiones del núcleo normalmente se ejecutan en un espacio privilegiado conocido como anillo 0 (ring 0), con acceso irrestricto al hardware, aunque algunos se ejecutan en espacio de usuario. A diferencia de los núcleos monolíticos tradicionales, los controladores de dispositivos y las extensiones al núcleo se pueden cargar y descargar fácilmente como módulos, mientras el sistema continúa funcionando sin interrupciones. También, a diferencia de los núcleos monolíticos tradicionales, los controladores pueden ser prevolcados (detenidos momentáneamente por actividades más importantes) bajo ciertas condiciones. Esta habilidad fue agregada para gestionar correctamente interrupciones de hardware, y para mejorar el soporte de multiprocesamiento simétrico.


FUNCION DE UN KERNEL

FUNCION DE UN KERNEL

Los núcleos tienen como funciones básicas garantizar la carga y la ejecución de los procesos, las entradas/salidas y
proponer un interfaz entre el espacio núcleo y los programasdel espacio del usuario. Aparte de las funcionalidades   básicas, el conjunto de las funciones de los puntos siguientes (incluidos los pilotos materiales, las funciones de redes y sistemas de ficheros o los servicios) necesariamente no son proporcionados por un núcleo de sistema de explotación. Pueden establecerse estas funciones del sistema de explotación tanto en el espacio usuario como en el propio núcleo. Su implantación en el núcleo se hace en el único objetivo de mejorar los resultados.
En efecto, según la concepción del núcleo, la misma función llamada desde el espacio usuario o el espacio núcleo tiene un coste temporal obviamente diferente. Si esta llamada de función es frecuente, puede resultar útil integrar estas
funciones al núcleo para mejorar los resultados.

SISTEMAS DE ARCHIVOS

SISTEMAS DE ARCHIVOS

Un sistema de archivos son los métodos y estructuras de datos que un sistema operativo utiliza para seguir la pista de los archivos de un disco o partición; es decir, es la manera en la que se organizan los archivos en el disco. El término también es utilizado para referirse a una partición o disco que se está utilizando para almacenamiento, o el tipo del sistema de archivos que utiliza. Así uno puede decir “tengo dos sistemas de archivo” refiriéndose a que tiene dos particiones en las que almacenar archivos, o que uno utiliza el sistema de “archivos extendido”, refiriéndose al tipo del sistema de archivos.

La diferencia entre un disco o partición y el sistema de archivos que contiene es importante. Unos pocos programas (incluyendo, razonablemente, aquellos que crean sistemas de archivos) trabajan directamente en los sectores crudos del disco o partición; si hay un archivo de sistema existente allí será destruido o corrompido severamente. La mayoría de programas trabajan sobre un sistema de archivos, y por lo tanto no utilizarán una partición que no contenga uno (o que contenga uno del tipo equivocado).

Antes de que una partición o disco sea utilizada como un sistema de archivos, necesita ser iniciada, y las estructura de datos necesitan escribirse al disco. Este proceso se denomina construir un sistema de archivos..

Cargadores de arranque para GNU/Linux

Cargadores de arranque para GNU/Linux

LILO: es un gestor de arranque que permite elegir, entre sistemas operativos Linux y otras plataformas, con cual se ha de trabajar al momento de iniciar un equipo con más de un sistema operativo disponible.

LILO funciona en una variedad de sistemas de archivos y puede arrancar un sistema operativo desde el disco duro o desde un disco flexible externo. LILO permite seleccionar entre 16 imágenes en el arranque. LILO puede instalarse también en el master boot record (MBR).

GRUB: En computación es un administrador o gestor de arranque múltiple, desarrollado por el proyecto GNU, que se usa comúnmente para iniciar uno de dos o más sistemas operativos instalados en un mismo equipo. Se usa principalmente en sistemas operativos GNU/Linux. El Sistema Operativo Solaris ha usado GRUB como gestor de arranque en sistemas x86.