martes, 29 de mayo de 2012

Aplicaciones



     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 IDEy 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 llamadoawk, la mayoría de las distribuciones tienen instalado Python, Perl, PHP y Ruby.


Interface

     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. Asimismo, también existen los entornos de escritorio, que son un conjunto de programas conformado por ventanas, iconos y muchas aplicaciones que facilitan la utilización del computador. Los escritorios más populares en GNU/Linux son: GNOME, KDE, LXDE y Xfce. En dispositivos móviles se encuentra Android, que funciona sobre el núcleo Linux, pero no usa las herramientas GNU. Intel anunció productos de consumo basados en MeeGo para mediados del 2011, por lo que es probable que este entorno tenga también una creciente importancia en los próximos años.


Características





      GNU/Linux es un sistema operativo multitarea, multiusuario y multiplataforma. Pueden ejecutarse varias tareas al mismo tiempo y varios usuarios conectados al mismo tiempo cada uno ejecutando sus propias aplicaciones. Además puede ejecutarse en una gran variedad de microprocesadores y plataformas distintas.
EXT2 (Second Extended Filesystem) es el sistema de archivos predeterminado de GNU/Linux, aunque se puede optar por otros. EXT2 fue diseñado para evolucionar desde su concepción, a la vez de ofrecer gran robustez y muy buen rendimiento. EXT2 puede manejar permisos, nombres de archivos largos, montar otras particiones, etc. EXT2 respeta las normativas usuales para los sistemas de archivos de tipo UNIX. En estos momentos se encuentra disponible EXT3 (Third Extended Filesystem), el cuál incorpora numerosas mejoras, como por ejemplo la característica journaling, además es compatible con EXT2. Otros sistemas de archivos que se pueden emplear son: ReiserFS y JFS.
El entorno básico del sistema operativo GNU/Linux es la línea de comando, que se ejecuta en una terminal virtual. GNU/Linux permite ejecutar hasta siete terminales virtuales, que pueden ser comandadas por usuarios distintos. El funcionamiento básico de la línea de comando es el siguiente: El interprete de comando (generalmente BASH, aunque puede ser otro) tiene la función de mostrar un prompt en pantalla a la espera de que el usuario ingrese un comando para luego informárselo al sistema.


GNU/Linux también posee un poderoso entorno gráfico llamado X Window System basado en el modelo cliente-servidor, el cual soporta conexiones de red locales y a través del protocolo TCP/IP en forma transparentes. En la mayoría de los casos los programas que hacen peticiones como clientes se ejecutan en la misma maquina que el servidor X, pero también los programas clientes pueden estar ejecutándose en otras maquinas, incluso con diferentes arquitecturas y sistemas operativos. Otras formas de denominar a X Window System son: X, X11 ó X Version 11. Para que el entono gráfico X funcione, GNU/Linux emplea un servidor X llamado XFree86. El entorno gráfico X solo es un complejo sistemas de ventanas, es decir solo se limita a ejecutar procesos y mostrarlos en pantalla. Para realizar las tareas habituales se utilizan en conjunto Gestores de Ventanas (Fvwm, Fvwm-95, Afterstep, Windowmarker, Enlightenment, etc.) y Gestores de Escritorio (KDE, Gnome, etc), los cuales brindan una apariencia muy amigable.


Lista de las Caracteristicas de GNU/Linux.
  • multitarea: varios programas (realmente procesos) ejecutándose al mismo tiempo.
  • multiusuario: varios usuarios en la misma máquina al mismo tiempo (¡y sin licencias para todos!).
  • multiplataforma: corre en muchas CPUs distintas, no sólo Intel.
  • funciona en modo protegido 386.
  • tiene protección de la memoria entre procesos, de manera que uno de ellos no pueda colgar el sistema.
  • carga de ejecutables por demanda: Linux sólo lee de disco aquellas partes de un programa que están siendo usadas actualmente.
  • política de copia en escritura para la compartición de páginas entre ejecutables: esto significa que varios procesos pueden usar la misma zona de memoria para ejecutarse. Cuando alguno intenta escribir en esa memoria, la página (4Kb de memoria) se copia a otro lugar. Esta política de copia en escritura tiene dos beneficios: aumenta la velocidad y reduce el uso de memoria.
  • memoria virtual usando paginación (sin intercambio de procesos completos) a disco: una partición o un archivo en el sistema de archivos, o ambos, con la posibilidad de añadir más áreas de intercambio sobre la marcha (se sigue denominando intercambio, es en realidad un intercambio de páginas). Un total de 16 zonas de intercambio de 128Mb de tamaño máximo pueden ser usadas en un momento dado con un límite teórico de 2Gb para intercambio.
  • la memoria se gestiona como un recurso unificado para los programas de usuario y para el caché de disco, de tal forma que toda la memoria libre puede ser usada para caché y éste puede a su vez ser reducido cuando se ejecuten grandes programas.
  • librerías compartidas de carga dinámica (DLL's) y librerías estáticas también, por supuesto.
  • se realizan volcados de estado (core dumps) para posibilitar los análisis post-mortem, permitiendo el uso de depuradores sobre los programas no sólo en ejecución sino también tras abortar éstos por cualquier motivo.
  • casi totalmente compatible con POSIX, System V y BSD a nivel fuente.
  • mediante un módulo de emulación de iBCS2, casi completamente compatible con SCO, SVR3 y SVR4 a nivel binario.
  • todo el código fuente está disponible, incluyendo el núcleo completo y todos los drivers, las herramientas de desarrollo y todos los programas de usuario; además todo ello se puede distribuir libremente. Hay algunos programas comerciales que están siendo ofrecidos para Linux actualmente sin código fuente, pero todo lo que ha sido gratuito sigue siendo gratuito.
  • control de tareas POSIX.
  • pseudo-terminales (pty's).
  • emulación de 387 en el núcleo, de tal forma que los programas no tengan que hacer su propia emulación matemática. Cualquier máquina que ejecute Linux parecerá dotada de coprocesador matemático. Por supuesto, si tu ordenador ya tiene una FPU (unidad de coma flotante), será usada en lugar de la emulación, pudiendo incluso compilar tu propio kernel sin la emulación matemática y conseguir un pequeño ahorro de memoria.
  • soporte para muchos teclados nacionales o adaptados y es bastante fácil añadir nuevos dinámicamente.
  • consolas virtuales múltiples: varias sesiones de login a través de la consola entre las que se puede cambiar con las combinaciones adecuadas de teclas (totalmente independiente del hardware de video). Se crean dinámicamente y puedes tener hasta 64.
  • soporte para varios sistemas de archivo comunes, incluyendo minix-1, Xenix y todos los sistemas de archivo típicos de System V, y tiene un avanzado sistema de archivos propio con una capacidad de hasta 4 Tb y nombres de archivos de hasta 255 caracteres de longitud.
  • acceso transparente a particiones MS-DOS (o a particiones OS/2 FAT) mediante un sistema de archivos especial: no necesitas ningún comando especial para usar la partición MS-DOS, parece un sistema de archivos normal de Unix (excepto por algunas graciosas restricciones en los nombres de archivo, permisos, y esas cosas). Las particiones comprimidas de MS-DOS 6 no son accesibles en este momento, y no se espera que lo sean en el futuro. Soporte para VFAT (WNT, Windows 95)
  • un sistema de archivos especial llamado UMSDOS que permite que Linux sea instalado en un sistema de archivos DOS.
  • soporte en sólo lectura de HPFS-2 del OS/2 2.1
  • sistema de archivos de CD-ROM que lee todos los formatos estándar de CD-ROM.
  • TCP/IP, incluyendo ftp, telnet, NFS, etc.
  • Appletalk disponible en el actual núcleo.
  • software cliente y servidor Netware disponible en los núcleos de desarrollo.


Origen

En 1983 Richard Stallman inició el Proyecto GNU, con el propósito de crear un sistema operativo similar y compatible con UNIX y los estándares POSIX. Dos años más tarde, 1985, creó la Fundación del Software Libre (FSF) y desarrolló la Licencia pública general de GNU (GNU GPL), para tener un marco legal que permitiera difundir libremente el software. De este modo el software de GNU fue desarrollado muy rápidamente, y por muchas personas. A corto plazo, se desarrolló una multiplicidad de programas, de modo que a principios de los años 1990 había casi bastante software disponible como para crear un sistema operativo completo. Sin embargo, todavía le faltaba un núcleo.
Esto debía ser desarrollado en el proyecto GNU Hurd, pero Hurd demostró desarrollarse muy inactivamente, porque encontrar y reparar errores (eliminación de fallos, debugging en inglés) era muy difícil, debido a las características técnicas del diseño del micronúcleo.
Otro proyecto de sistema operativo software libre, en los años 1980 fue BSD. Este fue desarrollado en la Universidad de Berkeley desde la 6ª edición de Unix de AT&T. Puesto que el código de AT&T Unix estaba contenido en BSD, AT&T presentó una demanda a principios de los años 1990 contra la Universidad de Berkeley, la cual limitó el desarrollo de BSD y redujo el desarrollo. Así a principios de los años 1990 no produjo ningún sistema completo libre.
El futuro de BSD era incierto debido al pleito y detuvo el desarrollo. Además, el Proyecto GNU gradualmente se desarrollaba pero, este carecía de un bien formado núcleo UNIX. Esto dejó un nicho crítico abierto, que Linux llenaría muy pronto