1 introducción a unix

Upload: juan-andres-mendoza

Post on 13-Oct-2015

10 views

Category:

Documents


0 download

TRANSCRIPT

  • INTRODUCCIN El sistema operativo UNIX se inicio como un proyecto de investigacin y se ha

    convertido en un importante producto ampliamente utilizado en el mundo de los negocios, en el acadmico y en el gubernamental. Se trata de un sistema operativo potente, flexible y verstil, originado ya hace ms de 30 aos, que prcticamente puede ser instalado en cualquier tipo de plataforma, incluyendo los ordenadores personales monousuarios. El cdigo fuente del sistema UNIX, y no slo el cdigo ejecutable, ha estado disponible a usuarios y programadores. A causa de esto, muchos programadores han sido capaces de adaptar UNIX de formas muy diferentes. Este carcter abierto, ha conducido a la introduccin de un amplio rango de caractersticas nuevas y de versiones especializadas que se ajustan a necesidades particulares.

    Como se sabe, Unix es un sistema multiusuario, multitarea y adems, proporciona un buen entorno para el trabajo en red. Ofrece programas y servicios que permiten construir aplicaciones basadas en red. Ha sido bsico para el desarrollo de los servicios en Internet y para el propio crecimiento de Internet. Consecuentemente, con la importancia creciente de la computacin distribuida e Internet, est creciendo la popularidad del sistema UNIX. El sistema UNIX es mucho ms fcil de portar a nuevas mquinas que otros sistemas operativos. Esta portabilidad es consecuencia directa de estar escrito casi completamente en un lenguaje de alto nivel, el lenguaje C. La portabilidad a un amplio rango de arquitecturas hace posible mover las aplicaciones de un sistema a otro.

    Los sistemas operativos UNIX desarrollados en los Laboratorios Bell se cuentan entre los xitos ms notables en el campo de los sistemas operativos. Los sistemas UNIX ofrecen un ambiente amable para el desarrollo de programas y el procesamiento de textos. Brindan facilidad para combinar unos programas con otros, lo cual sirve para fomentar un enfoque modular, de piezas de construccin y orientado a las herramientas, para el diseo de programas. Una vez transportado un sistema operativo UNIX a otra mquina, un enorme acervo de programas de utilidad general queda disponible en la mquina de destino.

    El sistema operativo UNIX de 1981 era un sistema de tecleo intensivo que requera una larga lista de mandatos con diversas sintaxis. La generacin ms reciente de sistemas UNIX ofrece en muchos casos interfaces amables con el usuario, orientadas al uso de ratn y de ventanas tales como X Window System de MIT, NeWS de Sun Microsystem y Open Look de AT&T. Los sistemas UNIX se han convertido en los sistemas operativos para computadora personal preferidos por los usuarios de potencia, y es probable que lo mismo suceda con millones de usuarios ms. Por tanto, esta gua surge para poder llevar las potencialidades y facilidades del sistema operativo Unix a aquellas personas que lo requieran.

    La Universidad Nacional Experimental Politcnica de la Fuerza Armada Bolivariana promueve entre los estudiantes la realizacin de un proyecto de gua didctica por semestre con el objetivo de poder aumentar el acervo informativo existente en la universidad, as como de contribuir para las futuras investigaciones de otros estudiantes y personas que deseen profundizar en algn conocimiento. Esta gua del sistema operativo Unix pone en especial inters el hecho de poder llevarle a los estudiantes y a cualquier otra persona interesada los conocimientos ms bsicos acerca de este gran sistema de computacin muy utilizado en la actualidad en las grandes empresas, debido especialmente a toda una serie de caractersticas que lo convierten en una eleccin de gran rendimiento y confiabilidad.

    A lo largo de esta gua el lector encontrara una gran cantidad de informacin, as como de conceptos bsicos que le sern de utilidad para poder iniciarse en el tema de la informtica. Se podrn encontrar temas referentes a los orgenes del S.O Unix, la filosofa del sistema, las familias derivadas del mismo, Unix en la actualidad, los componentes principales del sistema; a saber el kernel, el shell y el sistema de archivos; las ventajas y desventajas de este sistema operativo y una lista de comandos bsicos a utilizar en el mismo. La estructura de esta gua se encuentra dividida de la siguiente manera: la portada, la introduccin, el ndice, el Capitulo I; donde se encuentran los conceptos bsicos de informtica; el Capitulo II; donde esta todo lo relacionado al S.O Unix y el Capitulo III; donde se encuentran las conclusiones y las recomendaciones. Al final de la gua se encuentra una lista de las referencias, principalmente electrnicas, utilizadas para la elaboracin de la misma

  • Palabras clave: sistema operativo, Unix, Linux, Unix-like, computacin, software, kernel o ncleo, lnea de comandos, shell, micronucleo, software libre, software privativo, sistema operativo tipo Unix, prompt, familia Unix.

    CAPTULO I

    CONCEPTOS BASICOS DE INFORMTICA El objetivo de esta primera parte de la gua es el de familiarizar al lector principiante en

    la computacin con algunos de los conceptos y terminologas bsicas que se usaran a lo largo de esta gua. Todo lo que se expone a continuacin son breves conceptos, as como alguna otra informacin de importancia (autor, creacin, funcin, etc.) que se considere de utilidad para facilitar la comprensin del Captulo II de la presente gua del Sistema operativo Unix. Los conceptos a tratar son:

    Mainframe: o computadora central, es una computadora grande, potente y costosa usada principalmente por una gran compaa para el procesamiento de una gran cantidad de datos; por ejemplo, para el procesamiento de transacciones bancarias.

    Kernel: es uno de los nombres con los que se le conoce al ncleo del sistema operativo y la parte fundamental del mismo. Es el software del sistema responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora, o, en forma ms bsica, es el encargado de gestionar recursos, a travs de servicios de llamada al sistema. Se encarga tambin de planificar la ejecucin de los procesos, supervisar la transmisin de datos entre las aplicaciones y los dispositivos perifricos, administrar la memoria del computador, hacer el renderizado de texto en la pantalla, entre otras cosas.

    Ncleo monoltico: es un tipo de ncleo o kernel de un sistema operativo. Est programado de forma no modular, y tiene un rendimiento mayor que un microncleo. Un sistema operativo con ncleo monoltico concentra todas las funcionalidades posibles (planificacin, sistema de archivos, redes, controladores de dispositivos, gestin de memoria, etc) dentro de un gran programa. El mismo puede tener un tamao considerable, y deber ser recompilado por completo al aadir una nueva funcionalidad. Todos los componentes funcionales del ncleo tienen acceso a todas sus estructuras de datos internas y a sus rutinas. Un error en una rutina puede propagarse a todo el ncleo. Todos sus componentes se encuentran integrados en un nico programa que se ejecuta en un nico espacio de direcciones. En este tipo de sistemas, todas las funciones que ofrece el sistema operativo se ejecutan en modo supervisor.

    Estos sistemas operativos han surgido, normalmente, de sistemas operativos sencillos y pequeos a los que se les ha ido aadiendo un nmero mayor de funcionalidades. Esto les ha hecho evolucionar y crecer hasta convertirlos en programas grandes y complejos formados por muchas funciones situadas todas ellas en un mismo nivel

    Microncleo: es un tipo de ncleo de un sistema operativo que provee un conjunto de primitivas o llamadas al sistema mnimas, para implementar servicios bsicos como espacios de direcciones, comunicacin entre procesos y planificacin bsica. Todos los otros servicios (gestin de memoria, sistema de archivos, operaciones de E/S, etc.), que en general son provistos por el ncleo, se ejecutan como procesos servidores en espacio de usuario.

    Las principales ventajas de su utilizacin son la reduccin de la complejidad, la descentralizacin de los fallos (un fallo en una parte del sistema no lo colapsara por completo) y la facilitacin para crear y depurar controladores de dispositivos. Por otro lado, sus principales dificultades son la complejidad en la sincronizacin de todos los mdulos que componen el microncleo y su acceso a la memoria, la anulacin de las ventajas de Zero Copy, la integracin con las aplicaciones, mayor complejidad en el cdigo, menor rendimiento o limitaciones en diversas funciones.

  • Software de aplicacin: es aquel que permite a los usuarios llevar a cabo una o varias tareas especficas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial nfasis en los negocios. Entre este tipo de software estn aplicaciones de control y automatizacin industrial, aplicaciones ofimticas (procesador de textos, hojas de clculo, bases de datos, etc.), software educativo, software medico, entre otros.

    Protocolo TCP/IP: el protocolo IP (Internet Protocol) es una norma o protocolo no orientado a conexin usado tanto por el origen como por el destino para la comunicacin de datos a travs de una red de paquetes conmutados. Los datos de una red basada en IP son enviados en bloques conocidos como paquetes o datagramas. El IP provee un servicio de datagramas no fiable, ya que el mismo no provee ningn mecanismo para determinar si un paquete ha alcanzado o no su destino y lo nico que proporciona es seguridad mediante checksums o sumas de comprobacin de sus cabeceras y no de los datos transmitidos. Si se necesita fiabilidad, esta es proporcionada por los protocolos de la capa de transporte TCP (Transmission Control Protocol). Este protocolo garantiza que los datos sern entregados en su destino sin errores y en el mismo orden en que se transmitieron. Tambin proporciona un mecanismo para distinguir distintas aplicaciones dentro de una misma mquina, a travs del concepto de puerto.

    Sistema operativo: es un software de sistema, es decir, un conjunto de programas de computadora destinado a permitir una administracin eficaz de sus recursos. Comienza a trabajar cuando se enciende el computador, y gestiona el hardware de la mquina desde los niveles ms bsicos, permitiendo tambin la interaccin con el usuario.

    Lenguaje de programacin C: es un lenguaje de programacin relativamente minimalista. Est orientado a la implementacin de sistemas operativos, concretamente Unix. C es apreciado por la eficiencia del cdigo que produce y es el lenguaje de programacin ms popular para crear software de sistemas, aunque tambin se utiliza para crear aplicaciones. Uno de los objetivos de diseo de este lenguaje fue que slo fueran necesarias unas pocas instrucciones en lenguaje mquina para traducir cada elemento del lenguaje, sin que hiciera falta un soporte intenso en tiempo de ejecucin. Es muy posible escribir C a bajo nivel de abstraccin; de hecho, C se us como intermediario entre diferentes lenguajes.

    Lenguaje ensamblador: el lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informticos, y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura de computadoras legible por un programador. Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente slo se utiliza en contadas ocasiones, especialmente cuando se requiere la manipulacin directa del hardware o se pretenden rendimientos inusuales de los equipos.

    Ficheros y/o sistemas de ficheros: un fichero es una abstraccin muy importante en programacin. Los ficheros sirven para almacenar datos de forma permanente y ofrecen un pequeo conjunto de primitivas muy potentes (abrir, leer, avanzar puntero, cerrar, etc.). Los ficheros se organizan normalmente en estructuras de rbol, donde los nodos intermedios son directorios capaces de agrupar otros ficheros. El sistema de ficheros es la forma en que el sistema operativo organiza, gestiona y mantiene la jerarqua de ficheros en los dispositivos de almacenamiento, normalmente discos duros. Cada sistema operativo soporta diferentes sistemas de ficheros.

    Multitarea: es una caracterstica de un sistema operativo moderno. Permite que varios procesos sean ejecutados al mismo tiempo compartiendo uno o ms procesadores.

    Multiusuario: se refiere a un concepto de sistemas operativos, pero en ocasiones tambin puede aplicarse a programas de computadora de otro tipo. En general se le llama multiusuario a la caracterstica de un sistema operativo o programa que permite proveer servicio y procesamiento a mltiples usuarios simultneamente (tanto en paralelismo real como simulado).

    Linux: tambin conocido como GNU/Linux, es un sistema operativo tipo Unix que se distribuye bajo la Licencia Pblica General de GNU (GNU GPL), es decir, que es software libre. Su nombre proviene del Ncleo de Linux. Las variantes de estos sistemas se denominan "distribuciones" y su objetivo es ofrecer una edicin que cumpla con las necesidades de determinado grupo de usuarios. Algunas son gratuitas y otras de pago, algunas insertan software no libre y otras contienen solo software libre.

    Proyecto GNU: se refiere a un proyecto iniciado por Richard Stallman con el objetivo de crear un sistema operativo completamente libre. GNU es un acrnimo recursivo que significa

  • GNU No es Unix, pero si es compatible con el mismo. Esto implica que GNU est compuesto de pequeas piezas individuales de software, muchas de las cuales ya estaban disponibles, como el sistema de edicin de textos TeX y el sistema grfico X Windows, que pudieron ser adaptados y reutilizados; otros en cambio tuvieron que ser reescritos. El software GNU es libre para que todos los usuarios puedan "ejecutarlo, copiarlo, modificarlo y distribuirlo" Dispositivos perifricos: se denominan perifricos tanto a las unidades o dispositivos a travs de los cuales la computadora se comunica con el mundo exterior, como a los sistemas que almacenan o archivan la informacin, sirviendo de memoria auxiliar de la memoria principal, es decir; son al conjunto de dispositivos que, sin pertenecer al ncleo fundamental de la computadora, formado por la CPU y la memoria central, permitan realizar operaciones de entrada/salida (E/S) complementarias al proceso de datos que realiza la CPU. Estas tres unidades bsicas en un computador, CPU, memoria central y el subsistema de E/S, estn comunicadas entre s por tres buses o canales de comunicacin: el bus de direcciones, para seleccionar la direccin del dato o del perifrico al que se quiere acceder, el bus de control, bsicamente para seleccionar la operacin a realizar sobre el dato (principalmente lectura, escritura o modificacin) y el bus de datos, por donde circulan los datos. Existen 3 tipos de dispositivos perifricos: de entrada, salida y de almacenamiento

    Software: es toda la informacin procesada por los sistemas informticos: programas y datos, abarca todo lo intangible, todo lo "no fsico" del computador. Es el conjunto de los programas de cmputo, procedimientos, reglas, documentacin y datos asociados que forman parte de las operaciones de un sistema de computacin.

    Hardware: es la parte fsica de un computador y ms ampliamente de cualquier dispositivo electrnico

    Bytes: se usa comnmente como unidad bsica de almacenamiento de informacin en combinacin con los prefijos de cantidad. Es aceptado como equivalente a octeto, es decir a ocho bits, para fines correctos, un byte debe ser considerado como una secuencia de bits contiguos, cuyo tamao depende del cdigo de informacin o cdigo de caracteres en que sea definido. La unidad byte se representa con el smbolo B.

    Software libre: se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software; de modo ms preciso, se refiere a cuatro libertades de los usuarios del software: la libertad de usar el programa, con cualquier propsito; de estudiar el funcionamiento del programa, y adaptarlo a las necesidades; de distribuir copias, con lo que puede ayudar a otros; de mejorar el programa y hacer pblicas las mejoras, de modo que toda la comunidad se beneficie (para la segunda y ltima libertad mencionadas, el acceso al cdigo fuente es un requisito previo)

    Software no libre: El software no libre (tambin llamado software propietario, software privativo, software privado, software con propietario o software de propiedad) se refiere a cualquier programa informtico en el que los usuarios tienen limitadas las posibilidades de usarlo, modificarlo o redistribuirlo (con o sin modificaciones), o cuyo cdigo fuente no est disponible o el acceso a ste se encuentra restringido.

    Prompt: es el carcter o conjunto de caracteres que se muestran en una lnea de comandos para indicar que est a la espera de rdenes. ste puede variar dependiendo del intrprete de comandos y suele ser configurable.

    CAPTULO II

    SISTEMA OPERATIVO UNIX 2.1 Historia del Sistema Operativo Unix

    Los orgenes de Unix pueden rastrearse a finales de 1960, cuando el Instituto Tecnolgico 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 polticas de seguridad. El proyecto consigui dar a luz versiones para produccin, 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 mquina de General Electric y resultaba realmente caro, algo as como 75 dlares de EE.UU. por cada partida. De este modo, Thompson con ayuda de Dennis Ritchie; un fsico estadounidense que colabor en el desarrollo del sistema operativo Multics en los Laboratorios Bell y cre el lenguaje de programacin 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 creacin de un nuevo sistema operativo para la DEC PDP-7. A continuacin se puede apreciar una antigua fotografa de los creadores originales del ncleo Unix, los programadores Ken Thompson y Dennis Ritchie:

    Ken Thompson (izquierda) y Dennis Ritchie (derecha), creadores de UNIX

    Thompson y Ritchie lideraron un grupo de programadores, entre ellos a Rudd Canaday, en los laboratorios Bell, para desarrollar tanto el sistema de ficheros como el sistema operativo multitarea en s. A lo anterior, agregaron un intrprete de rdenes (o intrprete de comandos) y un pequeo conjunto de programas. El proyecto fue bautizado UNICS, como acrnimo de Uniplexed Information and Computing System, pues slo prestaba servicios a dos usuarios. La autora de esta sigla se le atribuye a Brian Kernighan, ya que era un hack de Multics. Dada la popularidad que tuvo un juego de palabras que consideraba a UNICS un sistema MULTICS castrado, se cambi el nombre a UNIX, dando origen al legado que llego hasta los das actuales

    Hasta ese instante, no haba existido apoyo econmico por parte de los laboratorios Bell, pero eso cambi cuando el Grupo de Investigacin en Ciencias de la Computacin decidi utilizar UNIX en una mquina superior a la PDP-7. Thompson y Ritchie lograron cumplir con la solicitud de agregar herramientas que permitieran el procesamiento de textos a UNIX en una mquina PDP-11/20, y como consecuencia de ello consiguieron el apoyo econmico de los laboratorios Bell. Fue as como por vez primera, en 1970, se habla oficialmente del sistema operativo UNIX ejecutado en una PDP-11/20. Se inclua en l un programa para dar formato a textos (llamado runoff) y un editor de texto. Tanto el sistema operativo como los programas fueron escritos en el lenguaje ensamblador de la PDP-11/20.

    Este "sistema de procesamiento de texto" inicial, compuesto tanto por el sistema operativo como de runoff y el editor de texto, fue utilizado en los laboratorios Bell para procesar las solicitudes de patentes que ellos reciban. Pronto, runoff evolucion hasta convertirse en troff, el primer programa de edicin electrnica que permita realizar composicin tipogrfica. El 3 de noviembre de 1971 Thompson y Ritchie publicaron un manual de programacin de UNIX. En 1972 se tom la decisin de escribir nuevamente UNIX, pero esta vez en el lenguaje de programacin C. Este cambio significaba que UNIX podra ser fcilmente modificado para funcionar en otras computadoras y as otras variaciones podan ser desarrolladas por otros programadores. Ahora, el cdigo era ms conciso y compacto, lo que se tradujo en un aumento en la velocidad de desarrollo de UNIX. AT&T puso a UNIX a

  • disposicin de universidades y compaas, tambin al gobierno de los Estados Unidos, a travs de licencias. Una de estas licencias fue otorgada al Departamento de Computacin de la Universidad de California, con sede en Berkeley. En 1975 esta institucin desarroll y public su propio sucedneo de UNIX, conocida como Berkeley Software Distribution (BSD), que se convirti en una fuerte competencia para la familia UNIX de AT&T.

    Mientras tanto, AT&T cre una divisin comercial denominada Unix Systems Laboratories para la explotacin comercial del sistema operativo. El desarrollo prosigui, con la entrega de las versiones 4, 5 y 6 en el transcurso de 1975. Estas versiones incluan los pipes o tuberas, lo que permiti dar al desarrollo una orientacin modular respecto a la base del cdigo, consiguiendo aumentar an ms la velocidad de desarrollo. Ya en 1978, cerca de 600 o ms mquinas estaban ejecutndose con alguna de las distintas encarnaciones de UNIX.

    La versin 7, la ltima versin del UNIX original con amplia distribucin, entr en circulacin en 1979. Las versiones 8, 9 y 10 se desarrollaron durante la dcada de 1980, pero su circulacin se limit a unas cuantas universidades, a pesar de que se publicaron los informes que describan el nuevo trabajo. Los resultados de esta investigacin sirvieron de base para la creacin de Plan 9, un nuevo sistema operativo portable y distribuido, diseado para ser el sucesor de UNIX en investigacin por los Laboratorios Bell.

    AT&T entonces inici el desarrollo de UNIX System III, basado en la versin 7, como una variante de tinte comercial y as venda el producto de manera directa. La primera versin se lanz en 1981. A pesar de lo anterior, la empresa subsidiaria Western Electric segua vendiendo versiones antiguas de Unix basadas en las distintas versiones hasta la sptima. Para finalizar con la confusin con todas las versiones divergentes, AT&T decidi combinar varias versiones desarrolladas en distintas universidades y empresas, dando origen en 1983 al Unix System V Release. Esta versin present caractersticas tales como el editor Vi y la biblioteca curses, desarrolladas por Berkeley Software Distribution en la Universidad de California. Tambin contaba con compatibilidad con las mquinas VAX de la compaa DEC.

    A continuacin se puede observar una imagen del aspecto de Unix a los finales de la dcada de 1980 utilizando X Windows System:

    Unix a finales de 1980 utilizando X Windows System

    En 1993, la compaa Novell adquiri la divisin Unix Systems Laboratories de AT&T junto con su propiedad intelectual. Esto ocurri en un momento delicado en el que Unix Systems Laboratories disputaba una demanda en los tribunales contra BSD por infraccin de los derechos de copyright, revelacin de secretos y violacin de marca de mercado. BSD no solamente gan el juicio sino que cambiaron tornas descubriendo que grandes porciones del cdigo de BSD haban sido copiadas ilegalmente en UNIX System V. En realidad, la propiedad

  • intelectual de Novell (recin adquirida de Unix Systems Laboratories) se reduca a unos pocos ficheros fuente. La correspondiente contra-demanda acab en un acuerdo extrajudicial cuyos trminos permanecen bajo secreto a peticin de Novell.

    Aproximadamente por esa misma fecha, un estudiante de ciencias de la computacin llamado Linus Torvalds desarroll un ncleo para computadoras con arquitectura de procesador Intel x86 que mimetizaba muchas de las funcionalidades de UNIX y lo lanz en forma de cdigo abierto en 1991, bajo el nombre de Linux. En 1992, el ncleo Linux fue combinado con los programas desarrollados por el Proyecto GNU, dando como resultado el Sistema Operativo GNU/Linux. En 1995, Novell vendi su divisin UNIX comercial (es decir, la antigua Unix Systems Laboratories) a Santa Cruz Operation (SCO) reservndose, aparentemente, algunos derechos de propiedad intelectual sobre el software. SCO contina la comercializacin de System V en su producto UnixWare, que durante cierto tiempo pas a denominarse OpenUnix, aunque ha retomado de nuevo el nombre de UnixWare. A pesar de los problemas de la empresa debido a diversos pleitos legales, estos productos siguen siendo usando fuertemente a nivel mundial

    A continuacin se puede apreciar un diagrama que muestra como ha sido la evolucin de Unix a lo largo de los aos. A pesar de que el diagrama esta en ingles, se puede apreciar con facilidad los distintos caminos que ha tomado el desarrollo de este ncleo, ya sea de libre acceso o de uso privativo, en distintos sistemas operativos desde la fecha de creacin de Unix hasta el 2008:

    Diagrama de evolucin del sistema operativo UNIX