Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
(Tema DOS)
por Estrada Espinosa David Morales Solares Carlos Ortiz Ruiz Otoniel Manuel
Introduccin
Los primeros lenguajes al ejecutarse en equipos costosos se proyectaban para producir un cdigo de mquina eficiente, aun cuando la escritura de los programas era difcil. Por ejemplo, Fortran y LISP. n la actualidad los equipos son de bajo costo, por lo que, permiten el desarrollo de programas que son fciles de escribir correctamente aunque se ejecuten con lentitud algo mayor. Por ejemplo, !"", #a$a, %da. Sin embargo, &cmo se dise'an esta clase de lenguajes( n el desarrollo de un lenguaje de programacin, )ay tres influencias principales que afectan su dise'o* +. La computadora subyacente en donde se $an a ejecutar los programas escritos en el lenguaje. ,. l modelo de ejecucin, o computadora $irtual, que apoya a ese lenguaje en el equipo real. -. l modelo de computacin que el lenguaje implementa. n este trabajo se anali.an de forma bre$e estos temas.
/na computadora es un conjunto integrado de algoritmos y estructuras de datos capa. de almacenar y ejecutar programas. Se puede construir una computadora como un dispositi$o fsico real utili.ando circuitos integrados, tarjetas, etc. n ese caso se le conoce como computadora real o computadora de hardware. Sin embargo, tambi0n se puede construir a tra$0s de soft1are por medio de programas que se ejecuten en otra computadora, y en este caso se trata de una computadora simulada por software /n lenguaje de programacin se implementa construyendo un traductor, el cual traduce los programas que estn en el lenguaje a programas en lenguaje de mquina que pueden ser ejecutados directamente por alguna computadora.
operacin primiti$a se debe guardar en alguna localidad designada. Llamamos a estos recursos el control de acceso a datos de la computadora. l esquema con$encional consiste en asociar direcciones de enteros con localidades de memoria y suministrar operaciones para recuperar el contenido de una localidad dada. 4estin de almacenamiento Para acelerar el desequilibrio entre acceso a datos e5ternos y el procesador central, el sistema operati$o suele utili.ar multiprogramacin. 9ientras aguarda muc)os milisegundos a que se lean los datos , la computadora ejecuta otro programa. % fin de que muc)os programas puedan residir conjuntamente en la memoria al mismo tiempo, es com8n incluir recursos para paginacin o reubicacin dinmica de programas directamente en el )ard1are. 5isten algoritmos de paginacin que intentan pre$er cuales direcciones de programas y datos tienen ms probabilidades de ser utili.ados en futuro cercano, con el propsito de que el )ard1are pueda ponerlas a disposicin del procesador central. Para acelerar el desequilibrio entre la memoria principal y el procesador central, se emplea una memoria cac)0. /na memoria cac)0 es un peque'o almac0n de datos de alta $elocidad que se encuentra entre la memoria principal y el procesador central, contiene los datos e instrucciones que el procesador central )a usado ms recientemente y, por tanto , incluye los datos e instrucciones que es ms probable que se $an a necesitar en el futuro cercano. ntorno de operacin l entorno de operacin de una computadora consiste ordinariamente en un conjunto de dispositi$os perif0ricos de almacenamiento y entrada : salida. stos representan el mundo e5terior para la computadora, y cualquier comunicacin con ella debe tener lugar a tra$0s del entorno de operacin. j. 2iscos magn0ticos, !2;<39, cintas y otros dispositi$os de entrada salida.
Estados de computadoras
l pleno entendimiento de una computadora radica en $er con claridad su operacin esttica y la dinmica. /n medio con$eniente de $isuali.ar el comportamiento dinmico de una computadora es a tra$0s del concepto de estado de computadora. !onsid0rese que el proceso de ejecucin de
programas por la computadora tiene lugar a tra$0s de una serie de estados, cada uno definido por el contenido de la memoria, los registros internos y los almacenes e5ternos en alg8n punto durante la ejecucin. l contenido inicial de estas reas de almacenamiento define el estado inicial de la computadora. !ada paso en la ejecucin del programa transforma el estado e5istente en un nue$o estado a tra$0s de la modificacin del contenido de una de estas reas de almacenamiento o ms. sta transformacin de estado se designa como una transicin de estado. !uando la ejecucin del programa )a concluido, el estado final est definido por el contenido final de estas reas de almacenamiento.
Firmware
2ada una definicin precisa de una computadora siempre es posible producir la computadora en )ard1are , es decir, construir un dispositi$o fsico cuyo lenguaje de mquina se a precisamente el de la computadora definida. sto es cierto incluso si el lenguaje de mquina es de alto ni$el como !. %l sugerir esta posibilidad se recurre a un importante principio bsico que est detrs del dise'o de las computadoras* cualquier algoritmo o estructura de datos definida con precisin se puede producir en )ard1are. Puesto que una computadora es simplemente una coleccin de algoritmos y estructuras de datos, se puede suponer que su produccin en )ard1are es una posibilidad, independientemente de la complejidad de la computadora o su lenguaje de mquina asociado. Las computadoras de )ard1are reales tienen com8nmente un lenguaje de mquina de ni$el ms bien bajo en ra.n de consideraciones prcticas. s probable que una computadora con ! o %da en su lenguaje de mquina sea considerablemente ms compleja y muc)o menos fle5ible en di$ersas tareas de cmputo que una computadora con un lenguaje de mquina de bajo ni$el. /na alternati$a com8n a la produccin estricta en )ard1are de una computadora es la computadora de firm1are, simulada por un microprograma que ejecuta en una computadora microprogramable de )ard1are especial. l lenguaje de mquina de esta computadora consiste por lo general simples transferencias de datos entre memoria principal y registros internos de alta $elocidad, entre los registros mismos, y desde los registros a otros registros a tra$0s de procesadores como sumadores y multiplicadores. l microprograma simula la operacin de la computadora deseada en la computadora microprogramable anfitrin. l microprograma reside generalmente en memoria de slo lectura.
!asi todas las instrucciones en el lenguaje fuente se traducen una por una a instrucciones en el lenguaje objeto. !ompilador /n compilador es un traductor cuyo lenguaje fuente es un lenguaje de alto ni$el y cuyo lenguaje objeto se apro5ima al lenguaje mquina de una computadora real , ya sea que se trate de un lenguaje ensamblador o alguna $ariedad de lenguaje mquina. !argador s un traductor cuya entrada es un lenguaje objeto y la entrada es un programa en lenguaje mquina en manera reubicable@ las modificaciones que reali.a son a tablas de datos que especifican las direcciones de memoria donde el programa necesita estar para ser ejecutable. Preprocesador Asicamente es un editor de te5to, toma como entrada una forma ampliada de un lenguaje fuente y su salida es una forma estndar del mismo lenguaje fuente. Simulacin de software (interpretacin) n lugar de traducir los programas de alto ni$el, a programas equi$alentes en lenguaje mquina, se podran simular a tra$0s de programas ejecutados en otra computadora anfitrin, una computadora cuyo lenguaje mquina sea de alto ni$el. sto se construye con soft1are que se ejecuta en la computadora anfitrin, la computadora con lenguaje de alto ni$el que de otra manera se podra )aber construido en )ard1are. % esto se le conoce como una simulacin por soft1are 6o interpretacin7 de la computadora con lenguaje de alto ni$el en la computadora anfitrin. La traduccin y la simulacin proporcionan $entajas diferentes, una $entaja de la traduccin, es que cdigos referentes a ciclos que se repitan gran cantidad de $eces, son ejecutados muc)as $eces, pero se traducen slo una a diferencia de los simulados, que tienen que decodificarlo la misma cantidad de $eces que se ejecute. /na $entaja para la simulacin, es que en caso de un error, proporcionan ms informacin acerca de donde fue la falla que en un cdigo objeto traducido.
Computadoras Virtuales
%nteriormente se consideraron formas para la construccin de una computadora* +. % tra$0s de una produccin en hardware, representando las estructuras de datos y algoritmos directamente con dispositi$os fsicos. ,. % tra$0s de una produccin de firmware, representando las estructuras de datos y algoritmos por microprogramacin de una computadora de )ard1are. -. % tra$0s de la simulacin de software, representando las estructuras de datos y algoritmos por medio de programas y estructuras de datos en alg8n otro lenguaje de programacin. B. % tra$0s de alguna combinacin de estas t0cnicas. Se )abla de la computadora virtual definida por el lenguaje, a las estructuras de control y algoritmos en tiempo de ejecucin que se emplean durante la ejecucin de un programa.
l lenguaje de mquina de esta computadora $irtual es el programa ejecutable que produce el traductor del lenguaje, el cual puede adoptar la forma de cdigo de mquina aut0ntico si el lenguaje se compila o puede tener alguna estructura arbitraria si el lenguaje se interpreta.
Sinta is y sem!ntica
La sinta5is de un lenguaje de programacin es el aspecto que ofrece el programa. Proporcionar las reglas de sinta5is para un lenguaje de programacin significa decir como se escriben los enunciados, declaraciones y otras construcciones del lenguaje. La semntica de un lenguaje de programacin es el significado que se da a las di$ersas construcciones sintcticas. ?picamente se describe la sinta5is de una construccin del lenguaje con la notacin A>F 6AacCus >aur Form7 y luego se da tambi0n la semntica para esa construccin. La descripcin semntica de un lenguaje tambi0n se puede definir en t0rminos de su computadora $irtual, sin embargo, es poco usual )acerlo de esta forma.
#erarqu$as de computadoras
La computadora $irtual que un programador utili.a cuando decide )acer un programa en alg8n lenguaje de alto ni$el esta formada, de )ec)o, por una jerarqua de computadoras virtuales. Dasta abajo debe )aber, por supuesto, una computadora de )ard1are real. Sin embargo, el programador ordinario rara $e. tiene trato directo con esta computadora. n $e. de ello, esta computadora de )ard1are se transforma sucesi$amente a tra$0s de capas de soft1are 6o microprogramas7 en una computadora $irtual que puede ser radicalmente distinta. l segundo ni$el de computadora $irtual 6o tercero si un microprograma forma el segundo ni$el7 est definido ordinariamente por la compleja coleccin de rutinas que se conoce como sistema operativo. ?picamente, el sistema operati$o pro$ee simulaciones de un cierto n8mero de operaciones y estructuras de datos nue$as que no proporciona directamente el )ard1are, por ejemplo, estructuras de arc)i$os e5ternos y primiti$as de administracin de arc)i$os. La computadora $irtual definida por el sistema operati$o es por lo com8n la que est disponible para el implementador de un lenguaje de alto ni$el. l implementador tambi0n suministra un traductor para traducir programas de usuario al lenguaje de mquina de la computadora $irtual definida por el lenguaje de alto ni$el. Los programas que el programador construye a'aden un ni$el ms a la jerarqua. l lenguaje de mquina se compone de los datos de entrada para estos programas.
Lo que es programa en un conte5to es probable que se con$ierta en datos en otro. Por ejemplo, se puede escribir un programa en Pascal, pero para el compilador de Pascal ese programa son datos de entrada por procesar.
una $e. durante la traduccin y quedaran unos cuantos para ser manejados durante la ejecucin. !omo consecuencia, la $ersin en F3<?<%> se ejecutara de manera ms eficiente. Por otra parte, & por qu0 F3<?<%> es tan infle5ible para manejar cadenas en comparacin con 9L(. /na $e. ms, la respuesta gira en torno a tiempos de enlace. 9ientras que en F3<?<%> el tama'o de las cadenas y el tipo de $ariables se deben de fijar durante la traduccin, en 9L se pueden retrasar los enlaces durante la ejecucin logrando con ello ms fle5ibilidad para adaptarse a los datos de entrada. Se dice que un lenguaje como F3<?<%>, donde casi todos los enlaces se efect8an durante la traduccin tiene enlace temprano o enlace esttico. E un lenguaje como 9L, donde demora casi todos los enlaces )asta el tiempo de ejecucin tiene enlace tardo o enlace dinmico. Las $entajas y des$entajas de enlace esttico respecto al enlace dinmico giran en torno a este conflicto entre eficiencia y fle5ibilidad. Los lenguajes como F3<?<%>, Pascal y ! la eficiencia es considerada primordial a diferencia de lenguajes como 9L y LISP en donde la fle5ibilidad es primordial. n general, un dise'o de lenguaje especifica el momento ms cercano durante el procesamiento del programa en el cual es posible un enlace particular. Puesto que los tiempos de enlace dependen de la implementacin, se )ace 0nfasis en conocer la implementacin del lenguaje.
programa depende del contenido de todas y cada una de las celdas de memoria. Para poder obser$ar un programa a tra$0s del tiempo debemos tomar Hfotos instantneasI de la memoria antes y despu0s de ejecutar cada paso. Si el programa maneja una cantidad grande de memoria esto se $uel$e tedioso en el mejor de los casos y prcticamente imposible en general.
as como las que ya fueron definidas pre$iamente. 2e esta manera se pueden ir construyendo aplicaciones cada $e. ms complejas. La des$entaja de este modelo es que resulta bastante alejado del modelo de la mquina de =on >eumann y, por lo tanto, la eficiencia de ejecucin de los int0rpretes de lenguajes funcionales no es comparable con la ejecucin de los programas imperati$os precompilados. Para remediar la deficiencia, se est buscando utili.ar arquitecturas paralelas que mejoren el desempe'o de los programas funcionales, sin que )asta la fec)a estos intentos tengan un impacto real importante.
mquina en la que tienen que ser interpretados@ por lo tanto, la eficiencia de la ejecucin no puede ser comparable con la de un programa equi$alente escrito en un lenguaje imperati$o. Sin embargo, para cierto tipo de problemas, la formulacin del programa mismo puede ser muc)o ms sencilla y natural 6para un programador e5perimentado, por supuesto7.
solo procesador, y as surgi la necesidad de introducir algunos conceptos de programacin concurrente para programar los sistemas operati$os. Posteriormente, cuando los procesadores cambiaron de tama'o y de precio, se abri la posibilidad de contar con $arios procesadores en una mquina y ofrecer el procesamiento en paralelo, es decir, procesar $arios programas al mismo tiempo. sto dio el impulso a la creacin de lenguajes que permitan e5presar el paralelismo. Finalmente, llegaron las redes de computadoras, que tambi0n ofrecen la posibilidad de ejecucin en paralelo, pero con procesadores distantes, lo cual conocemos como la programacin distribuida. n resumen, el origen de los conceptos para el manejo de concurrencia, paralelismo y distribucin est en el deseo de apro$ec)ar al m5imo la arquitectura =on >eumann y sus modalidades reflejadas en cone5iones paralelas y distribuidas. Districamente encontramos en la literatura soluciones conceptuales y mecanismos tales como* semforos, regiones crticas, monitores, en$o de mensajes 6!SP7, llamadas a procedimientos remotos 6<P!7, que posteriormente se incluyeron como partes de los lenguajes de programacin en !oncurrent Pascal, 9odula, %da, 3!!%9, y 8ltimamente en #a$a. /no de los ejemplos ms importantes es el modelo de en$o de mensajes de !SP de Doare JBK, para las arquitecturas paralelas y distribuidas, el cual no solamente fructific en una propuesta del lenguaje de programacin 3!!%9, sino dio origen a una nue$a familia de procesadores, llamados PtransputersP, que fcilmente se componen en una arquitectura paralela. s difcil e$aluar las propuestas e5istentes de lenguajes para la programacin concurrente, paralela y distribuida. Primero, porque los programadores estn acostumbrados a la programacin secuencial y cualquier uso de estos mecanismos les dificulta la construccin y el anlisis de programas. Por otro lado, este tipo de conceptos en el pasado fue manejado principalmente a ni$el de sistemas operati$os, protocolos de comunicacin, etc0tera, donde la eficiencia era crucial, y por lo tanto no se utili.aban lenguajes de alto ni$el para la programacin. Doy en da, la programacin de sistemas complejos tiene que incluir las partes de comunicaciones, programacin distribuida y concurrencia. sto lo saben los creadores de los lenguajes ms recientes, que integran conceptos para manejar* los )ilos de control, comunicacin, sincroni.acin y no determinismo@ el )ard1are y las aplicaciones se los e5igen.
Bibliografa
Pratt, ?errence Q. Programming languages* design and implementation. Bt) d. Prentice Dall. ISA> G+-G,NFNM, Aruce cCel %plique !"" : 9adrid @ 905ico * 3sborne 9c4ra1;Dill, c+OO+ ISA> MB;NF+L;LFN;G