Introducción a Linux Linux - Introducción Linux es un sistema operativo del tipo Unix creado por Linus Torvalds con la ayuda de desarrolladores y programadores alrededor del mundo. Linux es una aplicación POSIX1 independiente e incluye el verdadero multitasking (multitarea), memoria virtual, bibliotecas compartidas, carga en demanda, administrador apropiado de memoria, TCP/IP networking, y otros rasgos comparables con los sistemas del tipo Unix2. Desarrollado bajo la GNU3 General Public License, el código para Linux esta disponible para todos. Hay muchos distribuidores de Linux, o versiones. Una "distribución" es el compilado del código fuente de Linux, normalmente combinado con extras y software. Algunas distribuciones están disponibles para bajar de internet sin ningún cargo mientras otras están disponibles a precios económicos en CD-ROM en minoristas de Linux mundiales. Otras opciones incluyen Linux preinstalado en una computadora, o comprando un libro sobre Linux viene el CD-ROM de regalo. Cada distribución tiene su propio propósito, y varios factores deben tomarse antes de decidir que distribución es mejor para cada usuario. Algunas distribuciones satisfacen bien a los usuarios en el hogar, otros son excelentes para usos comerciales. Algunos están mejor preparados para Intel y otras para Macintosh o PC, otros son excelentes para el uso en computadoras de alto rendimiento y requerimiento. Las distribuciones más conocidas son RedHat, Debian, Slackware, SuSE y Mandrake, todas ellas incluyen el software más reciente empleado, conteniendo compiladores de C/C++4, editores de texto, juegos, programas para el acceso a Internet, así como el entorno gráfico de Linux: X Window. LINUX es un sistema operativo, compatible con Unix. Dos características muy peculiares lo diferencian del resto de los sistemas que podemos encontrar en el mercado, la primera, es que es libre, esto significa que no tenemos que pagar ningún tipo de licencia a ninguna casa desarrolladora de software por el uso del mismo, la segunda, es que el sistema viene acompañado del código fuente. El sistema lo forman el núcleo del sistema (kernel) mas un gran numero de programas/librerías que hacen posible su utilización. LINUX se distribuye bajo la GNU Public License, por lo tanto, el código fuente tiene que estar siempre accesible. El sistema ha sido diseñado y programado por multitud de programadores alrededor del mundo. El núcleo del sistema sigue en continuo desarrollo bajo la coordinación de Linus Torvalds, la persona de la que partio la idea de este proyecto, a principios de la década de los noventa. Día a día, mas y mas programas/aplicaciones están disponibles para este sistema, y la calidad de los mismos aumenta de versión a versión. La gran mayoría de los mismos vienen acompañados del código fuente y se distribuyen gratuitamente bajo los términos de licencia de la GNU Public License. En los últimos tiempos, ciertas casas de software comercial han empezado a distribuir sus productos para Linux y la presencia del mismo en empresas aumenta rápidamente por la excelente relación calidad-precio que se consigue con Linux. Historia LINUX hace su aparición a principios de la década de los noventa, era el año 1991 y por aquel entonces un estudiante de informática de la Universidad de Helsinki, llamado Linus Torvalds empezó, como un aficionado y sin poderse imaginar a lo que llegaría este proyecto, a programar, para su tesis final, las primeras líneas de código de este sistema operativo llamado LINUX. Este comienzo estuvo inspirado en MINIX5, un pequeño sistema Unix desarrollado por Andy Tanenbaum. Las primeras discusiones sobre Linux fueron en el grupo de noticias comp.os.minix, en estas discusiones se hablaba sobre todo del desarrollo de un pequeño sistema Unix para usuarios de Minix que querían mas. Linus nunca anuncio la versión 0.01 de Linux (agosto 1991), esta versión no era ni siquiera ejecutable, solamente incluía los principios del núcleo del sistema, estaba escrita en lenguaje 1 Introducción a Linux ensamblador y asumía que uno tenia acceso a un sistema Minix para su compilación. El 5 de octubre de 1991, Linus anuncio la primera versión "Oficial" de Linux, (versión 0.02). En este estado de desarrollo ni se pensaba en los términos soporte, documentación e incluso distribución. Después de la versión 0.03, Linux salto en la numeración hasta la 0.10, Desde entonces, mas y mas programadores a lo largo y ancho de Internet empezaron a trabajar en el proyecto y después de sucesivas revisiones, Linux incremento el numero de versión hasta la 0.95 (Marzo 1992). Después de más de un año (diciembre 1993) el núcleo del sistema estaba en la versión 0.99 y la versión 1.0 no llego hasta el 14 de marzo de 1994. Una vez que el núcleo estuvo «usable», los programadores comenzaron a buscar aplicaciones y utilidades para agregar y hacer el sistema más útil, ese es el momento en que entra el proyecto GNU, iniciado en 1984 por la Free Software Foundation (FSF), entidad creada por Richard M. Stallman (o simplemente RMS), con el fin de hacer un sistema operativo libre. Dado que existía ya mucho software en el proyecto GNU, los programadores comenzaron a unir el núcleo Linux con dichas herramientas GNU, conformando lo que hoy conocemos como sistema GNU/Linux (o simplemente Linux, como se suele llamar equivocadamente). La versión actual del núcleo es la 2.4.20 y sigue avanzando día a día con la meta de perfeccionar y mejorar el sistema. Diferencias entre Windows y Linux Largas discusiones se han realizado sobre el tema «GNU/Linux vs Windows», y tiempo atrás quizás no tenía sentido compararlos por la escasa cantidad de aplicaciones aptas para el usuario disponible en GNU/Linux, pero con el correr de los años el sistema fue evolucionando cada vez más para dar soporte al usuario y brindarle una plataforma estable y funcional para el trabajo de todos los días. Originalmente el GNU/Linux (como todo sistema de tipo Unix), había sido pensado para funcionar como servidor, y es por eso que las herramientas que proveía eran algo avanzadas y de uso específico para la administración del sistema, pero en la actualidad existe una gran variedad de aplicaciones que permiten al usuario realizar todas sus tareas cotidianas: procesadores de texto, planillas de cálculo, programas de correo electrónico, juegos, reproductores de CDs, generadores de presentaciones, retocadores de imágenes, etc., lo que hace al sistema GNU/Linux especial para la oficina o el hogar. Un punto más a favor del GNU/Linux es que, dado que fue pensado para funcionar como servidor, implícitamente posee una robustez y estabilidad importantes, lo que combinado con la amigabilidad y funcionalidad del sistema de escritorio, genera un sistema sumamente fácil y seguro de utilizar. Linux a diferencia de Windows, es multitarea real, y multiusuario, posee un esquema de seguridad basado en usuarios y permisos de lectura, escritura y ejecución establecidos a los archivos y directorios. Esto significa que cada usuario es propietario de sus archivos, y otro usuario no puede acceder a estos archivos sin la expresa autorización del propietario. Esta propiedad no permite el contagio de virus entre archivos de diferentes usuarios. Es capaz de ejecutar varios programas (o tareas) de forma simultánea y albergar a varios usuarios de forma simultánea. Por lo tanto, todos los usuarios de Linux deben tener una cuenta de usuario en el sistema que establezca los privilegios del mismo. A su vez Linux organiza a los usuarios en grupos de forma que se puedan establecer privilegios a un determinado grupo de trabajo, para el acceso a determinados archivos o servicios del sistema. Cada uno de estos usuarios tiene su propio subsistema de archivos, no interfiere con otros usuarios y comparte con los mismos, disco, tiempo de CPU y dispositivos. Un usuario muy importante es el root, o el superusuario. El superusuario tiene control total sobre la máquina y es el que la administra. Una diferencia, quizás la más importante de todas, con respecto a cualquier sistema operativo comercial, es el hecho de que es software libre, qué quiere decir esto? que junto con el sistema, se puede obtener el código fuente de cualquier parte del mismo y modificarlo a gusto. Ésto da varias ventajas, por ejemplo: 1.La seguridad de saber qué hace un programa tan solo viendo el código fuente, o en su defecto, tener la seguridad que al estar el código disponible, nadie va a agregar «características ocultas» 2 Introducción a Linux en los programas que distribuye. 2.La libertad que provee la licencia GPL permite a cualquier programador modificar y mejorar cualquier parte del sistema, ésto da como resultado que la calidad del software incluido en GNU/Linux sea muy buena. 3.El hecho de que el sistema sea mantenido por una gran comunidad de programadores y usuarios alrededor del mundo, provee una gran velocidad de respuesta ante errores de programas que se van descubriendo, que ninguna compañía comercial de software puede igualar. Además de las ventajas anteriormente enumeradas, GNU/Linux es ideal para su utilización en un ambiente de trabajo, dos razones justifican ésto: 1.Al ser software libre, no existe el costo de las licencias, y una copia del sistema GNU/Linux puede instalarse en tantas computadoras como se necesite. 2.Existen utilidades para el trabajo en oficina, que son compatibles con las herramientas de la serie MS-Office. Requerimientos Los requerimientos mínimos para usar GNU/Linux son, tan solo, una 386 con 4 MB de RAM. Esto no quiere decir que va a andar rápido, pero va a andar. En algunos trabajos no es necesario un equipo más grande. Es común pensar que si no se tiene la última máquina que está en el mercado junto a los últimos periféricos no se puede usar nada. Este es un concepto erróneo. Es importante tener en cuenta el uso que se dará a la computadora. Por ejemplo para compartir Internet entre varios amigos o dentro de una pequeña empresa, una 386 con 4 MB de Ram sería suficiente. En cambio para la creación de planos en un sistema CAD esto no sería un equipo óptimo. Si bien la computadora funciona con esa configuración, el aspecto es similar al de terminales hace varios años atrás. Para usuarios recién iniciados y poco familiarizados con terminales, suele parecer un entorno poco amigable. Pero si se necesita rapidez con poco hardware no queda otra opción. Aplicaciones de texto vs aplicaciones gráficas Linux no necesita un entorno de ventanas para funcionar. Ciertamente, cuando comenzó no existía dicho entorno. La pantalla era un intérprete de comandos de aspecto similar a los Unix o una ventana de MS-DOS. A diferencia de otros sistemas operativos, por defecto el trabajo con Linux no se realiza de una forma gráfica, sino introduciendo comandos de forma manual. Las aplicaciones que funcionan bajo terminales o consolas las llamaremos aplicaciones de texto. Linux dispone de varios programas que se encargan de interpretar los comandos que introduce el usuario y realizar las acciones correspondientes en respuesta. Estos programas denominados shell son el modo típico de comunicación en todos los sistemas Unix incluido Linux. Para muchas personas el hecho de tener que introducir los comandos de forma manual les puede parecer intimidante y dificultoso, aunque los comandos de Linux son relativamente simples y muy poderosos. Tiempo después se aportó un sistema de ventanas llamado X Window. X Window es el entorno gráfico habitual de los sistemas Unix. Casi todas las distribuciones más recientes incluyen el sistema X Window (no X Windows), el cual es el encargado de controlar y manejar la interfaz de usuario. Como se verá más adelante X Window es mucho más poderoso que otros entornos similares como Microsoft Windows, puesto que permite que el usuario tenga un control absoluto de la representación de los elementos gráficos. El sistema X Window se compone de dos parte principales el servidor X y el programa para la gestión de las ventanas. El servidor X es el programa que se encarga realmente de dibujar en la pantalla. Por el contrario el gestor de ventanas como su nombre indica es el encargado de crear las ventanas y gestionar su apariencia. Debido a este modelo, la apariencia de las aplicaciones varía según se use uno u otro gestor de ventanas, entre los que destacan por su sencillez de uso los entornos GNOME y KDE. 3 Introducción a Linux Al instalar Linux el sistema puede preguntar si se desea arrancar Linux en modo texto o en modo gráfico. Si se ha seleccionado esta última opción Linux arrancará directamente X Window, en caso contrario en la línea de comandos hay que escribir startx con lo cual se arranca el modo gráfico. Resumiendo, X Window, es un sistema de control de mouse y pantalla, pero no maneja las ventanas y operaciones con ventanas (como mover, minimizar, cerrar, etc.). Por lo tanto hay que utilizar algún programa administrador de ventanas. Se eligió para este curso el KDE. Las aplicaciones que funcionan bajo X Window las llamaremos aplicaciones gráficas. Necesitan X Window para funcionar pero no necesitan un administrador de ventanas. Sin embargo el administrador de ventanas facilita el uso de los programas. Ventajas y desventajas Las aplicaciones de texto, tienen la ventaja de ocupar poco espacio, ser rápidas y la mayoría tiene mucho desarrollo. Hay que pensar que las terminales existen hace mucho tiempo. Como desventajas se puede decir que los programas de texto son poco amigables y tienen una interfaz restringida. Son ideales para administración remota, para tareas administrativas de la computadora, terminales con enlaces lentos, y software en general para computadoras de poca capacidad. Como contrapartida existen las aplicaciones gráficas, con una interfaz mejorada pero con mayor lentitud en mostrar información. Son ideales para tareas de usuarios finales, personas con poca práctica en computación, etc. En este curso se van a usar aplicaciones gráficas en lo posible. Las tareas administrativas más importantes (añadir/eliminar usuarios, configurar hardware, dar permisos, etc.) se pueden hacer en ambas interfaces, tanto en la de texto como en la gráfica. Conocimientos necesarios para comenzar: Hay bastantes diferencias entre DOS y Linux, una de ellas es que en Linux todas la unidades de disco están ubicadas en el mismo árbol de archivos, es decir que por ejemplo un CD estaría ubicado en el directorio /cdrom o /mnt/cdrom. Un disco rígido que para los usuarios de DOS o Windows es C: , en Linux se puede decir que se representa por la barra inclinada (/). En Linux las nomenclaturas de las unidades con letras no existen, solo existen los directorios. Por eso cada vez que retire un CD e introduzca otro tendrá que desmontar el que esta introducido mediante el comando umount y montar el nuevo con la orden mount. Aunque esto no parezca mas que una perdida de tiempo y un inconveniente, tiene muchas ventajas. Por ejemplo: cuando se instala un programa en una partición DOS o Windows y no queda mas espacio en el disco o borramos algo o no lo instalamos, en Linux esto es impensable ya que si nos quedamos sin espacio se puede colocar otro disco rígido y montarlo en el sistema de archivos y tenemos mas espacio sin borrar nada para instalar lo que necesitemos. Las particiones del disco rígido se llaman en Linux según su posición. En hda1; "hd" indica que es un disco rígido, la "a" indica que es el primer disco rígido de la computadora y el "1" indica que que es la primera partición de este disco. Un diskette seria fd0; el "fd" indica que es una unidad de diskette y el "0" que es la primera unidad de disquete. Hay que indicar que todas las unidades se encuentran en un directorio llamado /dev, que es un directorio de sistema donde todo el harware tiene su imagen como archivo (siendo esta su representación en el sistema y a la que tendra que referirse cuando configure algun programa). ESTRUCTURA DEL SISTEMA DE ARCHIVOS DE LINUX Archivos: Tipos La base del sistema de archivos de Linux, es obviamente el archivo, que no es otra cosa que la estructura empleada por el sistema operativo para almacenar información en un dispositivo físico 4 Introducción a Linux como un disco rígido, un disquete, un CD-ROM o un DVD. Como es natural un archivo puede contener cualquier tipo de información, desde una imagen en formato PNG o JPEG a un texto o una página WEB en formato HTML, … El sistema de archivos es la estructura que permite que Linux maneje los archivos que contiene. Todos los archivos de Linux tienen un nombre, el cual debe cumplir unas ciertas reglas: •Un nombre de archivo puede tener entre 1 y 255 caracteres. •Se puede utilizar cualquier carácter excepto la barra inclinada “/” y no es recomendable emplear los caracteres con significado especial en Linux, que son los siguientes: = \ ^ ~ ' " ` * ; - ? [ ] ( ) ! & ~ < >. Para emplear archivos con estos caracteres o espacios hay que introducir el nombre del archivo entre comillas. •Se pueden utilizar números exclusivamente si así se desea. Las letras mayúsculas y minúsculas se consideran diferentes, y por lo tanto no es lo mismo carta.txt que Carta.txt ó carta.Txt Como en Windows, se puede emplear un cierto criterio de "tipo" para marcar las distintas clases de archivos empleando una serie de caracteres al final del nombre que indiquen el tipo de archivo del que se trata. Así, los archivos de texto, HTML, las imágenes PNG o JPEG tienen extensiones .txt, .htm (o .html), .png y .jpg (o .jpeg) respectivamente. Pese a esto Linux sólo distingue tres tipos de archivos: •Archivos comunes, son los mencionados anteriormente. •Directorios (o carpetas), es un archivo especial que agrupa otros archivos de una forma estructurada. •Archivos especiales, son la base sobre la que se asienta Linux, puesto que representan los dispositivos conectados a una computadora, como puede ser una impresora. De esta forma introducir información en ese archivo equivale a enviar información a la impresora. Para el usuario estos dispositivos tienen el mismo aspecto y uso que los archivos ordinarios. Enlaces Los enlaces son un tipo de archivo ordinario cuyo objetivo es crear un nuevo nombre para un archivo determinado. Una vez creado el enlace simbólico éste permite acceder al archivo que enlaza de igual modo que si se hubiera copiado el contenido del mismo a otro archivo, con la ventaja de que este realmente no se ha copiado. Los enlaces simbólicos son especialmente útiles cuando se quiere que un grupo de personas trabajen sobre un mismo archivo, puesto que permiten compartir el archivo pero centralizan las modificaciones. Como ejemplo se puede suponer la existencia de un archivo llamado balance.1999.txt, al que se crea un enlace simbólico balance.txt. Cualquier acceso a balance.txt es traducido por el sistema de forma que se accede al contenido de balance.1999.txt. El camino o Path En cualquier sistema operativo moderno la estructura de archivos es jerárquica y depende de los directorios. En general la estructura del sistema de archivos se asemeja a una estructura de árbol, estando compuesto cada nudo por un directorio o carpeta, que contiene otros directorios o archivos. En Windows cada unidad de disco se identifica como una carpeta básica que sirve de raíz a otras, y cuyo nombre es especial a:, c:, d: etc. En los sistemas Unix, y por lo tanto en Linux, existe una única raíz llamada / de la que cuelgan todos los archivos y directorios, y que es independiente de qué dispositivos estén conectados a la computadora. El camino o path de un archivo o directorio es la secuencia de directorios que se ha de recorrer para 5 Figura 1-1 Introducción a Linux acceder a un determinado archivo separados por /. Supongamos la estructura de archivos de la Figura 1-1. Existen dos formas del path o camino: •El camino absoluto que muestra toda la ruta a un archivo, /home/luis/Carta.txt. •El path relativo a un determinado directorio, por ejemplo si nos encontramos en el directorio /home, el path relativo al archivo Carta.txt es luis/Carta.txt Para complicar aun más las cosas, todos los directorios contienen dos directorios especiales: •El directorio actual, representado por el punto (.) •El directorio padre representado por dos puntos (..) Estructura del sistema de archivos de Linux El sistema de archivo de Linux sigue todas las convenciones de Unix, lo cual significa que tiene una estructura determinada, compatible y homogénea con el resto de los sistemas Unix. Al contrario que en Windows o MS-DOS el sistema de archivos en cualquier sistema Unix no está ligado de una forma directa con la estructura del hardware, esto es, no depende de si una determinada computadora tiene 1, 2 o 7 discos rígidos para crear las unidades c:\, d:\ o m:\. Todo el sistema de archivos de Unix tiene un origen único, la raíz o root representada por “/”. Bajo este directorio se encuentran todos los archivos a los que puede acceder el sistema operativo. Estos archivos se organizan en distintos directorios cuya misión y nombre son estándar para todos los sistema Unix. / Raíz del sistema de archivos. /dev Contiene archivos del sistema representando los dispositivos que estén físicamente instalados en la computadora, como impresoras, discos rígidos, terminales, etc... /etc Este directorio esta reservado para los archivos de configuración del sistema. En este directorio no debe aparecer ningún archivo binario (programas). Bajo este deben aparecer otros subdirectorios: /etc/X11 Archivos de configuración de X Window /etc/skel Archivos de configuración básica que son copiados al directorio del usuario cuando se crea uno nuevo. /etc/passwd donde se guardan las claves de acceso de todos los usuarios. /lib Contiene las librerías necesarias para que se ejecuten los programas que residen en /bin (no las librerías de los programas de los usuarios). /home es el directorio donde se guardan los subdirectorios de los usuarios. /proc Contiene archivos especiales que o bien reciben o envían información al kernel del sistema (Se recomienda no modificar el contenido de este directorio y sus archivos). /sbin Contiene programas que son únicamente accesibles al superusuario o root. /usr Este es uno de los directorios más importantes del sistema puesto que contiene los programas de uso común para todos los usuarios, así como las librerías necesarias para que éstos funcionen. Su estructura suele ser similar a la siguiente: /usr/X11R6 Contiene los programas para ejecutar X Window. /usr/bin Programas de uso general, lo que incluye el compilador de C/C++. /usr/doc Documentación general del sistema. 6 Introducción a Linux /usr/etc Archivos de configuración generales. /usr/include Archivos de cabecera de C/C++ (.h). /usr/info Archivos de información de GNU. /usr/lib Librerías generales de los programas. /usr/man Manuales accesibles con el comando man. /usr/sbin Programas de administración del sistema. /usr/src Código fuente de programas. Existen además de los anteriores otros directorios que se suelen localizar en el directorio /usr, como por ejemplo las carpetas de los programas que se instalen en el sistema. /var Este directorio contiene información temporal de los programas. Abarca los archivos que suelen tender a crecer rápidamente, por ejemplo los correos de los usuarios, los spooler de impresora o los logs del sistema. /tmp Guarda los archivos temporales, creados por los diferentes procesos. Generalmente es borrado automaticamente al reiniciar el sistema. No se debe usar para guardar nada importante. Acceso a los diferentes sistemas de archivos Como se ha visto anteriormente el sistema de archivos de Linux sólo tiene una raíz y su estructura es independiente de los dispositivos de almacenamiento existentes. Esto implica que el procedimiento a emplear para acceder a la información almacenada en los distintos sistemas de almacenamiento de una computadora no es tan sencilla como en Windows, y requiere un proceso llamado “montado”, que se verá más adelante. Cuando se ha terminado de trabajar con un determinado dispositivo hay que “desmontarlo” (¡No físicamente!). Por ejemplo el proceso para leer un disquete sería el siguiente: 1. Introducir el disquete en la disquetera. 2. Montar el sistema de archivos del mismo. 3. Leer, grabar, y manipular el contenido del disquete. 4. Desmontar el sistema de archivos del disquete. 5. Extraer el disquete de la disquetera. El proceso puede parecer complejo pero es el precio a pagar por la seguridad, puesto que de esta forma se garantiza que no exista ninguna aplicación que esté usando el disquete cuando se extraiga. (En el caso de los CD-ROM, Linux impide su extracción hasta que se desmonta). Para complicar más las cosas sólo el administrador o root tiene permiso para montar y desmontar un sistema de archivos (por motivos de seguridad), aunque esto puede ser arreglado. Permisos Linux, al igual que todos los sistemas Unix, mantiene un sistema de permisos de acceso a los archivos muy estricto, a fin de controlar qué es lo que se puede hacer con ellos, y quien lo puede hacer. Estos permisos se identifican con letras y son: r permiso de lectura del archivo w permiso de escritura en el archivo x permiso de ejecución del archivo 7 Introducción a Linux Al contrario que en Windows o MS-DOS los programas ejecutables de Linux no están marcados por una determinada extensión (.exe) sino por un atributo, el permiso de ejecución x. Si se elimina este atributo a un programa, Linux no será capaz de ejecutarlo. Cada uno de estos permisos se aplica: al dueño del archivo (u), al grupo de usuarios al que pertenece el dueño (g), ó al resto de usuarios (o). Así un archivo determinado puede tener permiso para ser leído, escrito y ejecutado por su dueño, leído y ejecutado por el grupo al que pertenece y no tener ningún tipo de acceso para los demás usuarios. Como se puede entender este tipo de mecanismo es especialmente útil cuando se trabaja en grupo en un determinado proyecto. NOTA: Linux hace distinción entre mayúsculas y minúsculas así que estos comandos deben ser teclados EN MINÚSCULA sin ninguna letra en mayúscula salvo que lo indique en la explicación, algunos de los comandos que aquí figuran solo pueden ser ejecutados como root aunque no lo indique. 8 POSIX Es un estándar que debe cumplir todo sistema operativo que pretenda ser considerado como UNIX; este estándar está formado por un conjunto de especificaciones técnicas que aseguran una evolución previsible en estos sistemas. 1 UNIX Es una familia de sistemas operativos tanto para computadoras personales (PC) como para macrocomputadoras (mainframes). Soporta gran número de usuarios y posibilita la ejecución de distintas tareas de forma simultánea (multiusuario y multitarea). Su facilidad de adaptación a distintas plataformas y la portabilidad de las aplicaciones (está escrito en lenguaje C) que ofrece hacen que se extienda rápidamente. Unix fue desarrollado a finales de los sesenta en los laboratorios Bell, y hasta principios de los ochenta su uso estuvo restringido fundamentalmente al entorno académico. La firma AT&T fue la primera en comercializarlo en 1983. Para UNIX el universo es un sistema de archivos. No existen periféricos, sólo archivos. De este modo se unifican todos los procesos E/S. Los directorios son archivos que contienen enlaces con otros archivos. Terminales, discos compactos e impresoras son archivos, en teoría se puede escribir y leer de todos ellos. 2 GNU: El Proyecto GNU comenzó en 1984 con el propósito de desarrollar un sistema operativo completo tipo Unix, el cual es software libre. El sistema GNU es un acrónimo recursivo para ``GNU No es Unix''; y se pronuncia "gnu", tal y como se escribe. Variantes del sistema operativo GNU, que utilizan el núcleo Linux, son bastante utilizadas hoy en día; aunque estos sistemas son frecuentemente referidos como ``Linux'', deberían llamarse más exactamente sistemas GNU/Linux. 3 C++ es la versión orientada a objetos del lenguaje de programación C. La mayoría de los programas verdaderamente grandes se escriben en este lenguaje porque facilita la programación orientada a objetos. Desarrollado en en la última parte de los 1970s, C se constituyó en un enorme éxito debido al desarrollo de UNIX que fue escrito casi por completo en este lenguaje. En contraste con otros lenguajes de alto nivel, C fué escrito por programadores para programadores. El lenguaje de programación C se caracteriza por ser de uso general, con una sintaxis sumamente compacta y de alta portabilidad. C++ es la evolución de C. Actualmente, algunos sistemas operativos se escriben en C y C++. 4 MINIX es un clon libre/gratuito de UNIX de codigo abierto. Debido a su pequeño tamaño, diseño basado en microkernel, y amplia documentacion, esta adaptado para la gente que quiere utilizar un sistema de tipo UNIX en sus computadoras personales y aprender como funcionan dichos sistemas por dentro. 5