Está en la página 1de 18

INTRODUCCION

El sistema Unix es un sistema operativo que admite mltiples usuarios, as como tambin mltiples tareas, lo que significa que permite que en un nico equipo o multiprocesador se ejecuten simultneamente varios programas a cargo de uno o varios usuarios. Este sistema cuenta con uno o varios intrpretes de comando (shell) as como tambin con un gran nmero de comandos y muchas utilidades (ensambladores, compiladores para varios idiomas, procesador de textos, correo electrnico, etc.). Adems, es altamente transportable, lo que significa que es posible implementar un sistema Unix en casi todas las plataformas de hardware. A de mas de ser de tiempo real.

DESARROLLO
A finales de 1960, 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 gran 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 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 escribi nuevamente el programa, con ayuda de Dennis Ritchie, 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. 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 acrnimoUniplexed Information and Computing System, pues solo prestaba servicios a dos usuarios (de acuerdo con Andrew Tanenbaum, era solo a un usuario ). La autora de esta sigla se le atribuye aBrian 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 (pues eunuchs, en ingls, es un homfono de UNICS), se cambi el nombre a UNIX, dando origen al legado que llega hasta nuestros das. 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 (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 Thomson y Ritchie publicaron un manual de programacin de UNIX (ttulo original en ingls: "UNIX Programmer's Manual"). 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 (de esta manera, se volva portable) 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 from Bell Labs, un nuevo sistema operativo portable y distribuido, diseado para ser el sucesor de UNIX en investigacin por los Laboratorios Bell. Este seria el aspecto UNIX sobre los fines de la dcada de 1980 utilizando XWindow System creado por el MIT

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 1. Esta versin present caractersticas tales como el editor Vi y la biblioteca curses, desarrolladas por Berkeley Software Distribution en la Universidad de California, Berkeley. Tambin contaba con compatibilidad con las mquinas VAX de la compaa DEC. Hacia 1991, un estudiante de ciencias de la computacin de la Universidad de Helsinki, llamado Linus Torvalds desarroll un ncleo para computadoras con arquitectura x86 de Intel que emulaba muchas de las funcionalidades de UNIX y lo lanz en forma de cdigo abierto en 1991, bajo el nombre de Linux. En 1992, el Proyecto GNU comenz a utilizar el ncleo Linux junto a sus programas. 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. Aunque BSD gan el juicio, Novell descubri que gran parte del cdigo de BSD fue copiada ilegalmente en UNIX System V. En realidad, la propiedad intelectual de Novell se reduca a unos cuantos archivos fuente. La correspondiente contra-demanda acab en un acuerdo extrajudicial cuyos trminos permanecen bajo secreto a peticin de Novell. 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.

FAMILIAS

Como se puede deducir de esta breve resea histrica, existen varias familias del sistema operativo UNIX, que han evolucionado de manera independiente a lo largo de los aos. Cada familia se distingue no tanto por sus diferencias tcnicas como por sus diferencias en propiedad intelectual. Se observa que todas las familias se han visto contaminadas, directa o indirectamente, por otras familias.

Implementacin mas importante


A lo largo de la historia ha surgido una gran multitud de implementaciones comerciales de UNIX. Sin embargo, un conjunto reducido de productos han consolidado el mercado y prevalecen gracias a un continuo esfuerzo de desarrollo por parte de sus fabricantes. Los ms importantes son:

Solaris 10, un sistema operativo derivado de la rama System V

Solaris de Sun Microsystems. Uno de los sistemas operativos Unix ms difundidos en el entorno empresarial y conocido por su gran estabilidad. Parte del cdigo fuente de Solaris se ha liberado con licencia de fuentes abiertas (OpenSolaris). AIX de IBM. El UNIX "propietario" de IBM cumpli 20 aos de vida en el 2006 y contina en pleno desarrollo, con una perceptible herencia del mainframe en campos como la virtualizacin o la RAS de los servicios, heredada de sus "hermanos mayores". HP-UX de Hewlett-Packard. Este sistema operativo tambin naci ligado a las computadoras departamentales de este fabricante. Tambin es un sistema operativo estable que continua en desarrollo. Mac OS X. Se trata de un UNIX completo, aprobado por The Open Group. Su diferencia marcada es que posee una interfaz grfica propietaria llamadaAqua, y es principalmente desarrollada en Objective-C en lugar de C o C++. de

Existen sistemas operativos basados en el ncleo Linux, y el conjunto aplicaciones GNU (tambin denominado GNU/Linux), entre las ms utilizadas encontramos:

Red Hat Enterprise Linux. Cuyo fabricante Red Hat es conocido por su amplia gama de soluciones y aportes al desarrollo de software libre. Apoya el proyecto Fedora del cual se beneficia y de ella se derivan distribuciones compatibles como Oracle Enterprise Linux y CentOS, tambin distribuciones como Mandriva Linux, se bas en una de sus primeras versiones. SUSE Linux de Novell. Originalmente liberado por la compaa alemana SuSE. Es popular por sus herramientas de administracin centralizada. De manera anloga a RedHat con Fedora, apoya el proyecto openSUSE. Debian GNU/Linux. Con una de las comunidades ms grandes y antiguas del movimiento de software libre, es base para distribuciones como Xandros, Mepis, Linspire y Ubuntu.

Tambin son populares los sistemas operativos descendientes del 4.4BSD: FreeBSD. Quiz el sistema operativo ms popular de la familia, de propsito mltiple. Con una implementacin SMP muy elaborada, es el sistema operativo utilizado por los servidores de Yahoo. Y base de muchos sistemas operativos entre ellos Mac OS X de Apple. OpenBSD. Ampliamente reconocida por su seguridad proactiva y auditora permanente del cdigo fuente. Es utilizada en ambientes donde la seguridad prima sobre todo, es usual encontrarlo instalado en servidores que actan como Firewall, VPN o Proxy. NetBSD. Se le conoce por su portabilidad, a octubre de 2008: 53 arquitecturas soportadas. La NASA lo ha utilizado para la investigacin en redes TCP/IP satelitales, al igual que para reciclar computadoras viejas con software moderno.

Caractersticas Generales: 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 deperifricos conectados a la mquina. Posee las siguientes caractersticas:

- Es un sistrema operativo multiusuario, con capacidad de simular multiprocesamiento y procesamiento no interactivo. - Est escrito en un lenguaje de alto nivel : C. - Dispone de un lenguaje de control programable llamado SHELL. - Ofrece facilidades para la creacin de programas y sistemas y el ambiente adecuado para las tareas de diseos de software. - Emplea manejo dinmico de memoria por intercambio o paginacin. - Tiene capacidad de interconexin de procesos. - Permite comunicacin entre procesos. - Emplea un sistema jerrquico archivos, cuentas y procesos. de archivos, con facilidades de proteccin de

- Tiene facilidad para redireccionamiento de Entradas/Salidas. - Garantiza un alto grado de portabilidad. El sistema se basa en un Ncleo llamado Kernel, que reside permanentemente en la memoria, y que atiende a todas las llamadas del sistema, administra el acceso a los archivos y el inicio o la suspencin de las tareas de los usuarios. La comunacin con el sistema UNIX se da mediante un programa de control llamado SHELL. Este es un lenguaje de control, un intrprete, y un lenguaje de programacin, cuyas caractersticas lo hacen sumamente flexible para las tareas de un centro de cmputo. Como lenguaje de programacin abarca los siguientes aspectos: - Ofrece las estructuras de control normales: secuenciacin, iteracin condicional, seleccin y otras. - Paso de parmetros. - Sustitucin textual de variables y Cadenas. - Comunicacin bidireccional entre rdenes de shell. El shell permite modificar en forma dinmica las caractersticas con que se ejecutan los programas en UNIX: Las entradas y salidas pueden ser redireccionadas o redirigidas hacia archivos, procesos y dispositivos; Es posible interconectar procesos entre s. Diferentes usuarios pueden "ver" versiones distintas del sistema operativo debido a la capacidad del shell para configurar diversos ambientes de ejecucin. Por ejemplo, se puede hacer que un usuario entre directamente a su seccin, ejecute un programa en particular y salga automticamente del sistema al terminar de usarlo.

El ncleo del sistema operativo

El ncleo del sistema operativo Unix (llamado Kernel) es un programa escrito casi en su totalidad en lenguaje C, con excepcin de una parte del manejo de interrupciones, expresada en el lenguaje ensamblador del procesador en el que opera. Las funciones del ncleo son permitir la existencia de un ambiente en el que sea posible atender a varios usuarios y mltiples tareas en forma concurrente, repartiendo al procesador entre todos ellos, e intentando mantener en grado ptimo la atencin individual. El Kernel opera como asignador de recursos para cualquier proceso que necesite hacer uso de las facilidades de cmputo. Es el componente central de Unix y tiene las siguientes funciones: - Creacin de procesos, asignacin de tiempos de atencin y sincronizacin. - Asignacin de la atencin del procesador a los procesos que lo requieren. - Administracin de espacio en el sistema de archivos, que incluye: acceso, proteccin y administracin de usuarios; comunicacin entre usuarios v entre procesos, y manipulacin de E/S y administracin de perifricos. - Supervisin de la transmisin de datos entre la memoria principal y los dispositivos perifricos. El Kernel reside siempre en la memoria central y tiene el control sobre la computadora, por lo que ningn otro proceso puede interrumpirlo; slo pueden llamarlo para que proporcione algn servicio de los ya mencionados. Un proceso llama al Kernel mediante mdulos especiales conocidos como llamadas al sistema. El Kernel consta de dos artes principales: la seccin de control de procesos y la de control de dispositivos. La primera asigna recursos, programas, procesos y atiende sus requerimientos de servicio; la segunda, supervisa la transferencia de datos entre la memoria principal y los dispositivos perifricos. En trminos generales, cada vez que algn usuario oprime una tecla de una terminal, o que se debe leer o escribir informacin del disco magntico, se interrumpe al procesador central y el ncleo se encarga de efectuar la operacin de transferencia.

Cuando se inicia la operacin de la computadora, debe cargarse en la memoria una copia del ncleo, que reside en e] disco magntico (operacin denominada bootstrap). Para ello, se

deben inicializar algunas interfaces bsicas de hardware; entre ellas, el reloj que proporciona interrupciones peridicas. El Kernel tambin prepara algunas estructuras de datos que abarcan una seccin de almacenamiento temporal para transferencia de informacin entre terminales y procesos, una seccin para almacenamiento de descriptores de archivos y una variable que indica la cantidad de memoria principal. A continuacin, el Kernel inicializa un proceso especial, llamado proceso 0. En general, los procesos se crean mediante una llamada a una rutina del sistema (fork), que funciona por un mecanismo de duplicacin de procesos. Sin embargo, esto no es suficiente para crear el primero de ellos, por lo que el Kernel asigna una estructura de datos y establece apuntadores a una seccin especial de la memoria, llamada tabla de procesos, que contendr los descriptores de cada uno de los procesos existentes en el sistema. Despus de haber creado el proceso 0, se hace una copia del mismo, con lo que se crea el proceso 1; ste muy pronto se encargar de "dar vida" al sistema completo, mediante la activacin de otros procesos que tambin forman parte del ncleo. Es decir, se inicia una cadena de activaciones de procesos, entre los cuales destaca el conocido como despachador, o scheduler, que es el responsable de decidir cul proceso se ejecutar y cules van a entrar o salir de la memoria central. A partir de ese momento se conoce el nmero 1 como proceso de inicializacin del sistema, init. El proceso init es el responsable de establecer la estructura de procesos en Unix. Normalmente, es capaz de crear al menos dos estructuras distintas de procesos: el modo monousuario y el multiusuario. Comienza activando el intrprete del lenguaje de control (Shell) en la terminal principal, o consola, del sistema y proporcionndole privilegios de "superusuario". En la modalidad de un solo usuario la consola permite iniciar una primera sesin, con privilegios especiales, e impide que las otras lneas de comunicacin acepten iniciar sesiones nuevas. Esta modalidad se usa con frecuencia para revisar y reparar sistemas de archivos, realizar pruebas de funciones bsicas del sistema y para otras actividades que requieren uso exclusivo de la computadora. Init crea otro proceso, que espera pacientemente a que alguien entre en sesin en alguna lnea de comunicacin. Cuando esto sucede, realiza ajustes en el protocolo de la lnea y ejecuta el programa login, que se encarga de atender inicialmente a los nuevos usuarios. Si la clave del usuario, y la contrasea proporcionadas son las correctas, entonces entra en operacin el programa Shell, que en lo sucesivo se encargar de la atencin normal del usuario que se dio de alta en esa terminal. A partir de ese momento el responsable de atender al usuario en esa terminal es el intrprete Shell. Cuando se desea terminar la sesin hay que desconectarse de Shell (y, por lo tanto, de Unix), mediante una secuencia especial de teclas (usualmente. < CTL > - D). A partir de ese momento la terminal queda disponible para atender a un nuevo usuario.

Administracin de Archivos y Directorios El sistema de archivos de Unix; esta basado en un modelo arborescente y recursivo, en el cual los nodos pueden ser tanto archivos como directorios, y estos ltimos pueden contener a su vez directorios o subdirectorios. Debido a esta filosofa, se maneja al sistema con muy pocas rdenes, que permiten una gran gama de posibilidades. Todo archivo de Unix est controlado por mltiples niveles de proteccin, que especifican los permisos de acceso al mismo. La diferencia que existe entre un archivo de datos, un programa, un manejador de entrada/salida o una instruccin ejecutable se refleja en estos parmetros, de modo que el sistema operativo adquiere caractersticas de coherencia y elegancia que lo distinguen. La raz del sistema de archivos (conocida como root ) se denota con el smbolo "/", y de ah se desprende un conjunto de directorios que contienen todos los archivos del sistema de cmputo. Cada directorio, a su vez, funciona como la subraz de un nuevo rbol que depende de l y que tambin puede estar formado por directorios o subdirectorios y archivos. Un archivo siempre ocupar el nivel ms bajo dentro del rbol, porque de un archivo no pueden depender otros; si as fuera, sera un directorio. Es decir, los archivos son como las hojas del rbol. Se define en forma unvoca el nombre de todo archivo (o directorio) mediante lo que se conoce como su trayectoria (path name): es decir, el conjunto completo de directorios, a partir de root (/), por los que hay que pasar para poder llegar al directorio o archivo deseado. Cada nombre se separa de los otros con el smbolo /, aunque tan slo el primero de ellos se refiere a la raz. Por ejemplo, el archivo:

Manejo de archivos y de informacin Como ya se describi, la estructura bsica del sistema de archivos es jerrquica, lo que significa que los archivos estn almacenados en varios niveles. Se puede tener acceso a cualquier archivo mediante su trayectoria, que especifica su posicin absoluta en la jerarqua, y los usuarios pueden

cambiar su directorio actual a la posicin deseada. Existe tambin un mecanismo de proteccin para evitar accesos no autorizados. Los directorios contienen informacin para cada archivo, que consiste en su nombre y en un nmero que el Kernel utiliza para manejar la estructura interna del sistema de archivos, conocido como el nodo-i. Hay un nodo-i para cada archivo, que contiene informacin de su directorio en el disco, su longitud, los modos y las fechas de acceso, el autor, etc. Existe, adems, una tabla de descriptores de archivo, que es una estructura de datos residente en el disco magntico, a la que se tiene acceso mediante el sistema mencionado de E/S por bloques. El control del espacio libre en el disco se mantiene mediante una lista ligada de bloques disponibles. Cada bloque contiene la direccin en disco del siguiente bloque en la cadena. El espacio restante contiene las direcciones de grupos de bloques del disco que se encuentren libres. De esta forma, con una operacin de E/S, el sistema obtiene un conjunto de bloques libres y un apuntador para conseguir ms. Las operaciones de E/S en archivos se llevan a cabo con la ayuda de la correspondiente entrada del nodo-i en la tabla de archivos del sistema. El usuario normalmente desconoce los nodos-i porque las referencias se hacen por el nombre simblico de la trayectoria. Los procesos emplean internamente funciones primitivas (llamadas al sistema) para tener acceso a los archivos; las ms comunes son open, creat, read, write, seek, close y unlink, aunque slo son empleadas por los programadores, no por los usuarios finales del sistema. Toda esta estructura fsica se maneja "desde afuera" mediante la filosofa jerrquica de archivos y directorios ya mencionada, y en forma totalmente transparente para el usuario. Adems, desde el punto de vista del sistema operativo, un archivo es muy parecido a un dispositivo. Las ventajas de tratar a los dispositivos de E/S en forma similar a los archivos normales son mltiples: un archivo y un dispositivo de E/S se tornan muy parecidos; los nombres de los archivos y de los dispositivos tienen la misma sintaxis y significado, as que a un programa que espera un nombre de archivo como parmetro puede drsele un nombre de dispositivo (con esto se logra interaccin rpida y fcil entre procesos de alto nivel). El sistema Unix ofrece varios niveles de proteccin para el sistema de archivos, que consisten en asignar a cada archivo el nmero nico de identificacin de su dueo, junto con nueve bits de proteccin, que especifican permisos de lectura, escritura y ejecucin para el propietario, para otros miembros de su grupo (definido por el administrador del sistema) y para el resto de los usuarios. Antes de cualquier acceso se verifica su validez consultando estos bits, que residen en el nodo-i de todo archivo. Adems, existen otros tres bits que se emplean para manejos especiales, relacionados con la clave del superusuario. Otra caracterstica de Unix es que no requiere que el conjunto de sistemas de archivos resida en un mismo dispositivo. Es posible definir uno o varios sistemas "desmontables", que residen fsicamente en diversas unidades de disco. Existe una orden (mkfs) que permite crear un sistema de archivos adicional, y una llamada al sistema (mount) con la que se aade (y otra con la que se desmonta) uno de ellos al sistema de archivos global. EI control de las impresoras de una computadora que funciona con el sistema operativo Unix consiste en un subsistema (SPOOL) que se encarga de coordinar los pedidos de impresin de mltiples usuarios. Existe un proceso de Kernel que en forma peridica revise las colas de servicio de las impresoras para detectar la existencia de pedidos e iniciar entonces las tareas de impresin.

Este tipo de procesos, que son activados en forma peridica por el ncleo del sistema operativo, reciben en Unix el nombre de daemons (duendes), tal vez porque se despiertan y aparecen sin previo aviso. Otros se encargan de activar procesos en tiempos previamente determinados por el usuario, o de escribir peridicamente los contenidos de los buffers de memoria en el disco magntico. Procesos. Manejo del Procesador En Unix se ejecutan programas en un medio llamado "proceso de usuario". Cuando se requiere una funcin del Kernel, el proceso de usuario hace una llamada especial al sistema y entonces el control pasa temporalmente al ncleo. Para esto se requiere de un conjunto de elementos de uso interno, que se mencionan a continuacin. Se conoce como imagen a una especie de fotografa del ambiente de ejecucin de un proceso, que incluye una descripcin de la memoria, valores de registros generales, status de archivos abiertos, el directorio actual, etctera. Una imagen es el estado actual de una computadora virtual, dedicada a un proceso en particular. Un proceso se define como la ejecucin de una imagen. Mientras el procesador ejecuta un proceso, la imagen debe residir en la memoria principal; durante la ejecucin de otros procesos permanece primera en la memoria principal a mens que la aparicin de un proceso activo de mayor prioridad la obligue a ser copiada al disco, como ya se dijo. Un proceso puede encontrarse en uno de varios estados: en ejecucin; listo para ejecutar, o en espera. Cuando se invoca una funcin del sistema, el proceso de usuario llama al Kernel como subrutina. Hay un cambio de ambientes y, como resultado, se tiene un proceso del sistema. Estos dos procesos son dos fases del mismo original, que nunca se ejecutan en forma simultnea. Existe una tabla de procesos que contiene una entrada por cada uno de ellos con los datos que requiere el sistema: identificacin, direcciones de los segmentos que emplea en la memoria, informacin que necesita el scheduler y otros. la entrada de la tabla de procesos se asigna cuando se crea el proceso y se libera cuando ste termina. Para crear un proceso se requiere la inicializacin de una entrada en la tabla, as como la creacin de segmentos de texto y de datos. Adems, es necesario modificar la tabla cuando cambia el estado del proceso o cuando recibe un mensaje de otro (para sincronizacin, por ejemplo). Cuando un proceso termina, su entrada en la tabla se libera y queda otro disponible para que otro nuevo la utilice. En el sistema operativo Unix los procesos pueden comunicarse internamente entre s, mediante el envo de mensajes o seales. El mecanismo conocido como interconexin (pipe) crea un canal entre dos procesos mediante una llamada a una rutina del Kernel, y se emplea tanto para pasar datos unidireccionalmente entre las imgenes de ambos, como para sincronizarlos, ya que si un proceso intenta escribir en un pipe ocupado, debe esperar a que el receptor lea los datos pendientes. Lo mismo ocurre en el caso de una lectura de datos inexistentes: el proceso que intenta leer debe esperar a que el proceso productor deposite los datos en el canal de intercomunicacin.

Entre las diferentes llamadas al sistema para el manejo de procesos que existen en Unix estn las siguientes, algunas de las cuales ya han sido mencionadas: fork (sacar una copia a un proceso); exec (cambiar la identidad de un proceso); kill (enviar una seal a un proceso); signal (especificar la accin por ejecutar cuando se recibe una seal de otro proceso), y exit (terminar un proceso). Dentro de las tareas del manejo del procesador destaca la asignacin dinmica (scheduling), que en Unix resuelve el scheduler mediante un mecanismo de prioridades. Cada proceso tiene asignada una prioridad; las prioridades de los procesos de usuario son menores que la ms pequea de un proceso del sistema. El "motor" que mantiene en movimiento un esquema de multiprogramacin es, por un lado, el conjunto de interrupciones que genera el desempeo de los procesos y, por otro, los constantes recordatorios que hace el reloj del procesador para indicar que se termin la fraccin de tiempo dedicada a cada proceso. En el sistema Unix, las interrupciones son causadas por lo que se conoce como eventos, entre los cuales se consideran: la ejecucin de una tarea de entrada/salida; la terminacin de los procesos dependientes de otro; la terminacin de la fraccin de tiempo asignada a un proceso, y la recepcin de una seal desde otro proceso. En un sistema de tiempo compartido se divide el tiempo en un determinado nmero de intervalos o fracciones y se asigna cada una de ellas a un proceso. Adems Unix toma en consideracin que hay procesos en espera de una operacin de E/S y que ya no pueden aprovechar su fraccin. Para asegurar una distribucin adecuada del procesador entre los procesos se calculan dinmicamente las prioridades de estos ltimos, con el fin de determinar cul ser el proceso que se ejecutar cuando se suspenda el proceso activo actual. Manejo De Memoria Dependiendo de la computadora en la que se ejecute, Unix utiliza dos tcnicas de manejo de memoria: swapping y memoria virtual. Lo estndar en Unix es un sistema de intercambio de segmentos de un proceso entre memoria principal y memoria secundaria, llamado swapping lo que significa que se debe mover la imagen de un proceso al disco si ste excede la capacidad de la memoria principal, y copiar el proceso completo a memoria secundaria. Es decir, durante su ejecucin, los procesos son cambiados de y hacia memoria secundaria conforme se requiera. Si un proceso necesita crecer, pide ms memoria al sistema operativo y se le da una nueva seccin, lo suficientemente grande para acomodarlo. Entonces, se copia el contenido de la seccin usada al rea nueva, se libera la seccin antigua y se actualizan las tablas de descriptores de procesos. Si no hay suficiente memoria en el momento de la expansin, el proceso se bloquea temporalmente y se le asigna espacio en memoria secundaria. Se copia a disco y, posteriormente, cuando se tiene el espacio adecuado - lo cual sucede normalmente en algunos segundos - se devuelve a memoria principal. Est claro que el proceso que se encarga de los intercambios entre memoria y disco (llamado swapper) debe ser especial y jams podr perder su posicin privilegiada en la memoria central. El Kernel se encarga de que nadie intente siquiera interrumpir este proceso, del cual dependen todos los dems. Este es el proceso 0 mencionado antes. Cuando se decide traer a la memoria principal un proceso en estado de "listo para ejecutar", se le asigna memoria y se copian all sus segmentos. Entonces, el proceso cargado compite por el procesador con todos los dems procesos cargados.

Si no hay suficiente memoria, el proceso de intercambio examine la tabla de procesos para determinar cul puede ser interrumpido y llevado al disco. Hay una pregunta que surge entonces es cul de los posibles procesos que estn cargados ser desactivado y cambiado a memoria secundaria? Los procesos que se eligen primero son aquellos que estn esperando operaciones lentas (E/S), o que llevan cierto tiempo sin haberse movido al disco. La idea es tratar de repartir en forma equitativa las oportunidades de ejecucin entre todos los procesos, tomando en cuenta sus historias recientes y sus patrones de ejecucin. Otra pregunta es cul de todos los procesos que estn en el disco ser trado a memoria principal?. La decisin se toma con base en el tiempo de residencia en memoria secundaria. El proceso ms antiguo es el que se llama primero, con una pequea penalizacin para los grandes. Cuando Unix opera en mquinas ms grandes, suele disponer de manejo de memoria de paginacin por demanda. En algunos sistemas el tamao de la pgina en Unix es de 512 bytes; en otros, de 1024. Para reemplazo se usa un algoritmo que mantiene en memoria las pginas empleadas ms recientemente. Un sistema de paginacin por demanda ofrece muchas ventajas en cuanto a flexibilidad y agilidad en la atencin concurrente de mltiples procesos y proporciona, adems, memoria virtual, es decir, la capacidad de trabajar con procesos mayores que el de la memoria central. Estos esquemas son bastante complejos y requieren del apoyo de hardware especializado. Manejo de entradas y salidas El sistema de entrada/salida se divide en dos sistemas complementarios: el estructurado por bloques y el estructurado por caracteres. El primero se usa para manejar cintas y discos magnticos, y emplea bloques de tamao fijo (512 o 1024 bytes) para leer o escribir. El segundo se utiliza para atender a las terminales, lneas de comunicacin e impresoras, y funciona byte por byte. En general, el sistema Unix emplea programas especiales (escritos en C) conocidos como manejadores (drivers) para atender a cada familia de dispositivos de E/S. Los procesos se comunican con los dispositivos mediante llamadas a su manejador. Adems, desde el punto de vista de los procesos, los manejadores aparecen como si fueran archivos en los que se lee o escribe; con esto se logra gran homogeneidad y elegancia en el diseo. Cada dispositivo se estructura internamente mediante descriptores llamados nmero mayor, nmero menor y clase (de bloque o de caracteres). Para cada clase hay un conjunto de entradas, en una tabla, que aporta a los manejadores de los dispositivos. El nmero mayor se usa para asignar manejador, correspondiente a una familia de dispositivos; el menor pasa al manejador como un argumento, y ste lo emplea para tener acceso a uno de varios dispositivos fsicos semejantes. Las rutinas que el sistema emplea para ejecutar operaciones de E/S estn diseadas para eliminar las diferencias entre los dispositivos y los tipos de acceso. No existe distincin entre acceso aleatorio y secuencial, ni hay un tamao de registro lgico impuesto por el sistema. El tamao de un archivo ordinario est determinado por el nmero de bytes escritos en l; no es necesario predeterminar el tamao de un archivo. El sistema mantiene una lista de reas de almacenamiento temporal (buffers), asignadas a los dispositivos de bloques. El Kernel usa estos buffers con el objeto de reducir el trfico de E/S. Cuando un programa solicita una transferencia, se busca primero en los buffers internos para ver si

el bloque que se requiere ya se encuentra en la memoria principal (como resultado de una operacin de lectura anterior). Si es as, entonces no ser necesario realizar la operacin fsica de entrada o salida. Existe todo un mecanismo de manipulacin interna de buffers (y otro de manejo de listas de bytes), necesario para controlar el flujo de datos entre los dispositivos de bloques (y de caracteres) y los programas que los requieren. Por ltimo, y debido a que los manejadores de los dispositivos son programas escritos en lenguaje C, es relativamente fcil reconfigurar el sistema para ampliar o eliminar dispositivos de E/S en la computadora, as como para incluir tipos nuevos. Lenguaje de control del sistema operativo Entre los rasgos distintivos de Unix est el lenguaje de control que emplea, llamado Shell. Es importante analizar dos funciones ms de Shell, llamadas redireccionamiento e Interconexin. Asociado con cada proceso hay un conjunto de descriptores de archivo numerados 0, I y 2, que se utilizan para todas las transacciones entre los procesos y el sistema operativo. El descriptor de archivo 0 se conoce como la entrada estndar; el descriptor de archivo 1, como la salida estndar, y el descriptor 2, como el error estndar. En general, todos estn asociados con la terminal de vdeo, pero, debido a que inicialmente son establecidos por Shell, es posible reasignarlos. Una parte de la orden que comience con el smbolo? se considera como el nombre del archivo que ser abierto por Shell y que se asociar con la entrada estndar; en su ausencia, la entrada estndar se asigna a la terminal. En forma similar, un archivo cuyo nombre est precedido por el smbolo > recibe la salida estndar de las operaciones. Cuando Shell interpreta la orden califica < examen > resulta llama a ejecucin al programa califica (que ya debe estar compilado y listo para ejecutar) y detecta la existencia de un archivo que toma el lugar de la entrada estndar y de otro que reemplaza a la salida estndar. Despus, pasa como datos de lectura los contenidos del archivo examen recin abierto (que debe existir previamente) al programa ejecutable. Conforme el programa produce datos como salida, stos se guardan en el archivo resulta que Shell crea en ese momento. En la teora de lenguajes formales desempean un importante papel las gramticas llamadas de tipo 3 (tambin conocidas como regulares), que tienen mltiples aplicaciones en el manejo de lenguajes. Existen unas construcciones gramaticales conocidas como expresiones regulares, con las que se puede hacer referencia a un conjunto ilimitado de nombres con estructura lexicogrfica similar; esto lo aprovecha Shell para dar al usuario facilidades expresivas adicionales en el manejo de los nombres de los archivos. As, por ejemplo, el nombre carta * se refiere a todos los archivos que comiencen con el prefijo carta* y que sean seguidos por cualquier subcadena, incluyendo la cadena vaca; por ello, si se incluye el nombre carta* en alguna orden, Shell la aplicar a los archivos carta, carta1, carta2 y cualquier otro que cumpla con esa especificacin abreviada. En general, en lugares donde se emplea un nombre o una trayectoria, Shell permite utilizar una expresin regular que sirve como abreviatura para toda una familia de ellos, y automticamente repite el pedido de atencin para los componentes. Existen adems otros caracteres especiales que Shell reconoce y emplea para el manejo de expresiones regulares, lo que proporciona al lenguaje de control de Unix mayor potencia y capacidad expresiva.

En Unix existe tambin la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, sino simulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). Esto se logra agregando el smbolo & al final de la lnea en la que se escribe la orden de ejecucin. Como resultado, Shell no espera que el proceso "hijo'' termine de ejecutar (como hara normalmente), sino que regresa a atender al usuario inmediatamente despus de haber creado el proceso asincrnico, simulando en esta forma el procesamiento por lotes ( batch ) Para cada uno de estos procesos Shell proporciona, adems, el nmero de identificacin, por lo que si fuera necesario el usuario podra cancelarlo posteriormente, o averiguar el avance de la ejecucin. La comunicacin interna entre procesos (es decir, el envo de mensajes con los que los diversos procesos se sincronizan y coordinan) ocurre mediante el mecanismo de interconexiones (pipes) ya mencionado, que conecta la salida estndar de un programa a la entrada estndar de otro, como si fuera un conducto con dos extremos, cada uno de los cuales est conectado a su vez a un proceso distinto. Desde Shell puede emplearse este mecanismo con el smbolo | en la lnea donde se escribe la orden de ejecucin. As en el ejemplo: (califica < tarea | sorte > lista) & se emplean las caractersticas de interconexin, redireccionamiento y asincrona de procesos para lograr resultados difciles de obtener en otros sistemas operativos. Aqu se pide que, en forma asincrnica (es decir, dejando que la terminal siga disponible para atender otras tareas del mismo usuario), se ejecute el programa califica para que lea los datos que requiere del archivo tareas; al terminar, se conectar con el proceso sort (es decir, pasar los resultados intermedios) para que contine el procesamiento y se arreglen los resultados en orden alfabtico; al final de todo esto, los resultados quedarn en el archivo lista. Con esta otra orden, por ejemplo, se busca obtener todos los renglones que contengan las palabras "contrato" o "empleado" en los archivos en disco cuyos nombres comiencen con la letra "E" (lo cual se denota mediante una expresin regular). Para lograrlo, se hace uso de una funcin llamada egrep, especial para el manejo de patrones y combinaciones de expresiones regulares dentro de los archivos: egrep-n 'contrato' 'empleado' E * Los resultados aparecen as: Emple1: 5: en caso de que un empleado decide hacer uso de la facilidad, Emple1:7: y el contrato as lo considere las obligaciones de la Emple2:9: Clusula II: El contrato colectivo de trabajo Emple2:15: Fraccin llI: El empleado tendr derecho, de acuerdo con lo El tercer rengln, por ejemplo, muestra el noveno rengln del archivo Emple2, que contiene una de las palabras buscadas. Como Unix fue diseado para servir de entorno en las labores de diseo y produccin de programas, ofrece - adems de su filosofa misma - un rico conjunto de herramientas para la creacin de sistemas complejos, entre las que destaca el subsistema make. Este ltimo ofrece una especie de lenguaje muy sencillo, con el cual el programador describe las relaciones estructurales

entre los mdulos que configuran un sistema completo, para que de ah en adelante make se encargue de mantener el sistema siempre al da. Es decir, si se modifica algn mdulo, se reemplaza o se aade otro, las compilaciones individuales, as como las cargas y ligas a que haya lugar, sern realizadas en forma automtica, por esta herramienta. Con una sola orden, entonces, es posible efectuar decenas de compilaciones y ligas predefinidas entre mdulos, y asegurarse de que en todo momento se tiene la ltima versin de un sistema, ya que tambin se lleva cuenta automtica de las fechas de creacin, modificacin y compilacin de los diversos mdulos. De esta manera, se convierte en una herramienta casi indispensable al desarrollar aplicaciones que requieren decenas de programas que interactan entre s o que mantienen relaciones jerrquicas. Otras herramientas interesantes son ar, diseado para crear y mantener bibliotecas de programas (que sern luego utilizadas por otros programas para efectuar las funciones ya definidas sin tener que duplicar el cdigo); awk, un lenguaje para reconocimiento de patrones y expresiones regulares (es decir, generadas por una gramtica regular o de tipo 3), til para extraer informacin de archivos en forma selectiva; lex, un generador de analizadores lexicogrfico, y yacc, un compilador de compiladores. Estos dos ltimos se emplean como herramientas en la creacin de compiladores y procesadoresde lenguajes. La lista complete de funciones, rdenes de subsistemas que forman parte de las utileras del sistema operativo Unix es realmente grande, e incluye ms de un centenar, que se pueden agrupar en los siguientes rubros: Compiladores de compiladores. Ejecucin de programas. Facilidades de comunicaciones. Funciones para control de status. Funciones para control de usuarios. Funciones para impresin. Herramientas de desarrollo de programacin. Lenguaje C, funciones y bibliotecas asociados. Macroprocesamiento. Manejo de directorios y archivos. Manejo de grficas. Manejo de informacin. Manejo de terminales. Mantenimiento y respaldos. Otros lenguajes algortmicos integrados. Preparacin de documentos.

CONCLUSION