domingo, 14 de junio de 2015

paseo por la evolucion de unix / linux

Los orígenes de Unix pueden rastrearse a finales de 1960, cuando el Instituto Tecnológico de Massachusetts, los Laboratorios Bell de AT&T y General Electric trabajaban en un sistema operativo experimental llamado Multics (Multiplexed Information and Computing Service),[] desarrollado para ejecutarse en una computadora central (mainframe) modelo GE-645. El objetivo del proyecto era desarrollar un sistema operativo interactivo que contase con muchas innovaciones, entre ellas mejoras en las políticas de seguridad. El proyecto consiguió dar a luz versiones para producción, pero las primeras versiones contaban con un pobre rendimiento. Los laboratorios Bell de AT&T decidieron desvincularse y dedicar sus recursos a otros proyectos.

Uno de los programadores del equipo de los laboratorios Bell, Ken Thompson, siguió trabajando para la computadora GE-635[,] y escribió un juego llamado "Space Travel"[][](Viaje espacial). Sin embargo, descubrió que el juego era lento en la máquina de General Electric y resultaba realmente caro, algo así como 75 dólares de EE.UU. por cada partida. De este modo, Thompson con ayuda de Dennis Ritchie; un físico estadounidense que colaboró en el desarrollo del sistema operativo Multics en los Laboratorios Bell y creó el lenguaje de programación C; escribió nuevamente el programa en lenguaje ensamblador, para que se ejecutase en una computadora DEC PDP-7. Esta experiencia, junto al trabajo que desarrolló para el proyecto Multics, condujo a Thompson a iniciar la creación de un nuevo sistema operativo para la DEC PDP-7[.] A continuación se puede apreciar una antigua fotografía de los creadores originales del núcleo Unix, los programadores Ken Thompson y Dennis Ritchie:
Image:Ken n dennis.jpg
Ken Thompson (izquierda) y Dennis Ritchie (derecha), creadores de UNIX

A continuación se puede observar una imagen del aspecto de Unix a los finales de la década de 1980 utilizando X Windows System:
Imagen:X-Window-System.png
Unix a finales de 1980 utilizando X Windows System

A continuación se puede apreciar un diagrama que muestra como ha sido la evolución de Unix a lo largo de los años. A pesar de que el diagrama esta en ingles, se puede apreciar con facilidad los distintos caminos que ha tomado el desarrollo de este núcleo, ya sea de libre acceso o de uso privativo, en distintos sistemas operativos desde la fecha de creación de Unix hasta el 2008:
Image:Unix history-simple.png
Diagrama de evolución del sistema operativo UNIX


UNIX en la actualidad


A pesar de que muchas de las funcionalidades de Unix son imitadas hoy en día por una gran cantidad de sistemas operativos, entre ellos las distribuciones de GNU/Linux. Se podría decir que las versiones más "puras" de este sistema operativo son las de UnixWare y SCO Open Server. Estas versiones de sistemas operativos no libres para PC son actualmente propiedad de SCO Group. Por lo que se conoce, en enero de 2003, SCO contrató a un abogado, anunciando que investigarían infracciones a su derecho de autor. El 7 de marzo, el jefe ejecutivo de SCO, Darl McBride, anunció que demandarían a IBM por sus contribuciones al código de Linux, alegando que IBM robó código de UNIX y se lo otorgó a los desarrolladores del núcleo de Linux.

A continuación se puede ver una imagen de Solaris 10 de Sun Microsystems, uno de los sistemas parecidos a Unix más difundidos en el entorno empresarial en la actualidad debido a su gran estabilidad y rendimiento:
Imagen:Solaris10-x86-240507.png
Solaris 10, Unix actual de gran uso en las empresas

¿Qué es Unix?

Es un sistema operativo portable, multitarea y multiusuario; desarrollado en 1969 por un grupo de empleados de los laboratorios Bell y AT&T, entre los que figuran Ken Thompson, Dennis Ritchie y Douglas Mcllroy. Este sistema es uno de los más utilizados y con más futuro debido a que son muchos organismos oficiales y particulares los que defienden su utilización, así como muchas firmas de fabricación y comercialización de computadoras que lo incorporan en sus productos. Para dar un ejemplo, la Comunidad Económica Europea, impone el sistema operativo UNIX en todas las aplicaciones que se desarrollan bajo sus auspicios.
Unix es un sistema operativo de tiempo compartido, controla los recursos de una computadora y los asigna entre los usuarios. Permite a los usuarios correr sus programas. Controla los dispositivos periféricos conectados a la máquina. Además es un sistema multiusuario, en el que existe la portabilidad para la implementación de distintas computadoras.
 Supóngase que se tienen cuatro comandos separados A,B,C y D cuyas funcionalidades son:
o      A: lee matrices revisando tipos de datos y formato.
o      B: recibe matrices, las invierte y arroja el resultado en forma matricial.
o      C: recibe una matriz y le pone encabezados "bonitos"
o      D: manda a la impresora una matriz cuidando el salto de página, etc.
Como se ve, cada módulo hace una actividad específica, si lo que se quiere es un pequeño sistema que lea un sistema de ecuaciones y como resultado se tenga un listado "bonito", simplemente se usa el entubamiento para leer con el módulo A la matriz, que su resultado lo reciba el B para obtener la solución, luego esa solución la reciba el módulo C para que le ponga los encabezados "bonitos" y finalmente eso lo tome el módulo D y lo imprima, el comando completo sería  "A | B | C | D".
A continuación se pueden ver 2 imágenes, en donde se muestra en la primera, la lista de directorios del sistema y en la segunda la lista de procesos que se encuentra realizando el UNIX:
http://www.builderau.com.au/i/s/unix_backup_james_1.jpg
Lista de directorio del sistema operativo UNIX
Image:Unix-process-list.png
Lista de procesos del sistema operativo UNIX

Familias de Unix

Como se puede deducir de la reseña histórica de este sistema operativo, existen varias familias del sistema operativo UNIX que han evolucionado de manera independiente a lo largo de los años. Cada familia se distingue no tanto por sus diferencias técnicas como por sus diferencias en propiedad intelectual. Se observa que todas las familias se han visto contaminadas, directa o indirectamente, por otras familias. Las familias UNIX más significativas son:
-        AT&T: la familia que tuvo su origen en el UNIX de AT&T. Considerada la familia UNIX "pura" y original. Sus sistemas operativos más significativos son UNIX System III y UNIX System V.
-        BSD: familia originada por el licenciamiento de UNIX a Berkely. BSD incorpora propiedad intelectual no originaria de AT&T, la primera implementación de los protocolos TCP/IP que dieron origen a Internet.
-        AIX: esta familia surge por el licenciamiento de UNIX System III a IBM.
-        Xenix: familia derivada de la adquisición de los derechos originales de AT&T primero por parte de Microsoft y luego esta los vendió a SCO.
-        GNU: en 1983, Richard Stallman anunció el Proyecto GNU, un ambicioso esfuerzo para crear un sistema similar a Unix, que pudiese ser distribuido libremente. El software desarrollado por este proyecto, por ejemplo, GNU Emacs y GCC, también han sido parte fundamental de otros sistemas UNIX.
-        Linux: en 1991, cuando Linus Torvalds empezó a proponer el núcleo Linux y a reunir colaboradores, las herramientas GNU eran la elección perfecta. Al combinarse ambos elementos, conformaron la base del sistema operativo (basado en POSIX) que hoy se conoce como Linux. Las distribuciones basadas en el núcleo, el software GNU y otros agregados entre las que se pueden mencionar a Red Hat Linux y Debian GNU/Linux se han hecho populares tanto entre los aficionados a la computación como en el mundo empresarial. Obsérvese que Linux tiene un origen independiente, por lo que se considera un "clónico" de UNIX y no un UNIX en el sentido histórico.
A continuación, se puede apreciar un diagrama que demuestra la colocación actual de Unix entre las distintas familias que se han desarrollado:
Image:Unix history.svg
Diagrama de la división de familias que usan sistemas Unix o "parecidos" a Unix