Вы находитесь на странице: 1из 31

1. Introduccin Un Sistema Operativo es una parte importante de cualquier sistema de computacin.

Un sistema de computacin puede dividirse en cuatro componentes: el hardware, el Sistema Operativo, los programas de aplicacin y los usuarios. El hardware (Unidad Central de Procesamiento(UCP),memoria y dispositivos de entrada/salida (E/S)) proporciona los recursos de computacin bsicos. Los programas de aplicacin (compiladores,sistemas de bases de datos, juegos de video y programas para negocios) definen la forma en que estos recursos se emplean para resolver los problemasde computacin de los usuarios. Esto es a grandes rasgos un concepto de sistemas operativos en el contenido que a continuacin presentamos existen diversos conceptos, as como tambin su historia, caractersticas y su clasificacin, ms adelante se consiguen caractersticas o informacin bastante importante sobre un sistema operativo en particular llamado NovellNetware. 2. Concepto y definicin de Sistemas Operativos. Figura. Algunos recursos que administra el Sistema Operativo Existen diversas definiciones de lo que es un Sistema Operativo, pero no hay una definicin exacta, es decir una que sea estndar; a continuacin se presentan algunas: 1.- Se pueden imaginar un Sistema Operativo como los programas, instalados en el software o firmware, que hacen utilizable el hardware. El hardware proporciona la "capacidad bruta de cmputo"; los sistemas operativos ponen dicha capacidad de cmputo al alcance de los usuarios y administran cuidadosamente el hardware para lograr un buen rendimiento. 2.- Los Sistemas Operativos son ante todo administradores de recursos; el principal recurso que administran es el hardware del computador ;adems de los procesadores, los medios de almacenamiento, los dispositivos de entrada/salida, los dispositivos de comunicacin y los datos. 3.- Un Sistema Operativo es un programa que acta como intermediario entre el usuario y el hardware del computador y su propsito es proporcionar el entorno en el cual el usuario pueda ejecutar programas. Entonces, el objetivo principal de un Sistema Operativo es, lograr que el sistema de computacin se use de manera cmoda, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente. 4.- Un Sistema Operativo es un conjunto de programas que controla la ejecucin de programas de aplicacin y acta como una interfaz entre el usuario y el hardware de una computadora, esto es, un Sistema Operativo explota y administra los recursos de hardware de la computadora con el objeto de proporcionar un conjunto de servicios a los usuarios del sistema. En resumen, se podra decir que los Sistemas Operativos son un conjunto de programas que crean la interfaz del hardware con el usuario, y que tiene dos funciones primordiales, que son:

Gestionar el hardware.- Se refiere al hecho de administrar de una forma ms eficiente los recursos de la mquina. Facilitar el trabajo al usuario.-Permite una comunicacin con los dispositivos de la mquina.

El Sistema Operativo se encuentra almacenado en la memoria secundaria. Primero se carga y ejecuta un pedazo de cdigo que se encuentra en elprocesador, el cual carga el BIOS, y este a su vez carga el Sistema Operativo que carga todos los programas de aplicacin y software variado. 3. Caractersticas de los Sistemas Operativos. En general, se puede decir que un Sistema Operativo tiene las siguientes caractersticas:

Conveniencia. Un Sistema Operativo hace ms conveniente el uso de una computadora. Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera ms eficiente posible. Habilidad para evolucionar. Un Sistema Operativo deber construirse de manera que permita el desarrollo, prueba o introduccin efectiva de nuevas funciones del sistema sin interferir con el servicio. Encargado de administrar el hardware. El Sistema Operativo se encarga de manejar de una mejor manera los recursos de la computadora en cuanto a hardware se refiere, esto es, asignar a cada proceso una parte del procesador para poder compartir los recursos. Relacionar dispositivos (gestionar a travs del kernel). El Sistema Operativo se debe encargar de comunicar a los dispositivos perifricos, cuando el usuario as lo requiera. Organizar datos para acceso rpido y seguro. Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar con alta facilidad todo lo referente a la instalacin y uso de las redes de computadoras. Procesamiento por bytes de flujo a travs del bus de datos. Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fcil al usuario el acceso y manejo de los dispositivos de Entrada/Salida de la computadora. Tcnicas de recuperacin de errores. Evita que otros usuarios interfieran. El Sistema Operativo evita que los usuarios se bloqueen entre ellos, informndoles si esa aplicacin esta siendo ocupada por otro usuario. Generacin de estadsticas. Permite que se puedan compartir el hardware y los datos entre los usuarios.

El software de aplicacin son programas que se utilizan para disear, tal como el procesador de palabras, lenguajes de programacin, hojas de clculo, etc. El software de base sirve para interactuar el usuario con la mquina, son un conjunto de programas que facilitan el ambiente plataforma, y permite eldiseo del mismo. El Software de base est compuesto por :

Cargadores. Compiladores. Ensambladores. Macros.

4. Clasificacin de los sistemas operativos. Con el paso del tiempo, los Sistemas Operativos fueron clasificndose de diferentes maneras, dependiendo del uso o de la aplicacin que se les daba. A continuacin se mostrarn diversos tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus caractersticas: Sistemas Operativos por lotes.

Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interaccin entre los usuarios y los programas en ejecucin. Se renen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o ms trabajos como sucede en el procesamiento en serie. Estos sistemas son de los ms tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas. Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecucin muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecucin de los trabajos. Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual est orientado a procesamiento cientfico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento acadmico. Algunas otras caractersticas con que cuentan los Sistemas Operativos por lotes son:

Requiere que el programa, datos y rdenes al sistema sean remitidos todos juntos en forma de lote. Permiten poca o ninguna interaccin usuario/programa en ejecucin. Mayor potencial de utilizacin de recursos que procesamiento serial simple en sistemas multiusuarios. No conveniente para desarrollo de programas por bajo tiempo de retorno y depuracin fuera de lnea. Conveniente para programas de largos tiempos de ejecucin (ej, anlisis estadsticos, nminas de personal, etc.) Se encuentra en muchos computadores personales combinados con procesamiento serial. Planificacin del procesador sencilla, tpicamente procesados en orden de llegada. Planificacin de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas transitorios. No requieren gestin crtica de dispositivos en el tiempo. Suelen proporcionar gestin sencilla de manejo de archivos: se requiere poca proteccin y ningn control de concurrencia para el acceso.

Figura. Trabajos ms comunes que realiza el Sistema Operativo por lotes. Sistemas Operativos de tiempo real. Los Sistemas Operativos de tiempo real son aquelos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, estn subutilizados sus recursos con la finalidad de prestar atencin a los procesos en el momento que lo requieran. se utilizan en entornos donde son procesados un gran nmero de sucesos o eventos. Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy especficas como control de trfico areo, bolsas de valores, control de refineras, control de laminadores. Tambin en el ramo automovilstico y de la electrnica de consumo, las aplicaciones de tiempo real estn creciendo muy rpidamente. Otros campos de aplicacin de los Sistemas Operativos de tiempo real son los siguientes:

Control de trenes. Telecomunicaciones. Sistemas de fabricacin integrada.

Produccin y distribucin de energa elctrica. Control de edificios. Sistemas multimedia.

Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes caractersticas:

Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayora externos al sisterma computacional, en breve tiempo o dentro de ciertos plazos. Se utlizan en control industrial, conmutacin telefnica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc. Objetivo es proporcionar rpidos tiempos de respuesta. Procesa rfagas de miles de interrupciones por segundo sin perder un solo suceso. Proceso se activa tras ocurrencia de suceso, mediante interrupcin. Proceso de mayor prioridad expropia recursos. Por tanto generalmente se utliza planificacin expropiativa basada en prioridades. Gestin de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria. Poblacin de procesos esttica en gran medida. Poco movimiento de programas entre almacenamiento secundario y memoria. Gestin de archivos se orienta ms a velocidad de acceso que a utlizacin eficiente del recurso.

Sistemas Operativos de multiprogramacin (o Sistemas Operativos de multitarea). Se distinguen por sus habilidades para poder soportar la ejecucin de dos o ms trabajos activos (que se estn ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al mximo su utilizacin. Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno est usando el procesador, o un procesador distinto, es decir, involucra mquinas con ms de una UCP. Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea. Las caractersticas de un Sistema Operativo de multiprogramacin o multitarea son las siguientes:

Mejora productividad del sistema y utilizacin de recursos. Multiplexa recursos entre varios programas. Generalmente soportan mltiples usuarios (multiusuarios). Proporcionan facilidades para mantener el entorno de usuarios inndividuales. Requieren validacin de usuario para seguridad y proteccin. Proporcionan contabilidad del uso de los recursos por parte de los usuarios. Multitarea sin soprte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo real. Sistemas multiprocesadores son sistemas multitareas por definicin ya que soportan la ejecucin simultnea de mltiples tareas sobre diferentes procesadores.

En general, los sistemas de multiprogramacin se caracterizan por tener mltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos perifricos.

Sistemas Operativos de tiempo compartido. Permiten la simulacin de que el sistema y sus recursos son todos para cada usuarios. El usuario hace una peticin a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecer en la terminal del usuario. Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusin de que tiene el sistema dedicado para s mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administracin de memoria principal y secundaria. Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10. Caractersticas de los Sistemas Operativos de tiempo compartido:

Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de diseo asistido por computador, procesamiento de texto, etc. Dan la ilusin de que cada usuario tiene una mquina para s. Mayora utilizan algoritmo de reparto circular. Programas se ejcutan con prioridad rotatoria que se incrementa con la espera y disminuye despus de concedido el servicio. Evitan monopolizacin del sistema asignando tiempos de procesador (time slot). Gestin de memoria proporciona proteccin a programas residentes. Gestin de archivo debe proporcionar proteccin y control de acceso debido a que pueden existir mltiples usuarios accesando un mismo archivos.

Sistemas Operativos distribuidos. Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores est en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas bsicos de stos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema dbilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local. Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo. Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc. Caracteristicas de los Sistemas Operativos distribuidos:

Coleccin de sistemas autnomos capaces de comunicacin y cooperacin mediante interconexiones hardware y software . Gobierna operacin de un S.C. y proporciona abstraccin de mquina virtual a los usuarios. Objetivo clave es la transparencia. Generalmente proporcionan medios para la comparticin global de recursos.

Servicios aadidos: denominacin global, sistemas de archivos distribuidos, facilidades para distribucin de clculos (a travs de comunicacin de procesos internodos, llamadas a procedimientos remotos, etc.).

Sistemas Operativos de red. Son aquellos sistemas que mantienen a dos o ms computadoras unidas atravs de algn medio de comunicacin (fisico o no), con el objetivo primordial de poder compartir los diferentes recursos y la informacin del sistema. El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware. Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic. Figura. Se muestra un Sistema Operativo en red. 5. Sistemas Operativos paralelos. En estos tipos de Sistemas Operativos se pretende que cuando existan dos o ms procesos que compitan por algn recurso se puedan realizar o ejecutar al mismo tiempo. En UNIX existe tambin la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, sinulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). As, en lugar de esperar a que el proceso termine de ejecutarse (como lo hara normalmente), regresa a atender al usuario inmediatamente despus de haber creado el proceso. Ejemplos de estos tipos de Sistemas Operativos estn: Alpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000 de IBM. 6. Historia de los Sistemas Operativos. Para tratar de comprender los requisitos de un Sistema Operativo y el significado de las principales caractersticas de un Sistema Operativo contemporneo, es til considerar como han ido evolucionando stos con el tiempo. Existen diferentes enfoques o versiones de como han ido evolucionando los Sistemas Operativos La primera de estas versiones podra ser esta: En los 40's, se introducen los programas bit a bit, por medio de interruptores mecnicos y despus se introdujo el leng. mquina que trabajaba portarjetas perforadas. Con las primeras computadoras, desde finales de los aos 40 hasta la mitad de los aos 50, el programador interactuaba de manera directa con el hardware de la computadora, no exista realmente un Sistema Operativo; las primeras computadoras utilizaban bulbos, la entrada de datos y los programas se realizaban a travs del lenguaje mquina (bits) o a travs de interruptores. Durante los aos 50's y 60's.- A principio de los 50's, la compaa General's Motors implanto el primer sistema operativo para su IBM 170. Empiezan a surgir las tarjetas perforadas las cuales permiten que los usuarios (que en ese tiempo eran programadores, diseadores, capturistas,

etc.), se encarguen de modificar sus programas. Establecan o apartaban tiempo, metan o introducan sus programas, corregan y depuraban sus programas en su tiempo. A esto se le llamaba trabajo en serie. Todo esto se traduca en prdida de tiempo y tiempos de programas excesivos. En los aos 60's y 70's se genera el circuito integrado, se organizan los trabajos y se generan los procesos Batch (por lotes), lo cual consiste en determinar los trabajos comunes y realizarlos todos juntos de una sola vez. En esta poca surgen las unidades de cinta y el cargador de programas, el cual se considera como el primer tipo de Sistema Operativo. En los 80's, inici el auge de la INTERNET en los Estados Unidos de Amrica. A finales de los aos 80's comienza el gran auge y evolucin de los Sistemas Operativos. Se descubre el concepto de multiprogramacin que consiste en tener cargados en memoria a varios trabajos al mismo tiempo, tema principal de los Sistemas Operativos actuales. Los 90's y el futuro, entramos a la era de la computacin distribuida y del multiprocesamiento a travs de mltiples redes de computadoras, aprovechando el ciclo del procesador. Se tendr una configuracin dinmica con un reconocimiento inmediato de dispositivos y software que se aada o elimine de las redes a travs de procesos de registro y localizadores. La conectividad se facilita gracias a estndares y protocolos de sistemas abiertos por organizaciones como la Org. Intern. de normas, fundacin de software abierto, todo estar mas controlado por los protocolos de comunicacin OSI y por la red de servicios digital ISDN. Se ha desarrollado otra versin, la cual se ha hecho en base a etapas o generaciones: 1a. Etapa (1945-1955) : Bulbos y conexiones. Despus de los infructuosos esfuerzos de Babbage, hubo poco progreso en la construccin de las computadoras digitales, hasta la Segunda GuerraMundial. A mitad de la dcada de los 40's, Howard Aiken (Harvard), John Von Newman (Instituto de Estudios Avanzados, Princeton), J. Prespe R. Eckert y Williams Mauchley (Universidad de Pennsylvania), as como Conrad Zuse (Alemania), entre otros lograron construir mquinas de clculomediante bulbos. Estas mquinas eran enormes y llenaban cuartos completos con decenas de miles de bulbos, pero eran mucho ms lentas que la computadora casera ms econmica en nuestros das. Toda la programacin se llevaba a cabo en lenguaje de mquina absoluto y con frecuencia se utilizaban conexiones para controlar las funciones bsicas de la mquina. Los lenguajes de programacin eran desconocidos (incluso el lenguaje ensamblador). No se oa de los Sistemas Operativos el modo usual de operacin consista en que el programador reservaba cierto perodo en una hoja de reservacin pegada a la pared, iba al cuarto de la mquina, insertaba su conexin a la computadora y pasaba unas horas esperando que ninguno de los 20,000 o ms bulbos se quemara durante la ejecucin. La inmensa mayora de los problemas eran clculos numricos directos, por ejemplo, el clculo de valores para tablas de senos y cosenos. A principio de la dcada de los 50's la rutina mejoro un poco con la introduccin de las tarjetas perforadas. Fue entonces posible escribir los programas y leerlas en vez de insertar conexiones, por lo dems el proceso era el mismo. 2a. Etapa. (1955-1965) : Transistores y Sistemas de Procesamiento por lotes.

La introduccin del transistor a mediados de los aos 50's modific en forma radical el panorama. Las computadoras se volvieron confiables de forma que podan fabricarse y venderse a clientes, con la esperanza de que ellas continuaran funcionando lo suficiente como para realizar un trabajo en forma. Dado el alto costo del equipo, no debe sorprender el hecho de que las personas buscaron en forma por dems rpidas vas para reducir el tiempo invertido. La solucin que, por lo general se adopt, fue la del sistema de procesamiento por lotes. 3ra Etapa (1965-1980 ) : Circuitos integrados y multiprogramacin. La 360 de IBM fue la primera lnea principal de computadoras que utiliz los circuitos integrados, lo que proporcion una gran ventaja en el precio ydesempeo con respecto a las mquinas de la segunda generacin, construidas a partir de transistores individuales. Se trabajo con un sistema operativo enorme y extraordinariamente complejo. A pesar de su enorme tamao y sus problemas el sistema operativo de la lnea IBM 360 y los sistemas operativos similares de esta generacin producidos por otros fabricantes de computadoras realmente pudieron satisfacer, en forma razonable a la mayora de sus clientes. Tambin popularizaron varias tcnicas fundamentales, ausentes de los sistemas operativos de la segunda generacin, de las cuales la ms importante era la de multiprogramacin. Otra caracterstica era la capacidad de leer trabajos de las tarjetas al disco, tan pronto como llegara al cuarto de cmputo. As, siempre que concluyera un trabajo el sistema operativo poda cargar un nuevo trabajo del disco en la particin que quedara desocupada y ejecutarlo. 4ta Etapa (1980-Actualidad) : Computadoras personales. Un interesante desarrollo que comenz a llevarse a cabo a mediados de la dcada de los ochenta ha sido el crecimiento de las redes de computadoras personales, con sistemas operativos de red y sistemas operativos distribuidos. En los sistema operativo de red, los usuarios estn conscientes de la existencia de varias computadoras y pueden conectarse con mquinas remotas y copiar archivos de una mquina a otra. Cada mquina ejecuta su propio sistema operativo local y tiene su propio usuario. Por el contrario, un sistema operativo distribuido es aquel que aparece ante sus usuarios como un sistema tradicional de un solo procesador, aun cuando est compuesto por varios procesadores. En un sistema distribuido verdadero, los usuarios no deben ser conscientes del lugar donde su programa se ejecute o de lugar donde se encuentren sus archivos; eso debe ser manejado en forma automtica y eficaz por el sistema operativo. 7. Sistema Operativo NetWare de Novell. Introduccin al uso de la Red NetWare. El sistema de redes ms popular en el mundo de las PCs es NetWare de Novell. Este sistema se dise con la finalidad de que lo usarn grandes compaas que deseaban sustituir sus

enormes mquinas conocidas como mainframe por una red de PCs que resultara ms econmica y fcil de manejar. NetWare es una pila de protocolos patentada que se ilustra y que se basa en el antiguo Xerox Network System, XNS pero con varias modificaciones. NetWare de Novell es previo a OSI y no se basa en l, si acaso se parece ms a TCP/IP que a OSI. Las capas fsica y de enlace de datos se pueden escoger de entre varios estndares de la industria, lo que incluye Ethernet, el token ring de IBM y ARCnet. La capa de red utiliza un protocolo de interred poco confiable, si n conexin llamado IPX. Este protocolo transfiere paquetes de origen al destino en forma transparente, aun si la fuente y el destino se encuentran en redes diferentes. En lo funcional IPX es similar a IP, excepto que usa direcciones de 10 bytes en lugar de direcciones de 4 bytes, (9) y (10). Por encima de IPX est un protocolo de transporte orientado a la conexin que se llama NCP (Network Core Protocol, Protocolo Central de Red). El NCP proporciona otros servicios adems del de transporte de datos de u suario y en realidad es el corazn de NetWare. Tambin est disponible un segundo protocolo, SPX, el cual solo proporciona transporte. Otra opcin es TCP. Las aplicaciones pueden seleccionar cualquiera de ellos. Por ejemplo, el sistema de archivos usa NCP y Lotus Notes usa SPX. Las capas de sesin y de presentacin no existen. En la capa de aplicacin estn presentes varios protocolos de aplicacin. La clave de toda la arquitectura es el paquete de datagrama de interred sobre el cual se construye todo lo dems. En la Figura 1.3 se muestra el formato de un paquete IPX. El campo Suma de verificacin pocas veces s e usa puesto que la capa de enlace subyacente tambin proporciona una suma de verificacin. El campo Longitud del paquete indica qu tan grande es el paquete, es decir suma el encabezado ms datos y el resultado se guarda en 2 bytes. El campo Control de transporte cuenta cuntas redes ha atravesado el paquete; cuando se excede un mximo, el paquete se descarta. El campo Tipo de paquete sirve para marcar varios paquetes de control. Cada una de las dos direcciones contiene un nmero de red de 32 bits, un nmero de mquina de 48 bits (La direccin 802 LAN) y la direccin local (Socket) de 16 bits en esa mquina. Por ltimo se tienen los datos que ocupan el resto del paquete, cuyo tamao mximo est determinado por la capa subyacente NetWare, Versin 2.2. La adaptabilidad de las caractersticas de NetWare 2.2 a las necesidades al mercado de hoy se queda corto cuando comienza a listar los asuntos de conectividad a que se enfrentan las compaas de hoy, administrac in y apoyo para mltiples protocolos, conexiones de rea amplia, flexibilidad y facilidad de uso al administrador del NOS bajo escenarios de conectividad que cambian constantemente. El NetWare 2.2 no pudo mantener el ritmo de los dems en las pruebas de ejecucin que representaban tareas de redes mayores. Esto se puede comprender si se tiene en cuenta que NetWare 2.2 de 16 bits todava se puede ejecutar en una mquina de clase AT. Comprensible, s, pero no aceptable como una solucin para toda una compaa. NetWare 386 inicialmente slo estaba disponible como una versin de 250 usuarios, e incluso para cuando NetWare 2.2 sali al mercado, la versin bsica de NetWare 3.x era una licencia de 20 usuarios de US$3.495. Hoy en da las cosas son completamente distintas. Una versin de 5 usuarios de NetWare 3.11 tiene un precio de lista de US$1.095 comparado con NetWare 2.2 que

cuesta US$895. Incluso el nivel de 100 usuarios solamente muestra una diferencia de mil dlares entre los US$5.995 de NetWare 2.2 y los US$6.995 de NetWare 3.11. Aunque la instalacin y la configuracin de NetWare 2.2 son mejores que las de sus predecesores, ests ya son demasiado lentas comparndolas con las de las versiones 3.11 y 4.0. La documentacin de NetWare 2.2 est extremadamente bien escrita, organizada y repleta de fotos tiles de pantalla. Durante la instalacin hay ayuda en lnea disponible para cada pantalla, como es el c aso del resto de los servicios de NetWare. NetWare 2.2 es la novena generacin de la lnea NetWare 286, una madurez evidente en los servicios de administracin para usuarios y archivos. Configurar los usuarios, establecer los derechos de cuentas y administra r la estructura de directorios son tareas que se realizan con una serie de servicios de mens bien diseados o de lnea de comandos. Sin embargo, hasta que sali NetWare 4.0, Novell no ofreci un servicio de directorios globales como parte inherente de NetWare. NetWare 2.2 recibe ayuda de Banyan, en la forma de su Enterprise Network Services for NetWare (ENS), que esencialmente ofrece parte del servicio de nombres globales StreetTalk de Banyan a las redes de NetWare. NetWare 2.2 tambin carece de una opcin de consola remota que ya tienen las versiones 3.11 y 4.0. En su arquitectura, NetWare 2.2 es familiar, pero antiguo como lo muestra la Figura 1.4. No tiene la capacidad de procesar mltiples hilos de NetWare 3.11 y 4.0, aunque puede ejecutar aplicaciones basadas en el servidor de llamadas a procesos de valor aadido (VAPs). Pero los VAPs se consideran como difciles de escribir y hay pocos disponibles. Por otro lado, NetWare 3.11 tiene disponibilidad de miles de aplicaciones basadas en el servidor de llamadas a M&oa cute; dulos Cargables de NetWare (NLMs). Que varan desde las aplicaciones de administracin de la red a servidores de SQL. Figura 1.4 Arquitectura de NetWare 2.2. Requerimientos:

PC basada en una 286 o superior. 500K de RAM (2.5 Mb recomendados.)

NetWare, Versin 3.11. NetWare 3.11 sigue siendo un lder fuerte y flexible en la arena de los NOS para las compaas pequeas o grandes. Su nica desventaja para los que necesitan una solucin a nivel de empresa es que carece de un servicio global de directorios. Pero esto se puede corregir en parte con el NetWare Naming Service (NNS) o el ENS de Banyan, que ofrece parte de los servicios distribuidos StreetTalk a los LANs de NetWare. Ofrece la habilidad de compartir archivos e impresoras, velocidad, seguridad, apoyo para la mayora de los sistemas operativos, y una gran cantidad de Hardware, NetWare 3.11 es un producto realmente potente. Aunque tiene algunas dificultades con la administracin de memoria, todava vale la pena, pues tiene algunas otras caractersticas que lo hacen importante. La principal atraccin de un NOS de 32 bits como el que introdujo Novell, fue su diseo modular, como lo muestra la Figura 1.5. Los NLMs se pueden actualizar sin tener que reconstruir el NOS completo, y se pueden ca rgar sobre la marcha. Adems, solamente los mdulos necesarios se cargan en el NOS, reservando la memoria para otras funciones como el

caching de discos. Una desventaja de este diseo es el uso de memoria. Los NLMs se cargan en el ani llo 0 y pueden trabar el servidor si el NLM no est escrito correctamente o si entran en conflicto con el NLM de otro fabricante. Por otra parte algunos de los mdulos no desocupan la memoria cuando se descargan (Estos problemas de administr acin de memoria ya han sido resueltos en NetWare 4.x). Figura 1.5 Arquitectura de NetWare 3.11. NetWare 3.11 est diseado en su mayora para redes desde pequeas a moderadamente grandes que consisten en servidores individuales, principalmente porque sus servicios de directorios no integran a la red en su totalidad. Cada uno de los servidores mantiene una base de datoscentralizada de verificacin individual llamada el Bindery. El Bindery del servidor mantiene la informacin como los nombres de conexin, las contraseas, los derechos de acceso y la informacin de impresin. Si los usuarios necesitan conectarse a ms de un servidor para compartir recursos, deben hacerlo manualmente con cada servidor. Requerimientos:

PC basada en una 386 o superior. 4Mb de RAM. 50Mb de espacio en Disco Duro.

8. NetWare, Versin 4.0. NetWare 4.0 ofrece la conexin simplificada de mltiples servidores, la capacidad de compartir recursos en la red y la administracin centralizada en un producto coherente lleno de caractersticas. La arquitectura de NetWare 4.0, es similar a la de la versin 3.11, como se mostr en la Figura 1.5, pero se han corregido y aumentado sus capacidades. NetWare 4.0 no es para todo el mundo. Determinar si en realidad se necesita un NOS tan potente depende del tamao, la configuracin y la complejidad de la LAN que se quiera formar y, con precios de US$1.395 (5 usuarios) a US$47.995 (1000 usuarios), del presupuesto. NetWare 4.0 aumenta las capacidades de NetWare 3.11, aadiendo muchas caractersticas nuevas. Algunas de las ms atractivas son el NetWare Directory Services (NDS), la compresin de a rchivos, la subasignacin de bloques, la distribucin de archivos y la administracin basada en Microsoft Windows. NDS est en el ncleo de NetWare 4.0. Basado en el estndar X.500, NDS es una base de datos diseada jerrquicamente que reemplaza el Bindery en versiones anteriores de NetWare. Toda la informaci&oacut e;n de la red se guarda en el NDS. NDS considera todas las entidades de la red como objetos, cada uno de los cuales es un puntero a un usuario, un grupo de usuarios, servidores de impresoras, o un volumen en el servidor. Con este cambio Novell no abandona a los usuarios del Bindery, NDS puede emular a un Bindery, facilitando la actualizacin a las compaas que tengan un entorno mixto de servidores 2.x, 3.x y 4.x. Lo bueno del NDS es la tolerancia a fallos que proporciona. Si el servidor que contiene la informacin se daa, NDS busca en su base de datos en los otros servidores para recopilar la informacin para una conexi&oac ute;n y permitirle conectarse a la red. Esto es posible porque la base de datos de NDS est duplicada en todos los servidores en la red en particiones, que mantienen toda la informacin de la red. En contraste, StreetTalk de Banyan mantiene la

informacin de un usuario en un solo servidor: Si ese servidor sufre algn tipo de avera, el usuario no se podr conectar a la red. La subasignacin de bloques, la compresin de archivos y la migracin de archivos son algunas de las caractersticas atractivas en la versin 4.0. La subasignacin de bloques interviene cuando, por ejemplo, un archivo, de 2Kb se guarda en un servidor que tiene bloques de 4Kb. Normalmente, los 2Kb adicionales de espacio en el disco que no se usaron seran desperdiciados, pero con la subasignacin de bloques activada, ese espacio pue de ser utilizado por otros archivos para rellenar el resto del bloque. Usando una razn de 2:1, la compresin de archivos tambin puede hacer una gran diferencia en el espacio del disco duro. La distribucin de archivos es una caracterstica que ha sido ofrecida en algunos paquetes de resguardo en cinta. Novell ha incorporado, el High Capacity Storage Systems (Sistema de Almacenamiento de Alta Capacidad o HCSS) , en NetWare 4.0 HCSS permite fijar indicadores en archivos que muestran la frecuencia con que se utilizan y adems permite moverlos a otros medios que incluso no tienen que estar en el disco del servidor. Un marcador fantasma permanece en los vol& uacute;menes para que si un usuario trata de abrir el archivo, el sistema lo recupera de su lugar de almacenamiento alterno y la copia se hace transparentemente. Con NetWare 4.0, Novell tambin aade un programa de administracin basado en Microsoft Windows uniendo caractersticas de configuracin nuevas y viejas en programas familiares tales como SYSCON, PCONS OLE y PRINTDEF. Los atributos del GUI facilitan el aadir, mover, borrar y modificar objetos de la red. El proceso de instalacin del servidor bajo esta nueva versin es un procedimiento totalmente basado en mens. Un CD-ROM que contiene todos los archivos de instalacin significa que no se tendr que ca mbiar discos flexibles. Despus de instalar el primer servidor, se puede copiar el contenido delCD-ROM al volumen del servidor para poder instalar otros servidores en la red con mayor velocidad. Novell ha cambiado totalmente el entorno, reemplazando 2 archivos IPX y NET, con mdulos. Los Mdulos Cargables Virtuales (VLMs), que ofrecen una solucin ms flexible a la estacin de trabajo, son cargados en memoria por el VLM Manager. El VLM Manager aprovecha automticamente la memoria alta disponible, conservando la memoria convencional. Los VLMs ocupan menos memoria convencional que sus predecesores, y con la habilidad de rfagas de paquetes incorporada, ocupan menos memoria que incluso BNETX (El entorno de modo de rfaga usado en una estacin). Como son mdulos, los VLMs se pueden aadir o eliminar con rapidez. Adems de los nuevos entornos, un mejor apoyo para Microsoft Windows aade una interfaz grfica para aliviar el problema de conectarse, desconectarse, analizar un disco y conectarse a una cola de impresin. Hay tres rutas de transferencia para actualizar desde NetWare 3.11: a. b. A travs de una conexin a un servidor 4.0 es el procedimiento ms seguro, pero puede ser el ms caro. Hay que instalar un servidor separado con NetWare 4.0 y colocarlo en la red. Si se tiene un servidor adicional disponible, se puede instalar de un servidor a otro, actualizando cada uno en cada paso. c. A travs de una conexin en el mismo servidor requiere un riesgo a la integridad de los datos. Es necesario tener un cliente con un disco duro o un sistema de resguardo en cinta

lo suficientemente grande para contener toda la informacin acuten del servidor temporalmente mientras se configura el servidor para NetWare 4.0. d. Una actualizacin en el lugar tambin requiere cierto riesgo, en su mayora debido a los posibles fallos durante la actualizacin. Simplemente se debe asegurar de tener un resguardo completo de la red antes de comenzar el proceso. Este procedimiento no est disponible en los servidores 3.0; primero se tiene que actualizar a NetWare 3.1 o superior.

Sistemas de operacin y funciones principales


Todo sistema de computo se puede dividir, en forma general, en dos partes: hardware (aseguramiento tcnico) y software (aseguramiento de programas). El software hace til al hardware y puede dividirse en dos clase: los programas del sistema (software de base) que manejan la operacin de la computadora, y el software de aplicacin que realiza acciones tiles a los usuarios. Entre los programas del sistema se pueden mencionar: sistemas de operacin (los ms importantes de todo el conjunto), compiladores, intrpretes, editores, etc. El sistema operativo es la primera capa de software que se coloca sobre el crudo hardware, separando a los usuarios de ste. Intentar dar una definicin formal del concepto de sistema de operacin no resulta una tarea sencilla y resulta ms conveniente hacerlo despus de verlas funciones que cumplimenta. Todo sistema operativo cumple dos funciones principales:

1. Como mquina ampliada o virtual. 2. Como administrador de recursos.

La funcin de mquina ampliada o virtual consiste en dar facilidades a los usuarios separndolos de tener que conocer las obscuras y complejas interioridades del Hardware. Por ejemplo, un usuario que opera una maquina con ficheros que se abren, leen, escriben, y cierran en lugar de tener que operar con un numero de registros, tiempos de posicionamiento, motor apagado o encendido, etc. La funcin de administrador de recursos consiste en proporcionar una va para asignar, en forma ordenada y controlada, los distintos recursos de que dispone el sistema de computo entre varios programas que compiten por ellos. Esta vista de los sistemas operativos presupone el uso del hardware de la computadora en una forma eficiente.

La primera funcin antes indicada es la razn primaria de la existencia de los sistemas operativos y esto resulta ms evidente cuando se trata de las computadoras de uso personal. La meta de la eficiencia es importante para sistemas de computo grandes y sistemas compartidos de mltiples usuarios (Shared Multi-Users Systems). En este caso no se quiere decir que la vista de maquina ampliada no siga constituyendo una funcin fundamental. En es pasado, las consideraciones de eficiencia fueron frecuentemente ms importantes que las de facilidades de uso y por ello la teora de los sistemas operativos se concentro en el uso optimo de los recursos. Hoy, con la gran difusin de computadoras personales existe un mayor nfasis en la satisfaccin del usuario y a ello se debe el desarrollo de los ambientes GUI (Graphic User Interface). Aun cuando no existe una definicin absoluta de que es un sistema operativo y resulta ms claro llegar a su entendimiento por la va de comprender que hacen, ensayaremos una muy simple. Un sistema operativo es una interface entre los usuarios y el hardware que brinda a estos un ambiente donde se ejecutan con facilidad y conveniencia sus programas y al mismo tiempo se logra un uso eficiente de los recursos disponibles. Los sistemas operativos se diferencias de los restantes programas del sistema que no forman parte del el (compiladores, editores, interprete de comandos, etc) en que estos corren en modo usuario mientras que el primero lo hace en modo protegido o kernel (tambin llamado supervisor, sistema, protegido, etc). Lo antes sealado ser aclarado ms adelante, pero se debe puntualizar que tal afirmacin no es valida para aquellos sistemas operativos que fueron diseados para algunos microprocesadores antiguos (8086, 8088). Este es el caso del DOS y de ah "sus bloqueos" y la fcil penetracin de los virus.

Intrprete (informtica)
En ciencias de la computacin, intrprete o interpretador es un programa informtico capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intrpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripcin en un lenguaje de programacin al cdigo de mquina del sistema, los primeros (los intrpretes) slo realizan la traduccin a medida

que sea necesaria, tpicamente, instruccin por instruccin, y normalmente no guardan el resultado de dicha traduccin. Usando un intrprete, un solo archivo fuente puede producir resultados iguales incluso en sistemas sumamente diferentes (ej. una PC y un PlayStation 3). Usando un compilador, un solo archivo fuente puede producir resultados iguales solo si es compilado a distintos ejecutables especficos a cada sistema. Los programas interpretados suelen ser ms lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son ms flexibles como entornos de programacin y depuracin (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar partes enteras del programa o aadir mdulos completamente nuevos), y permiten ofrecer al programa interpretado un entorno no dependiente de la mquina donde se ejecuta el intrprete, sino del propio intrprete (lo que se conoce comnmente comomquina virtual). Para mejorar el desempeo, algunas implementaciones de programacin de lenguajes de programacin pueden interpretar o compilar el cdigo fuente original en una ms compacta forma intermedia y despus traducir eso al cdigo de mquina (ej. Perl, Python, MATLAB, y Ruby). Algunos aceptan los archivos fuente guardados en esta representacin intermedia (ej. Python, UCSD Pascal y Java). Comparando su actuacin con la de un ser humano, un compilador equivale a un traductor profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intrprete corresponde al intrprete humano, que traduce de viva voz las palabras que oye, sin dejar constancia por escrito. En la actualidad, uno de los entornos ms comunes de uso de los intrpretes informticos es Internet, debido a la posibilidad que estos tienen de ejecutarse independientemente de la plataforma.

Interpretadores de bytecode
Artculo principal:

Bytecode

Hay un espectro de posibilidades entre la interpretacin y la compilacin, dependiendo de la cantidad de anlisis realizados antes de que el programa sea ejecutado. Por ejemplo, elEmacs Lisp es compilado a bytecode, que es una representacin altamente comprimida y optimizada del cdigo fuente del Lisp, pero no es cdigo de mquina (y por lo tanto no est atado a cualquier hardware particular). Este cdigo "compilado" es entonces interpretado por un interpretador de bytecode (que est escrito en C). En este caso, el

cdigo compilado es el cdigo de mquina para una mquina virtual, que no est implementada en el hardware, sino en el interpretador de bytecode. El mismo acercamiento es utilizado con el cdigo Forthusado en sistemas Open Firmware: el lenguaje fuente es compilado en "cdigo F" (un bytecode), que entonces es interpretado por una mquina virtual. [editar]Eficiencia La desventaja principal de los interpretadores es que cuando se interpreta un programa, tpicamente corre ms lentamente que si hubiera sido compilado. La diferencia en velocidades puede ser minscula o grande; a menudo un orden de magnitud y a veces ms. Generalmente toma ms tiempo correr un programa bajo un interpretador que correr el cdigo compilado, pero puede tomar menos tiempo para interpretarlo que el tiempo total requerido para compilarlo y ejecutarlo. Esto es especialmente importante si se est haciendo y probando un cdigo prototipo cuando un ciclo de editar, interpretar y depurar del interpretador, a menudo puede ser mucho ms corto que el ciclo de editar, compilar, ejecutar y depurar del compilador. La interpretacin de cdigo es ms lenta que la ejecucin de cdigo compilado porque el interpretador debe analizar cada sentencia en el programa cada vez que es ejecutada y entonces realizar la accin deseada, mientras que el cdigo compilado solo realiza la accin dentro de un determinado contexto fijo por la compilacin. Este anlisis en tiempo de ejecucin se conoce como "sobrecarga interpretativa". En un interpretador, el acceso a las variables es tambin ms lento porque el mapeo de identificadores hacia las localizaciones de almacenamiento debe hacerse repetidamente en tiempo de ejecucin en vez de en el tiempo de compilacin. Hay varios compromisos entre la velocidad de desarrollo al usar un interpretador y la velocidad de ejecucin al usar un compilador. Algunos sistemas (ej., algunos LISPs) permiten al cdigo interpretado y al compilado llamarse el uno al otro y compartir variables. Esto significa que una vez que una rutina ha sido probada y depurada bajo el interpretador puede ser compilada y por lo tanto beneficiarse de una ejecucin ms rpida mientras que otras rutinas estn siendo desarrolladas. Muchos interpretadores no ejecutan el cdigo fuente tal y como est sino que lo convierten en una forma interna ms compacta. Por ejemplo, algunos interpretadores BASIC reemplazan palabras clave (keywords) con tokens de un simple byte que pueden ser usados para encontrar la instruccin en una tabla de saltos. Un interpretador puede bien usar el mismo analizador lexicogrfico y el analizador

sintctico (parser) que el compilador y entonces interpretar el rbol de sintaxis abstractaresultante. [editar]Interpretadores

de rbol de sintxis abstracta

En el espectro entre la interpretacin y la compilacin, otro acercamiento est transformando el cdigo fuente en un rbol de sintaxis abstracta optimizado (AST), y despus procediendo a ejecutar el programa siguiendo esta estructura arborescente.1 En este acercamiento cada sentencia necesita ser analizada (parsed) solo una vez. Como una ventaja sobre el bytecode, el AST mantiene la estructura y las relaciones globales del programa entre las sentencias (que se pierden en una representacin de bytecode), y proporciona una representacin ms compacta.2 As, el AST se ha propuesto como un mejor formato intermedio para los compiladores justo a tiempo que el bytecode. Tambin, permite realizar un mejor anlisis durante tiempo de ejecucin. Un interpretador Java basado en AST ha demostrado ser ms rpido que un interpretador similar basado en bytecode,3 gracias a las ms poderosas optimizaciones permitidas al tener la estructura completa del programa, as como tipos de datos de alto nivel, disponibles durante la ejecucin. [editar]Compilacin

justo a tiempo

Para desdibujar ms la distincin entre los interpretadores, los interpretadores de bytecode y la compilacin, est la compilacin justo a tiempo (o JIT), una tcnica en la cual la representacin intermedia es compilada a cdigo de mquina nativo en tiempo de ejecucin. Esto confiere la eficiencia de ejecutar el cdigo nativo, al costo de tiempo de inicio y de un uso creciente de la memoria cuando el bytecode o el AST es compilado por primera vez. La optimizacin adaptativa es una tcnica complementaria en la cual el interpretador hace un anlisis de desempeo del programa que est corriendo (profiling) y compila sus partes ms frecuentemente ejecutadas a cdigo nativo. Ambas tcnicas tienen algunas dcadas, apareciendo en lenguajes tales como Smalltalk en los aos 1980. En aos recientes, la compilacin justo a tiempo ha ganado la atencin de la mayora de los implementadores de lenguajes de programacin, con Java, Python, y el Microsoft .NET Framework todos ahora incluyendo JITs. [editar]Interpretador

de tarjeta perforada

El trmino "interpretador" frecuentemente se refera a una pieza de equipo de registro de unidad que poda leer tarjetas perforadas e imprimir los caracteres en la tarjeta en una forma que poda ser leda por humanos. El interpretador Numrico del IBM 550 y el Interpretador Alfabtico del IBM 557 son ejemplos tpicos a partir de 1930 y 1954, respectivamente. [editar]Ejemplos Algunos ejemplos de lenguajes que son normalmente interpretados en vez de compilados son:

Perl PHP Java Javascript Logo ASP (hasta la versin 3) Python C# J# ASP

Compilador

Diagrama a bloques de la operacin de un buen compilador.

Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin, generando un programa equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje eslenguaje de mquina, pero tambin puede ser simplemente texto. Este proceso de traduccin se conoce como compilacin.1 Un compilador es un programa que permite traducir el cdigo fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje de mquina). De esta manera un programador puede disear un programa en un lenguaje mucho ms cercano a como piensa un ser humano, para luego compilarlo a un programa ms manejable por una computadora.
Contenido
[ocultar]

1 Partes de un compilador

2 Historia 3 Tipos de compiladores 4 Proceso de compilacin 5 Etapas del proceso o 5.1 Fase de anlisis o 5.1.1 Anlisis lxico 5.1.2 Anlisis sintctico 5.1.3 Anlisis semntico

5.2 Fase de sntesis 5.2.1 Generacin de cdigo intermedio

5.3 Optimizacin de cdigo

6 Estructura de datos principales o o o o o o 6.1 Componentes lxicos o tokens 6.2 rbol sintctico 6.3 Tabla de smbolos 6.4 Tabla de literales 6.5 Cdigo intermedio 6.6 Archivos temporales

7 Vase tambin 8 Enlaces externos 9 Referencias

[editar]Partes

de un compilador

La construccin de un compilador involucra la divisin del proceso en una serie de fases que variar con su complejidad. Generalmente estas fases se agrupan en dos tareas: el anlisis del programa fuente y la sntesis del programa objeto.

Anlisis: Se trata de la comprobacin de la correccin del programa fuente, e incluye las fases correspondientes al Anlisis Lxico (que consiste en la descomposicin del programa fuente en componentes lxicos), Anlisis Sintctico (agrupacin de los componentes lxicos en frases gramaticales ) y Anlisis Semntico (comprobacin de la validez semntica de las sentencias aceptadas en la fase de Anlisis Sintctico).

Sntesis: Su objetivo es la generacin de la salida expresada en el lenguaje objeto y suele estar formado por una o varias combinaciones de fases de Generacin de

Cdigo (normalmente se trata de cdigo intermedio o de cdigo objeto) y de Optimizacin de Cdigo (en las que se busca obtener un cdigo lo ms eficiente posible). Alternativamente, las fases descritas para las tareas de anlisis y sntesis se pueden agrupar en Front-end y Back-end:

Front-end: es la parte que analiza el cdigo fuente, comprueba su validez, genera el rbol de derivacin y rellena los valores de la tabla de smbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar, y est compuesta por las fases comprendidas entre el Anlisis Lxico y la Generacin de Cdigo Intermedio.

Back-end: es la parte que genera el cdigo mquina, especfico de una plataforma, a partir de los resultados de la fase de anlisis, realizada por el Front End.

Esta divisin permite que el mismo Back End se utilice para generar el cdigo mquina de varios lenguajes de programacin distintos y que el mismo Front End que sirve para analizar el cdigo fuente de un lenguaje de programacin concreto sirva para generar cdigo mquina en varias plataformas distintas. Suele incluir la generacin y optimizacin del cdigo dependiente de la mquina. El cdigo que genera el Back End normalmente no se puede ejecutar directamente, sino que necesita ser enlazado por un programa enlazador (linker) [editar]Historia En 1946 se desarroll la primera computadora digital. En un principio, estas mquinas ejecutaban instrucciones consistentes en cdigos numricos que sealaban a los circuitos de la mquina los estados correspondientes a cada operacin, lo que se denomin lenguaje mquina. Pronto los primeros usuarios de estos ordenadores descubrieron la ventaja de escribir sus programas mediante claves ms fciles de recordar que esos cdigos; al final, todas esas claves juntas se traducan manualmente a lenguaje mquina. Estas claves constituyen los llamados lenguajes ensambladores. Pese a todo, el lenguaje ensamblador segua siendo el de una mquina, pero ms fcil de manejar. Los trabajos de investigacin se orientaron hacia la creacin de un lenguaje que expresara las distintas acciones a realizar de una manera lo ms sencilla posible para una persona. El primer compilador fue escrito por Grace Hopper, en 1952 para el lenguaje de

programacin A-0, En 1950 John Backus dirigi una investigacin en IBM sobre un lenguaje algebraico. En 1954 se empez a desarrollar un lenguaje que permita escribir frmulas matemticas de manera traducible por un ordenador; le llamaron FORTRAN (FORmulae TRANslator). Fue el primer lenguaje de alto nivel y se introdujo en 1957 para el uso de la computadora IBM modelo 704. Surgi as por primera vez el concepto de un traductor como un programa que traduca un lenguaje a otro lenguaje. En el caso particular de que el lenguaje a traducir es un lenguaje de alto nivel y el lenguaje traducido de bajo nivel, se emplea el trmino compilador. La tarea de realizar un compilador no fue fcil. El primer compilador de FORTRAN tard 18 aos-persona en realizarse y era muy sencillo. Este desarrollo de FORTRAN estaba muy influenciado por la mquina objeto en la que iba a ser implementado. Como un ejemplo de ello tenemos el hecho de que los espacios en blanco fuesen ignorados, debido a que el perifrico que se utilizaba como entrada de programas (una lectora de tarjetas perforadas) no contaba correctamente los espacios en blanco. El primer compilador autocontenido, es decir, capaz de compilar su propio cdigo fuente fue el creado para Lisp por Hart y Levin en el MIT en 1962. Desde 1970 se ha convertido en una prctica comn escribir el compilador en el mismo lenguaje que este compila, aunque Pascal y C han sido alternativas muy usadas. Crear un compilador autocontenido genera un problema llamado bootstrapping, es decir el primer compilador creado para un lenguaje tiene que o bien ser compilado por un compilador escrito en otro lenguaje o bien compilado al ejecutar el compilador en un intrprete. [editar]Tipos

de compiladores

Esta taxonoma de los tipos de compiladores no es excluyente, por lo que puede haber compiladores que se adscriban a varias categoras:

Compiladores cruzados: generan cdigo para un sistema distinto del que estn funcionando. Compiladores optimizadores: realizan cambios en el cdigo para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original. Compiladores de una sola pasada: generan el cdigo mquina a partir de una nica lectura del cdigo fuente.

Compiladores de varias pasadas: necesitan leer el cdigo fuente varias veces antes de poder producir el cdigo mquina. Compiladores JIT (Just In Time): forman parte de un intrprete y compilan partes del cdigo segn se necesitan.

Pauta de creacin de un compilador: En las primeras pocas de la informtica, el software de los compiladores era considerado como uno de los ms complejos existentes. Los primeros compiladores se realizaron programndolos directamente en lenguaje mquina o en ensamblador. Una vez que se dispone de un compilador, se pueden escribir nuevas versiones del compilador (u otros compiladores distintos) en el lenguaje que compila ese compilador. Actualmente existen herramientas que facilitan la tarea de escribir compiladores intrpretes informticos. Estas herramientas permiten generar el esqueleto del analizador sintctico a partir de una definicin formal del lenguaje de partida, especificada normalmente mediante una gramtica formal y barata, dejando nicamente al programador del compilador la tarea de programar las acciones semnticas asociadas. [editar]Proceso

de compilacin

Es el proceso por el cual se traducen las instrucciones escritas en un determinado lenguaje de programacin a lenguaje mquina. Adems de un traductor, se pueden necesitar otros programas para crear un programa objeto ejecutable. Un programa fuente se puede dividir en mdulos almacenados en archivos distintos. La tarea de reunir el programa fuente a menudo se confa a un programa distinto, llamado preprocesador. El preprocesador tambin puede expandir abreviaturas, llamadas a macros, a proposiciones del lenguaje fuente. Normalmente la creacin de un programa ejecutable (un tpico.exe para Microsoft Windows o DOS) conlleva dos pasos. El primer paso se llama compilacin (propiamente dicho) y traduce el cdigo fuente escrito en un lenguaje de programacin almacenado en un archivo a cdigo en bajo nivel (normalmente en cdigo objeto, no directamente a lenguaje mquina). El segundo paso se llama enlazado en el cual se enlaza el cdigo de bajo nivel generado de todos los ficheros y subprogramas que se han mandado compilar y se aade el cdigo de las funciones que hay en las bibliotecas del compilador para que el ejecutable pueda comunicarse directamente con el sistema operativo, traduciendo as finalmente el cdigo objeto acdigo mquina, y generando un mdulo ejecutable.

Estos dos pasos se pueden hacer por separado, almacenando el resultado de la fase de compilacin en archivos objetos (un tpico.obj para Microsoft Windows, DOS o para Unix); para enlazarlos en fases posteriores, o crear directamente el ejecutable; con lo que la fase de compilacin se almacena slo temporalmente. Un programa podra tener partes escritas en varios lenguajes (por ejemplo C, C++ y Asm), que se podran compilar de forma independiente y luego enlazar juntas para formar un nico mdulo ejecutable. [editar]Etapas

del proceso

El proceso de traduccin se compone internamente de varias etapas o fases, que realizan distintas operaciones lgicas. Es til pensar en estas fases como en piezas separadas dentro del traductor, y pueden en realidad escribirse como operaciones codificadas separadamente aunque en la prctica a menudo se integren juntas. [editar]Fase

de anlisis
Analizador lxico

[editar]Anlisis lxico
Artculo principal:

El anlisis lxico constituye la primera fase, aqu se lee el programa fuente de izquierda a derecha y se agrupa en componentes lxicos (tokens), que son secuencias de caracteres que tienen un significado. Adems, todos los espacios en blanco, lneas en blanco, comentarios y dems informacin innecesaria se elimina del programa fuente. Tambin se comprueba que los smbolos del lenguaje (palabras clave, operadores,...) se han escrito correctamente. Como la tarea que realiza el analizador lxico es un caso especial de coincidencia de patrones, se necesitan los mtodos de especificacin y reconocimiento de patrones, se usan principalmente los autmatas finitos que acepten expresiones regulares. Sin embargo, un analizador lxico tambin es la parte del traductor que maneja la entrada del cdigo fuente, y puesto que esta entrada a menudo involucra un importante gasto de tiempo, el analizador lxico debe funcionar de manera tan eficiente como sea posible. [editar]Anlisis sintctico
Artculo principal:

Analizador sintctico

En esta fase los caracteres o componentes lxicos se agrupan jerrquicamente en frases gramaticales que el compilador utiliza para sintetizar la salida. Se comprueba si lo obtenido de la fase anterior es sintcticamente correcto (obedece a la gramtica del

lenguaje). Por lo general, las frases gramaticales del programa fuente se representan mediante un rbol de anlisis sintctico. La estructura jerrquica de un programa normalmente se expresa utilizando reglas recursivas. Por ejemplo, se pueden dar las siguientes reglas como parte de la definicin de expresiones: 1. Cualquier identificador es una expresin. 2. Cualquier nmero es una expresin. 3. Si expresin1 y expresin2 son expresiones, entonces tambin lo son:

expresin1 + expresin2 expresin1 * expresin2 ( expresin1 )

Las reglas 1 y 2 son reglas bsicas (no recursivas), en tanto que la regla 3 define expresiones en funcin de operadores aplicados a otras expresiones. La divisin entre anlisis lxico y anlisis sintctico es algo arbitraria. Un factor para determinar la divisin es si una construccin del lenguaje fuente es inherentemente recursiva o no. Las construcciones lxicas no requieren recursin, mientras que las construcciones sintcticas suelen requerirla. No se requiere recursin para reconocer los identificadores, que suelen ser cadenas de letras y dgitos que comienzan con una letra. Normalmente, se reconocen los identificadores por el simple examen del flujo de entrada, esperando hasta encontrar un carcter que no sea ni letra ni dgito, y agrupando despus todas las letras y dgitos encontrados hasta ese punto en un componente lxico llamado identificador. Por otra parte, esta clase de anlisis no es suficientemente poderoso para analizar expresiones o proposiciones. Por ejemplo, no podemos emparejar de manera apropiada los parntesis de las expresiones, o las palabras begin y end en proposiciones sin imponer alguna clase de estructura jerrquica o de anidamiento a la entrada. [editar]Anlisis semntico La fase de anlisis semntico revisa el programa fuente para tratar de encontrar errores semnticos y rene la informacin sobre los tipos para la fase posterior de generacin de cdigo. En ella se utiliza la estructura jerrquica determinada por la fase de anlisis sintctico para identificar los operadores y operandos de expresiones y proposiciones. Un componente importante del anlisis semntico es la verificacin de tipos. Aqu, el compilador verifica si cada operador tiene operandos permitidos por la especificacin del

lenguaje fuente. Por ejemplo, las definiciones de muchos lenguajes de programacin requieren que el compilador indique un error cada vez que se use un nmero real como ndice de una matriz. Sin embargo, la especificacin del lenguaje puede imponer restricciones a los operandos, por ejemplo, cuando un operador aritmtico binario se aplica a un nmero entero y a un nmero real. Revisa que los arreglos tengan definido el tamao correcto. [editar]Fase

de sntesis

Consiste en generar el cdigo objeto equivalente al programa fuente. Slo se genera cdigo objeto cuando el programa fuente est libre de errores de anlisis, lo cual no quiere decir que el programa se ejecute correctamente, ya que un programa puede tener errores de concepto o expresiones mal calculadas. Por lo general el cdigo objeto es cdigo de mquina relocalizable o cdigo ensamblador. Las posiciones de memoria se seleccionan para cada una de las variables usadas por el programa. Despus, cada una de las instrucciones intermedias se traduce a una secuencia de instrucciones de mquina que ejecuta la misma tarea. Un aspecto decisivo es la asignacin de variables a registros. [editar]Generacin de cdigo intermedio Despus de los anlisis sintctico y semntico, algunos compiladores generan una representacin intermedia explcita del programa fuente. Se puede considerar esta representacin intermedia como un programa para una mquina abstracta. Esta representacin intermedia debe tener dos propiedades importantes; debe ser fcil de producir y fcil de traducir al programa objeto. La representacin intermedia puede tener diversas formas. Existe una forma intermedia llamada "cdigo de tres direcciones" que es como el lenguaje ensamblador de una mquina en la que cada posicin de memoria puede actuar como un registro. El cdigo de tres direcciones consiste en una secuencia de instrucciones, cada una de las cuales tiene como mximo tres operandos. Esta representacin intermedia tiene varias propiedades:

Primera.- Cada instruccin de tres direcciones tiene a lo sumo un operador, adems de la asignacin, por tanto, cuando se generan estas instrucciones, el traductor tiene que decidir el orden en que deben efectuarse las operaciones.

Segunda.- El traductor debe generar un nombre temporal para guardar los valores calculados por cada instruccin. Tercera.- Algunas instrucciones de "tres direcciones" tienen menos de tres operandos, por ejemplo, la asignacin.

[editar]Optimizacin

de cdigo

La fase de optimizacin de cdigo consiste en mejorar el cdigo intermedio, de modo que resulte un cdigo mquina ms rpido de ejecutar. Esta fase de la etapa de sntesis es posible sobre todo si el traductor es un compilador (difcilmente un interprete puede optimizar el cdigo objeto). Hay mucha variacin en la cantidad de optimizacin de cdigo que ejecutan los distintos compiladores. En los que hacen mucha optimizacin, llamados "compiladores optimizadores", una parte significativa del tiempo del compilador se ocupa en esta fase. Sin embargo, hay optimizaciones sencillas que mejoran sensiblemente el tiempo de ejecucin del programa objeto sin retardar demasiado la compilacin. [editar]Estructura

de datos principales

La interaccin entre los algoritmos utilizados por las fases del compilador y las estructuras de datos que soportan estas fases es, naturalmente, muy fuerte. El escritor del compilador se esfuerza por implementar estos algoritmos de una manera tan eficaz como sea posible, sin aumentar demasiado la complejidad. De manera ideal, un compilador debera poder compilar un programa en un tiempo proporcional al tamao del mismo. [editar]Componentes

lxicos o tokens

Cuando un analizador lxico rene los caracteres en un token, generalmente representa el token de manera simblica, es decir, como un valor de un tipo de datos enumerado que representa el conjunto de tokens del lenguaje fuente. En ocasiones tambin es necesario mantener la cadena de caracteres misma u otra informacin derivada de ella, tal como el nombre asociado con un token identificador o el valor de un token de nmero. En la mayora de los lenguajes el analizador lxico slo necesita generar un token a la vez. En este caso se puede utilizar una variable global simple para mantener la informacin del token. En otros casos (cuyo ejemplo ms notable es FORTRAN), puede ser necesario un arreglo (o vector) de tokens. [editar]rbol

sintctico

Si el analizador sintctico genera un rbol sintctico, por lo regular se construye como una estructura estndar basada en un puntero que se asigna de manera dinmica a medida que se efecta el anlisis sintctico. El rbol entero puede entonces conservarse como una variable simple que apunta al nodo raz. Cada nodo en la estructura es un registro cuyos campos representan la informacin recolectada tanto por el analizador sintctico como, posteriormente, por el analizador semntico. Por ejemplo, el tipo de datos de una

expresin puede conservarse como un campo en el nodo del rbol sintctico para la expresin. En ocasiones, para ahorrar espacio, estos campos se asignan de manera dinmica, o se almacenan en otras estructuras de datos, tales como la tabla de smbolos, que permiten una asignacin y desasignacin selectivas. En realidad, cada nodo del rbol sintctico por s mismo puede requerir de atributos diferentes para ser almacenado, de acuerdo con la clase de estructura del lenguaje que represente. En este caso, cada nodo en el rbol sintctico puede estar representado por un registro variable, con cada clase de nodo conteniendo solamente la informacin necesaria para ese caso. [editar]Tabla

de smbolos

Esta estructura de datos mantiene la informacin asociada con los identificadores: funciones, variables, constantes y tipos de datos. La tabla de smbolos interacta con casi todas las fases del compilador: el analizador lxico, el analizador sintctico o el analizador semntico pueden introducir identificadores dentro de la tabla; el analizador semntico agregar tipos de datos y otra informacin; y las fases de optimizacin y generacin de cdigo utilizarn la informacin proporcionada por la tabla de smbolos para efectuar selecciones apropiadas de cdigo objeto. Puesto que la tabla de smbolos tendr solicitudes de acceso con tanta frecuencia, las operaciones de insercin, eliminacin y acceso necesitan ser eficientes, preferiblemente operaciones de tiempo constante. Una estructura de datos estndar para este propsito es la tabla de dispersin o de clculo de direccin, aunque tambin se pueden utilizar diversas estructuras de rbol. En ocasiones se utilizan varias tablas y se mantienen en una lista o pila. [editar]Tabla

de literales

La bsqueda y la insercin rpida son esenciales tambin para la tabla de literales, la cual almacena constantes y cadenas utilizadas en el programa. Sin embargo, una tabla de literales necesita impedir las eliminaciones porque sus datos se aplican globalmente al programa y una constante o cadena aparecer slo una vez en esta tabla. La tabla de literales es importante en la reduccin del tamao de un programa en la memoria al permitir la reutilizacin de constantes y cadenas. Tambin es necesaria para que el generador de cdigo construya direcciones simblicas para las literales y para introducir definiciones de datos en el archivo de cdigo objeto.

[editar]Cdigo

intermedio

De acuerdo con la clase de cdigo intermedio (por ejemplo, cdigo de tres direcciones o cdigo P) y de las clases de optimizaciones realizadas, este cdigo puede conservarse como un arreglo de cadenas de texto, un archivo de texto temporal o bien una lista de estructuras ligadas. En los compiladores que realizan optimizaciones complejas debe ponerse particular atencin a la seleccin de representaciones que permitan una fcil reorganizacin. Generacin de cdigo intermedio Despus de los anlisis sintctico y semntico, algunos compiladores generan una representacin intermedia explcita del programa fuente. Se puede considerar esta representacin intermedia como un programa para una mquina abstracta. Esta representacin intermedia debe tener dos propiedades importantes; debe ser fcil de producir y fcil de traducir al programa objeto. La representacin intermedia puede tener diversas formas. Existe una forma intermedia llamada "cdigo de tres direcciones", que es como el lenguaje ensamblador para una mquina en la que cada posicin de memoria puede actuar como un registro. El cdigo de tres direcciones consiste en una secuencia de instrucciones, cada una de las cuales tiene como mximo tres operandos. El programa fuente de (1) puede aparecer en cdigo de tres direcciones como
temp1 := entarea1(60) temp2 := id3 * temp1 (2) temp3 := id2 + temp2 id1 := temp3

Esta representacin intermedia tiene varias propiedades. Primera, cada instruccin de tres direcciones tiene a lo sumo un operador, adems de la asignacin. Por tanto, cuando se generan esas instrucciones el compilador tiene que decidir el orden en que deben efectuarse, las operaciones; la multiplicacin precede a la adicin al programa fuente de. Segunda, el compilador debe generar un nombre temporal para guardar los valores calculados por cada instruccin. Tercera, algunas instrucciones de "tres direcciones" tienen menos de tres operadores, por ejemplo la primera y la ltima instrucciones de. Optimizacin de Cdigo La fase de optimizacin de cdigo trata de mejorar el cdigo intermedio de modo que resulte un cdigo de mquina ms rpido de ejecutar. Algunas optimizaciones son

triviales. Por ejemplo, un algoritmo natural genera el cdigo intermedio (2) utilizando una instruccin para cada operador de la representacin del rbol despus del anlisis semntico, aunque hay una forma mejor de realizar los mismos clculos usando las dos instrucciones
Temp1 := id3 * 60.0 (3) Id1 := id2 + temp1

Este sencillo algoritmo no tiene nada de malo, puesto que el problema se puede solucionar en la fase de optimizacin de cdigo. Esto es, el compilador puede deducir que la conversin de 60 de entero a real se puede hacer de una vez por todas en el momento de la compilacin, de modo que la operacin entreal se puede eliminar. Adems, temp3 se usa slo una vez, para transmitir su valor a id1. Entonces resulta seguro sustituir a id1 por temp3, a partir de lo cual la ltima proposicin de (2) no se necesita y se obtiene el cdigo de (3). Hay muchas variaciones en la cantidad de optimizacin de cdigo que ejecutan los distintos compiladores. En lo que hacen mucha optimizacin llamados "compiladores optimizadores", una parte significativa del tiempo del compilador se ocupa en esta fase. Sin embargo hay optimizaciones sencillas que mejoran significativamente del tiempo del compilador se ocupa en esta fase. Sin embargo, hay optimizaciones sencillas que mejoran sensiblemente el tiempo de ejecucin del programa objeto sin retardar demasiado la compilacin. [editar]Archivos

temporales

Al principio las computadoras no tenan la suficiente memoria para guardar un programa completo durante la compilacin. Este problema se resolvi mediante el uso de archivos temporales para mantener los productos de los pasos intermedios durante la traduccin o bien al compilar "al vuelo", es decir, manteniendo slo la informacin suficiente de las partes anteriores del programa fuente que permita proceder a la traduccin. Las limitaciones de memoria son ahora un problema mucho menor, y es posible requerir que una unidad de compilacin entera se mantenga en memoria, en especial si se dispone de la compilacin por separado en el lenguaje. Con todo, los compiladores ocasionalmente encuentran til generar archivos intermedios durante alguna de las etapas del procesamiento. Algo tpico de stos es la necesidad de direcciones de correccin hacia atrs durante la generacin de cdigo.

Вам также может понравиться