martes, 2 de diciembre de 2008

Linux:



(Núcleo)


Linux es el núcleo o kernel del sistema operativo libre denominado GNU/Linux (también llamado Linux). Lanzado bajo la licencia pública general (GPL - General Public License) de GNU y desarrollado gracias a contribuciones provenientes de todo el mundo, Linux es uno de los mejores ejemplos de software libre cuyos desarrolladores originales siguieron la filosofía de ese movimiento.

Linux fue creado por Linus Torvalds en 1991. Muy pronto, la comunidad de Minix (un clon del sistema operativo Unix) contribuyó en el código y en ideas para el núcleo de Linux. Por aquel entonces, el Proyecto GNU ya había creado muchos de los componentes necesarios para obtener un sistema operativo libre, pero su propio núcleo (GNU Hurd) era incompleto y por lo tanto no podían conseguir un sistema libre totalmente funcional. Es por esto que a pesar de las funcionalidades limitadas de la primera versión, rápidamente Linux fue acumulando desarrolladores y usuarios que adoptaron el código de estos proyectos para usar con el nuevo sistema operativo. Hoy en día el núcleo de Linux ha recibido contribuciones de miles de programadores.

                                                                                        

Aspectos técnicos

Linux admite multitarea real "preemptive" (en los modos de usuario y de núcleo), memoria virtual, bibliotecas compartidas, carga por demanda, shares copy-on-write executables, manejo de memoria, la pila de TCP/IP e hilos múltiples.

 

Jerarquía de directorios

En linux existe un sistema de archivos que carga y contiene todos los directorios, redes, programas, particiones, dispositivos, etc. que el sistema sabe reconocer, o por lo menos, identificar. Este sistema de ficheros y directorios, tiene como base al carácter (/); ese mismo carácter sirve también para demarcar los directorios, como por ejemplo: "/home/usuario/imagen.jpg". El directorio especificado por una ruta consistente sólo por este carácter contiene toda la jerarquía de los directorios que constituyen todo el sistema. A este directorio suele llamárselo directorio raíz. En linux, a los discos no se les asigna una letra como en Windows (p.e. "C:"), sino que se les asigna un directorio de la jerarquía del directorio raíz (/), como por ejemplo: "/media/floppy". Es práctica común en el sistema de ficheros de linux, utilizar varias sub-jerarquías de directorios, según las diferentes funciones y estilos de utilización de los archivos.4 Estos directorios pueden clasificarse en:

§                     Estáticos: Contiene archivos que no cambian sin la intervención del administrador (root), sin embargo, pueden ser leídos por cualquier otro usuario. (/bin, /sbin, /opt, /boot, /usr/bin...)

§                     Dinámicos: Contiene archivos que son cambiantes, y pueden leerse y escribirse (algunos solo por su respectivo usuario y el root). Contienen configuraciones, documentos, etc. Para estos directorios, es recomendable una copia de seguridad con frecuencia, o mejor aún, deberían ser montados en una partición aparte en el mismo disco, como por ejemplo, montar el directorio /home en otra partición del mismo disco, independiente de la partición principal del sistema; de esta forma, puede repararse el sistema sin afectar o borrar los documentos de los usuarios. (/var/mail, /var/spool, /var/run, /var/lock, /home...)

§                     Compartidos: Contiene archivos que se pueden encontrar en un ordenador y utilizarse en otro, o incluso compartirse entre usuarios.

§                     Restringidos: Contiene ficheros que no se pueden compartir, solo son modificables por el administrador. (/etc, /boot, /var/run, /var/lock...)

 

Kernel panic

En Linux, un “panic” es un error insalvable del sistema detectado por el núcleo en oposición a los errores similares detectados en el código del espacio de usuario. Es posible para el código del núcleo indicar estas condiciones mediante una llamada a la función de pánico situada en el archivo header sys/system.h. Sin embargo, la mayoría de las alertas son el resultado de excepciones en el código del núcleo que el procesador no puede manejar, como referencias a direcciones de memorias inválidas. Generalmente esto es indicador de la existencia de un bug en algún lugar de la cadena de alerta. También pueden indicar una falla en el hardware como una falla del RAM o errores en las funciones aritméticas en el procesador, o por un error en el software. En muchas ocasiones es posible reiniciar o apagar adecuadamente el núcleo mediante una combinación de teclas como ALT+SysRq+RSEIUB.

 

Lenguajes de Programación

Linux está escrito en el lenguaje de programación C, en la variante utilizada por el compilador GCC (que ha introducido un número de extensiones y cambios al C estándar), junto a unas pequeñas secciones de código escritas con el lenguaje ensamblador. Por el uso de sus extensiones al lenguaje, GCC fue durante mucho tiempo el único compilador capaz de construir correctamente Linux. Sin embargo, Intel afirmó haber modificado su compilador C de forma de poder compilarlo correctamente.

Asimismo se usan muchos otros lenguajes en alguna forma, básicamente en la conexión con el proceso de construcción del núcleo (el método a través del cual las bootable image son creadas desde la source). Estos incluyen a Perl, Python y varios lenguajes shell scripting. Algunos drivers también pueden ser escritos en C++, Fortran, u otros lenguajes, pero esto no es aconsejable. El sistema de construcción de Linux oficialmente solo soporta GCC como núcleo y compilador de controlador.

 

Portabilidad

Aún cuando Linus Torvalds no ideó originalmente Linux como un sistema Portable, ha evolucionado en esa dirección. Linux es ahora de hecho, uno de los núcleos de sistema operativo más ampliamente portados, y funciona en sistemas muy diversos que van desde iPAQ (una handheld) hasta un zSeries (un main frame masivo, muy costoso). Está planeado que Linux sea el sistema operativo principal de las nuevas súper computadoras de IBM, Blue Gene cuando su desarrollo se complete.

De todos modos, es importante notar que los esfuerzos de Torvalds también estaban dirigidos a un tipo diferente de portabilidad. Según su punto de vista, la portabilidad es la habilidad de compilar fácilmente en un sistema aplicaciones de los orígenes más diversos; así, la popularidad original de Linux se debió en parte al poco esfuerzo necesario para tener funcionando las aplicaciones favoritas de todos, ya sean GPL o de Código abierto.

 

Arquitectura de máquina virtual

El núcleo de Linux puede correr sobre muchas arquitecturas de máquina virtual, tanto como host del sistema operativo o como cliente. La máquina virtual usualmente emula la familia de procesadores Intel x86, aunque en algunos casos también son emulados procesadores de Power PC o AMD.

 

Versiones

Más allá de haber desarrollado su propio código y de integrar los cambios realizados por otros programas, Linus Torvalds continua lanzando nuevas versiones del núcleo Linux. Estos son llamados núcleos “vanilla”, lo que significa que no han sido modificados por nadie. Muchos vendedores de sistemas operativos basados en el núcleo Linux modifican dicho núcleo en sus productos, principalmente para agregarle soporte a dispositivos o herramientas que no fueron oficialmente lanzadas como estables, mientras que algunas distribuciones, como Slackware, mantienen el núcleo vanilla.




6 comentarios:

carlos balladares dijo...

sta bakn tu blog sta super bakan te felicito......

Unknown dijo...

chevere el blog.. informativo! jeje

Javier dijo...

ya q se parece al de tu hi5
el profe ve todo de tu perfil
y tus amigas q no veo a nadie!
ja ja ja
ya pos nos vemos....

Josefrancoren dijo...

jajjaa esta chevere tu pagina jajjaja jajja sigue asi jajjaa

mikal dijo...

hola

ta vacam ese tema pa que el mio ta mejor. . . . .

soundgarden dijo...

ta aburrido
tu tema
no paro
esta muy bien
sigue asi