El Sistema Operativo UNIX: Caractersticas y Tipos Grupo de Sistemas y Comunicaciones Noviembre de 1995 1. Evoluci’on Hist’orica del sistema operativo Unix Los origenes del sistema operativo Unix hay que buscarlos 26 años atr’as, en 1969, cuando se escribi’o la primera versi’on de este sistema operativo, desarrollado por Ken Thompson, Rudd Canaday, Doug McIlroy, Joe Ossana y Deninis Ritchie . La primera m’aquina que recibi’o este sitema de tiempo compartido y uso general fu’e un vieja DEC PDP-7 que ya no empleaban los citados laboratorios. Al poco tiempo y dado el entusiamo que despert’o, se migr’o el sistema a una m’aquina mayor una PDP-11-20. Entre las personas que comenzaron a emplear el sistema y que ayudaron en 1970, a portarlo a esta nueva m’aquina se encontraba Dennis Ritchie, desarrollador del famoso lenguaje C. La contribuci’on de este ’ultimo fu’e decisiva en el diseño (reescritura del n’ucleo) y desarrollo del Sistema Operativo en C (1973), marcando un hito en la historia del desarrollo de los sitemas operativos, ya que hasta el momento todo el software de sistemas estaba escrito en ensamblador. ****** Referencia a MultiCS, sacarla del Tanaenbaum ************ Existen muchas similaridades entre Unix y el SO Multics. Este ’ultimo fu’e el resultado de un proyecto conjunto entre la General Electric y el MIT, en concreto el grupo del proyecto MAC. Esta similaridades incluyen principalmente: Organizaci’on del sistema de ficheros. Shell como un proceso de usuario. Interface del sistema de ficheros (SF). ****************************************************** A finales de los años 70, en 1974 en concreto, Unix comenz’o a ganar “con finles educativos”, terreno en las universidades. Adem’as, dadas la bondades del entorno del desarrollo de software, y del buen servicio de operaciones de transacciones en redes de comunicaci’on, comenz’o a ser empleado por las compañ’ias telef’onicas. A la primera implementaci’on de sobre el DEC PDP-7, siguieron otras sobre un un PDP-11, y posteriormente en 1977, a un Interdata 8/32. Entre 1977 y 1982, los laboratorios Bell combinaron las variantes del Unix de AT&T dentro de un ’unico sistema. Este sistema se conoci’o como Unix System 1 III. Paulatinamente se fueron añadiendo mejoras, que tuvieron su aparici’on oficial en lo que se denomin’o Unix System V. Entre las razones que marcaron el ’exito de Unix hasta este instante cabe hacer referencia fundamentalmente a dos; por un lado el hecho de estar escrito C, lo que favorec’ia claramente su portabilidad entre m’aquinas de este tipo. La segunda y quiz’as m’as importante raz’on resid’ia en la posibilidad de disponer del c’odigo fuente, lo que permit’ia adaptarlo a las exigencias particulares de cada organizaci’on, y lo que era m’as importante era sencillo de hacer porque estaba escrito en un lenguaje de alto nivel. A prtir de aqu’i hay dos hechos determinantes en la evoluci’on de Unix: El primero lo constituy’o el trabajo desarrollado por la Universidad de California (Berkeley), integrando los protocolos de comunicaci’on en redes con el sistema operativo. Los protocolos TCP/IP, implementados por DARPA -Defense Advanced Research Projects Agency-, perteneciente al departamento de defensa de los Estados Unidos (DoD), se ligaron con much’isimo ’exito al Unix de Berkeley originando BSD-Unix, sin duda el m’as popular de los Unix, empleado de forma ’unica en pr’acticamente la totalidad del mundo acad’emico en su momento. La gran ventaja que aportaba la implementaci’on de estos protocolos realizada por Berkeley, resid’ia en que era capaz de soportar la comunicaci’on entre redes diferentes, como Ethernet, Token-Ring, etc. El otro hecho decisivo se produjo en enero de 1983, AT&T comenz’o a dar soporte de manera oficial al sistema operativo, momento en el que pas’o a ser comercial, marcando un punto de inflexi’on en su desarrollo. En este momento los sistemas tipo Unix m’as importantes que hab’ian eran el System V, y BSD (Berkeley Software Distribution). A mediados de los años 80 Unix se encontraba instalado en much’isimos sistemas diferentes, desde pequeños ordenadores, hasta grandes m’aquinas, un hito que ning’un otro sitema operativo hab’ia conseguido hasta la fecha. Entre los factores del ’exito habr’ia que centrarse en lo que ofrec’ia el sistema que no hab’ia hasta el momento: Es un sistema multiusuario y multiproceso. Cada usuario puede ejecutar varios procesos de forma concurrente, controlando los procesos que ’el crea, su instante de comienzo y su terminaci’on. Arquitectura de m’aquina transparente al usuario. Facilita la escritura de los programas, permitiendo que puedan ejecutarse en diferentes m’aquinas, sobre distinto hardware (Transportabilidad ). El int’erprete de comandos que se encuentra un usuario es constante, con independencia del “origen” de Unix (comercial o de distribuci’on p’ublica), y de la m’auina sobre la que est’e instalado. Soporta un sistema de ficheros jer’arquico. Posee un formato consistente para sus ficheros, lo que le permite proporcionar un Interface Consistente con los dispositivos perif’ericos, facilitando la labor der escritura de aplicaciones. 2 Aunque puede parecer que este sistema operativo es la panac’ea dista bastante de ella, y posee bastante puntos negros: Interface de usuario consistente pero sumamente cr’iptico, la existencia de comandos como grep, awk, man, etc, hace que sea un sistema dif’icil de aprender. Los temas relacionados con la administraci’on del sistema son complejos en la mayor’ia de los casos, y posee variaciones significaivas entre los distintos “tipos” de Unix. Adem’as se ve agrabado por las tareas de administraci’on relacionadas con la comunicaci’on TCP/IP. Al ser un sistema multiusuario, es dif’icil evitar ingerencias externas no deseadas - Problemas de Seguridad. A pesar de todo ello. hoy es el sistema operativo m’as difundido en el mundo si se consideran todas sus variantes, por lo que reultad fundamental conocer un poco m’as a fondo su constituci’on interna. 2. Caractersticas mas relevantes del Sistema Operativo Unix En general, un sistema operativo pude decirse que es el programa - o software de sistemas-, encargado de controlar todas las partes de un ordenador tanto hardware como software, permiti’endonos emplear todas las facilidades que este proporciona. Este programa constituye el alma de la mquina hasta el punto de que todos los ordenadores precisan de un sistema operativo para funcionar. En el caso de Unix, tres son las partes fundamentales que lo constituyen: El n’ucleo o kernel El int’erprete de comandos o shell El sistema de ficheros 2.1. El n’ucleo Como indica su nombre, el n’ucleo es una pieza fundamental dentro de este sistema operativo, hasta el punto que es preciso arrancarlo cada vez que se produce la inicializaci’on del sistema. Su misi’on es gestionar todos y cada uno de los recursos del sistema tanto hardware como software, presentando una interface consistente a cada uno de sus usuarios. Entre las funciones m’as relevantes que se encarga de realizar el n’ucleo se encuentran: La Planificaci’on del trabajo de la CPU. La Gesti’on de memoria y su asignaci’on a los procesos. 3 La Transferencia de datos entre las diferentes partes de la m’aquina. La Aceptaci’on y Ejecucci’on de las instrucciones del int’erprete de comandos. El Control de los permisos del Sistema de Ficheros. Este fichero tan “misterioso” se encuentra almacenado en el directorio raiz /, que contiene tanto el fichero de inicializaci’on (boot), como el propio fichero del n’ucleo para el sistema. El nombre que erecibe este fichero varia de unos sistemas a otros, pero es muy usual que al menos lleve incluida la cadena “nix”. 2.2. El Int’erprete de comandos Siempre que nos conectamos a una sistema Unix, e iniciamos una sesi’on, lo hacemos dentro de un int’erprete de comandos o shell, visible por un s’imbolo o prompt que nos indica que estamos dentro de ’el. Su funcionamiento es muy simple, y se reduce a recibir los comandos que nosotros le enviamos. Se los pasa al n’ucleo, y muestra los resultados generados por este en la pantalla. Entre muchas cosas el int’erprete de comandos tiene como misi’on fundamental proporcionar alguna de las siguientes caracter’istias: Crear un entorno que se adecue a nuestras necesidades de trabajo. Permitir la Escritura de ficheros de comandos Scripts de Shell. Definir alias para los comandos. Manipular un hist’orico de comandos, incrementando las prestaciones. Editar y Completar la linea de comandos, facilitando la localizaci’on de los comandos y ficheros. Etc. Dependiendo del tipo de int’erprete que estemos ejecutando tendremos todas, o parte de las caracter’isticas que acabamos de exponer. Los tipos m’as comunes de int’erpretes son los siguientes: sh (Bourne Shell) csh (C Shell) tcsh (TC Shell) ksh (Korn Shell) bash (Bourne Again Shell) Las diferencias entre ellas son substanciales, aunque las m’as apreciables son aquellas relacionadas con las facilidades interectivas de los int’erpretes m’as modernos. A continuaci’on mostramos una tabla comparativa que resume las caracter’isticas principales de cada una de ellas. ******************* 4 Bourne ______________________________________ Hist’orico de Comandos No command alias No shell scripts filename completion No command line editing No job control 2.3. Si Yes C Yes Yes No No TC Si Yes Yes Si Si Yes Korn Si Si Yes Yes Yes Si Si Yes Yes Yes Si SiSi El sistema de ficheros Unix Un sistema de ficheros constituye una forma l’ogica de organizar y almacenar grandes cantidades de informaci’on de manera que se factible y sencillo su manejo. La unidad m’inima de informaci’on que se maneja en este sitema operativo es el fichero, y el sistema de ficheros es el encargado de su manejo. Sus caracter’isticas son las siguientes: Aunque el usuario no lo percibe, posee diferentes tipos de ficheros: • Ordinarios - se encargan de almacenar informaci’on grfica, o de tipo textual. Ser’an los de uso com’un por parte de los usuarios, pudi’endoles asignar permisos que restringan el acceso a los mismos. Normalmente se organizan en directorios. • Directorios - un directorio es un fichero que almacena informaci’on sobre otros ficheros, b’asicamente almacena dos tipos de informaciones por fichero, su n’ummero de inodo, que en realidad es un puntero al fichero, y el propio fichero, su contenido. As los nombres del fichero act’uan s’olo como enlaces (links) al ficheros y su inodo, porque para el sistema un fichero s’olo es un inodo. • Especiales - son ficheros empleados para representar dispositivos f ’isicos reales como una impresora, una unidad de cinta o un terminal. Los ficheros especiales que representan dispositivos en los sistemas Unix, est’an normalmente almacenados en el directorio /dev. • Pipes - puede verse como un fichero temporal que permite enlazar la ejecuci’on de comandos en Unix. Su misi’on consiste en almacenar los datos proporcionados por la ejecuci’on de un comando hasta que son recogidos como entrada a otro. El sistema de ficheros se encuentra organizado como una jerarqu’ia de directorios que comienza en un directorio raiz o /. Inmediatamente debajo de este, se encuentran varios directorios del sitema con informaci’on espec’ifica que este precisa. • / (root) • /bin - contiene los comandos y utilidades empleados cotidianamente. Almeca ficheros binarios ejecutables, de ah’i su 5 BASH Yes nombre. Entre estos ficheros se encuantran los comandos Unix. • /dev - contiene losficheros especiales empleados en la representaci’on de dispositivos f ’isicos com impresoras y teerminales. • /etc - contiene varios ficheros y comandos empleados fundamentalmente en tareas de administraci’on del sistema. • /lib - almacena las bibliotecas empleadas por otros programas y lenguajes. • /tmp - se emplea como ’area vac’ia de almacenamiento sobre la que guardar temporalmente informaci’on. • /usr - est’a formado por otros muchos subdirectorios, entre ellos cabe destacar uno para cada uno de los usuarios que tienen acceso al sistema, conocidos como home directory. Adem’as almacena tambi’en el texto fuente de las p’aginas de manual. Puesto que un sistem Unix puede tener simult’aneamente m’as de un usuario trabajando sobre ’el (multiusuario), ha de poseer una forma de “forzar” a que trabajen en ’areas separadas y de una forma m’as o menos organizada. Para ello, cada usuario que posee acceso al sistema posee un directorio home al que accede de forma autom’atica cuando se conecta. Normalmente est’an agrupados bajo el directorio /usr. Cuando variamos de directorio, ya no estamos en el home, en ese instante el directorio en el que nos encontramos se conoce como directorio actual. Cada fichero y directorio del sistema poseen un medio de quedar identificados de forma un’ivoca dentro del mismo, esta no es otra que el nombre completo del fichero o directorio. Este nombre puede ser absoluto, si es dado desde el directorio raiz, o relativo si es dado desde el directorio actual. Adem’as existen formas abreviadas de referirse a ciertos directorios en particular .. representa el directorio inmediatamenta superior al actual, . representa el directorio actual y representa el home directory para cada uno de los usuarios que empleen el s’imbolo. El sistema de Ficheros tambin proporciona un forma de permitir o restringir el acceso a aquellos ficheros y directorios de los que somos propietarios, para lo cual hemos de modificar los permisos de los mismos. 3. Sistemas Operativos “Tipo” Unix A continuaci’on comentaremos algunos de los distintos “tipos” de sistemas Unix que existen en la actualidad. 6 3.1. SunOS de Sun Microsystems El sistema operativo SunOS de Sun, fu’e desarrollado por Bill Joy. SunOS emple’o la versi’on 4.2 de BSD como la base sobre la que añadir’ia nuevas caracter’isticas al sistema operativo, especialmente en el ’area de la comunicaci’on empleando redes (networking) - NFS (Network File System), NIS (Network Information Service), RPC (Remote Procedure Call), y XDR (External Data Representation). Las sucesivas generaciones del sistema operativo de Sun, se conoce como Solaris. As’i, por ejemplo, la versi’on 5.O de SunOS que se basa como System V Release 4 (SVR4), se conoce como Solaris 2.0. Sun ha portado el sistema operativo Solaris a la arquitectura Intel 80X86. 3.2. ULTRIX de Digital El sistema operativo ULTRIX de Digital est’a basado en BSD4.2 con algunos añadidos de BSD4.3. Este SO es compatible a nivel de c’odigo fuente con la definici’on de interface de AT&T System V. Digital fu’e la primera empresa delmundo de la inform’atica en lanzar al mercado una versi’on Unix basada en el sistema operativo OSF/1 de la Open Software Foundation(OSF). Los nuevos procesadores Alph de Digital soportan OSF/1, VMS, y Windows NT. 3.3. AIX de IBM El SO AIX de IBM se deriva del Unix SVR1 de AT&T, incluyendo algunas extensiones de SVR2, y SVR3. AIX proporciona soporte para protocolos como TCP/IP, NFS, NCS, SNA y el est’andar X Window. EL AIX/ESA (Enterprise Systems Architecture) Versi’on 2 release 2 se basa en el OSF/1, y ha sido pensado xomo sistema operativo paraa los mainframes tipo 390. AIX/ESA soporta: Tamaño de Sistema de Ficheros superior a 500GB. Sistema X Window, X11R5,6. POSIX 1003.1(especificaci’on de 1990). E/S As’incrona (solapamiento de este tipo de operaciones). En el futuro, AIX/ESA soportar’a: Entorno de gesti’on distribuido de OSF, conocido como DME. Entorno de computaci’on ditribuido conocido como DCE, tambi’en de OSF. Fortran Paralelo 3.4. IRIX de Silicon Graphics (SGI) El SO de Silicon Graphics se conoce con el nombre de IRIX. Est’a basado en el System V Release 3, con algunas incorporaciones de 4.3BSD y de la propia compañ’ia. 7 3.5. BSD 4.x Si dejamos a un lado los laboratorios Bell y AT&T, la instituci’o que m’as influencia ha tenido en la difusi’on y desarrollo del Sistema Opertaivo Unix ha sido sin duda la Universidad de California - Berkeley. En 1976, Bill Joy lider’o un equipo de esta universidad para afrontar el desarrollo de la primera de las versiones de Unix BSD. En 1978, se introdujo una nueva version de 32-bits del mismo sistema operativo, y a partir de este momento, todo el desarrollo se llev’o a cabo sobre un VAX 11/780 que hab’ia sido introducido por Digital ese mismo año. La primera de las versiones de BSD puestas “en circulaci’on” se conoci’o como la release 3BSD. Esta versi’on soportaba memoria virtual, paginaci’on por demanda, y sustituci’on de p’aginas. En 1979, DARPA apoy’o el desarrollo de una versi’on de 3BSD que incluyese soporte para TCP/IP. El apoyo se prolongar’ia despu’es para introducir algunas caracter’isticas especiales en 4.1BSD: Sistema de Ficheros muy r’apido. Cuotas de disco. Interface de socket TCP/IP. El n’umero de versiones que han aparecido desde 3BSD, han sido muchas: 4.0BSD, 4.1BSD, 4.2BSD, 4.3BSD, 4.3BSDTahoe, 4.4BSD, NetBsd0.9, NetBsd1.0, etc. La release 4.3BSD proporcion’o soporte para m’ultiples familias de protocolos de red, como TCP/IP, o XEROX Network System (XNS). Tambi’en proporcion’o para TCP/IP en subredes y encaminamiento. 3.6. XENIX y Unix SCO En el año de 1980, Microsoft introdujo el SO XENIX para los microcomputadores. Este sistema operativo se basa en s’eptima edici’on de 4.1BSD y alguna otram utilidad adicional. La release 3.0 de XENIX incluy’o nuevas caractr’isticas del AT&T System III, hasta que en 1985, tom’o como base definitiva Unix System V. En 1987, Xenix fu’e portado a la familia de sistema Intel 80386 por Santa Cruz (SCO). En paralelo, AT&T y Microsoft aunaron sus esfuerzos, y mezclaron Unix System V con XENIX, obteniendo como resultado Unix System V release 3.2 Aunque en la actualidad SCO sigue dando soporte a XENIX, tambi’en ofrece otros dos SO‘s: SCO UNIX SVR3.2 versi’on 4 y SCO Open DeskTop Release 2.0. SCO UNIX SVR3.2 versi’on 4 soporta configuaraci’on autom’atica del kernel y nivel de seguridad C2. La versi’on OpenDeskTop incluye soporte para el sistema X Window, OSF/MOTIF, y la capacidad de ejecutar aplicaciones DOS. 3.7. SVR4 El Unix SVR4 unific’o las versiones m’as importantes de este sistema opertaivo: SytemV Release 3, XENIX, BSD, y SunOS. System V Release 4 (SVR4) 8 fu’e desarrollado por USL (Unix System Laboratories), supeditado a Unix International (UI). UI es una organizaci’on sin ’animo de lucro que tiene como objetivo unificar el mercado de los sistemas Unix. Las versiones m’as recientes de SVR4 incluyen SVR4 MP y SVR4.1. La primera de ellas, SVR4 MP posee un kernel para procesadores m’ultiples con multithreads, permitiendo el funcionamiento concurrente hasta de 16 procesadores. La versi’on SVR4.1 posee ciertos aditamentos relacionados con el campo de la seguridad, posee un nivel B2 de seguridad. Adem’as de todo esto, SVR4 proporciona soporte para el p‘rocesamiento en tiempo real. Para ello el sistema trabaja con dos tipos de procesos; los de tiempo compartido y los de tiempo real. Se han incorporado un nuevo conjunto de llamadas al sistema incluyendo y adaptando varias de ellas de BSD. Al igual que BSD, SVR4 ofrece resoluci’on en microsegundos para los requisitos de tiempo y as’i permitir la correcta planificaci’on de aquellas aplicaciones que tratec con interavalos de tiempo muy ajustados. Sin embargo, donde m’as trabajo nuevo se fha realizado ha sido en el ’area de la comunicaci’on. Soporta los prtocolos TCP/IP, incluye comando para la transferencia de ficheros, sesiones remotas, y ejecuci’on remota de aplicaciones. Tambi’en se proporciona soporte para NFS, RPC, y protocolos XDR. 3.8. OSF Los miembros principales que componen la Open Software Fundation son IBM, Digital y HP. El sistema operativo disponible para la OSF se denomina OSF/x, donde x representar’a siempre el n’umero de la versi’on, siendo la release actual al dos (OSF/2). OSF/2 incorpora un microkernel aue posee s’olamente 60.000 lineas de c’odigo, por lo que se ha liberado una gran cantidad de memoria que se ha podido aprovechar en otras aplicaciones. Ha sido certificado con un nivel B-3 de seguridad. Los elementos del sistema operativo, como los que controlan los procesos y proporcionan acceso a la CPU se encuentran en el kernel mientras otras partes del sistema operativo son ejecutadas como si fueran aplicaciones normales. El Kernel de OSF/1 se bas’o en el de Mach 2.5 y 3.0 desarrollado por la Universidad de Carnegie-Mellon, que inclu’ia la versi’on BSD4.3 que satisface los requisitos POSIX. La caracter’sitica fundamental de Mach reside en que soporta el empleo de threads concurrentes, facilitando la multiprogramaci’on sim’etrica. Los Threads son secuencias separables de instrucciones relacionadas. OSF/1 incluye tambi’en porciones de AIX de IBM, y parte de la implementaci’on de mutiproceso sim’etrico de Encore Computers. La tecnolog’ia que en la actualidad est’a ofreciendo OSF incluye DCE, DME y Motif. El OSF/DCE (Distruted Computing Environent) ha sido especificado de forma completa. El c’odigo DCE est’a disponible tanto para los miembros como los no miembros de OSF; y recientemente USL ha anunciado su intenci’on de dar soporte a las especificaciones DCE. Los elementos de DCE incluyen la funcionalidad de las capas de red desde el nivel 4 al 7. Las tecnolog’ias adoptadas de otros incluyen: las RPC‘s de HP Apollo (con extensiones de IBM y Digital), el DNS de Digital, el servicio X.500 de Siemens-Nixdorf, el servicio de autenticaci’on del MIT, Kerberos, y el sistema de ficheros Andrew (AFS) de Transarc Corporation, con aluguna extensi’on del NFS de Sun. 9 3.9. HP-UX Est’a basado en UNIX System V Release 3.0. Hewlettt-Packard es miembro fundador de OSF, as’i que es probeble que el futuro, el kernel del nuevo HP-UX est’e basado en el kernel de OSF/1. 3.10. NeXTStep La release 3.0 de NeXTStep es un sistema operativo orientado a objetos, que se ejecuta sobre un sistema Motorola 68040. El sistema opertaivo de NeXT est’a basado en la versi’on del SO Mach 2.5 de Carnegie-Mellon. La version NeXTStepo 3.0 incluye: Cliente Netware - de esta forma la m’aquina NeXT puede obtener recurso de los servidores de ficheros Novell, empleando para ello el protocolo IPX/SPX. Esto permite montar volumenes NetWare e imprimir por impresoras Netware. Clientes AppleShare - permiten montar discos flexibles de 1,44 MB de ordenadores Macintosh, discos SCSI, y unidades CD-ROM. Tambi’en es posible que un host NeXT imprima por un im‘resora AppleShare. El sistema operativo NeXT soprta los protocolos AppleTalk tanto de Phase 1 como Phase 2. 3.11. Coherent Este sistema operativo es un sistema de apariencia UNIX proporcionada por Mark Williams Company. El Choerent 4.0 soporta la arquitectura Intel 80386 de 32-bits, e incluye m’as de 200 comandos de apariencia Unix, un compilar de C, make, lex, yacc, nroff/troff, las shells Korn and Bourne, e implementraciones de EMACS y Kermit. EN el futuro tiene previsto incorporarse soporte para los protocolos TCP/IP, X Window, ANSI C, y streams o sockets. 10