Professional Documents
Culture Documents
La arquitectura de una computadora explica la situacin de sus componentes y permite determinar las posibilidades de que un sistema informtico, con una de terminada configuracin, pueda realizar las operaciones para las que se va a utilizar. Arquitectura de computadoras Cuando se describe una computadora se debe distinguir entre arquitecturas y organizacin. La arquitectura de computadoras se refiere a los atributos de un sistema que son visibles a un programador, es decir aquellos atributos que tienen un impacto directo en la ejecucin lgica de un programa. Organizacin de computadoras Se refiere a las unidades funcionales y sus interconexiones, qu materializan especificaciones arquitectnicas. Atributos como detalles de hardware transparentes para el programador, tales como seales de control, interfaces entre la computadora y los perifricos y la tecnologa de memoria utilizada.
Blaise Pascal fue un matemtico francs que naci en el 1623. Desde muy temprana edad era un entusiasta en el estudio autodidacta de las matemticas. Antes de que alcanzara la edad de trece aos, Pascal descubri un error en la geometra de Descartes En el 1642 invent una mquina calculadora que permita sumar y restar, conocida como el Pascalino. Tal mecanismo, empleaba ruedas numeradas del 0 al 9, la cual incorporaba un mecanismo de dientes y cremalleras que permitan manejar nmeros hasta 999,999.99. Debido al alto costo para reproducir este aparato, y porque la gente tema que fueran despedidas de sus trabajos, el Pascalino no fue un xito comercial. 1694 Gottfried Wilhelm Von Leibniz Leibniz fue un matemtico Alemn que diseo un instrumento llamado el Stepped Reckoner. Esta mquina era ms verstil que la de Pascal puesto que poda multiplicar y dividir, as como sumar y restar. 1790 Joseph Marie Jacquard Cre el Telar de Jacquard (Jacquards Loom) el cual empleaba tarjetas perforadas para crear patrones en una fbrica de avitelado en una tejedora. 1812 Charles Babbage Charles Babbage fue un ingls que, agravado por errores en las tablas matemticas que eran impresas, renunci a su posicin en Cambridge para concentrar sus esfuerzos en el diseo y construccin de un dispositivo que pudiera resolver su problema. Babbage bautiz su mquina del ensueo con el nombre de Motor Diferencial (Differential Engine), pues sta trabajaba para resolver ecuaciones diferenciales. Empleando fondos del gobierno y de sus propios recursos, durante diecinueve aos labor arduamente en su meta, pero no tuvo xito. Babbage solo pudo construir algunos componentes y la gente se referan a su artefacto como la locura de Babbage. Luego que el gobierno retirar sus fondos, Babbage comenz a trabajar en otra y ms sofisticada versin de su mquina, la cual fue llamada el Motor Analtico (Analytical Engine). Una amiga ntima, Augusta Ada Bryron, Condesa de Lovelace, la nica hija reconocida por el Barn Bryron, trat de ayudar a Babbage. Ella reuni dinero para su invencin y escribi un programa de demostracin para el Motor Analtico. Por su contribucin al desarrollo de tal programa, ella es considerada como el primer programador de computadora y el lenguaje de programacin Ada fue nombrado en su honor. En el 1835, Babbage diseo un sistema con provisin para datos impresos, una unidad de control y una unidad de almacenaje de informacin. Esta mquina almacenaba los resultados intermedios en tarjetas perforadas similares a las que utilizaba el telar de Jacquard. Sin embargo, el Motor Analtico nunca fue completado porque la construccin de la mquina requera herramientas de precisin que no existan para esa poca. La lgica de la mquina de Babbage fu importante para otros inventores de computadora. Se le atribuye a Babbage las dos clasificaciones de la computadora: el almacenaje,o la memoria, y el molino, una unidad de procesamiento que lleva a cabo los cmputos aritmticos para la mquina. Por este logro, se le considera el padre de las computadoras, e historiadores se han atrevido a decir que todas las computadoras modernas tienen descendencia directa del Motor Analtico de Babbage. 1880 Herman Hollerith Norteamericano que invent una perforadora, lectora y tabuladora de tarjetas. La Computadora Moderna 2
1943 Howard Aiken Como estudiante de Harvard, Aiken propuso a la universidad crear una computadora, basado en el Motor Analtico de Babbage. Lamentablemente, la universidad de Harvard no le provey la ayuda que necesitaba. Sin embargo, su idea tuvo buena acogida para la compaia privada de IBM. Entonces, Aiken, conjuntamente con un grupo de cientficos, se lanz a la tarea de construir su mquina. En el 1943, se complet su sueo con su nuevo beb, llamado Mark I, tambin conocido por la IBM como Automatic Sequence Controlled Calculator. Este artefacto era de 51 pies de largo, 8 pies de altura y 2 pies de espesor; contaba con 750,000 partes y 500 millas de cable; y su peso era de 5 toneladas. Era muy ruidosa, pero capaz de realizar tres calculaciones por segundo. Este computador, aceptaba tarjetas perforadas, las cuales eran luego procesadas y almacenadas esta informacin. Los resultados eran impresos en una maquinilla elctrica. Esta primera computadora electromecnica fue la responsable de hacer a IBM un gigante en la tecnologa de las computadoras. Luego, Howard Aiken y la IBM se separaron en compaas independiente, alegadamente debido a la arrogancia de Aiken. Como fue documentado, IBM haba invertido sobre $0.5 millones en la Mark I y en retorno a su inversin, Thomas J. Watson, el cual diriga IBM, quera el prestigio de estar asociado con la Universidad de harvard. En una ceremonia de dedicacin por la ceracin del Mark I, el Dr. Howard Aiken hizo alarde de sus logros sin referirse a la IBM. Este descuido intencional enoj a Watson, el cual le gritaba algunas blasfemias a Aiken antes de sbitamente dejar la ceremonia. A raz de este incidente. Watson termin su asociacin con Harvard. Ms tarde, IBM desarrollaron varias mquinas que eran similares a la de Mark L, y Howard Aiken tambin construy una serie de mquinas (la Mark II, Mark III y Mark IV). Otro interesante hecho ocurri con Aiken, y es que se acuo la palabra debug. En el 1945, el Mark II estaba albergado en un edificio sin aire acondicionado. Debido a que generaba una gran cantidad de calor, las ventanas se dejaron abiertas. Sin previo aviso, la computadora gigante se detuvo y todos los tcnicos trataron frenticamente de resolver la fuente del problema. Grace Hopper, un brillante cientfico, y sus compaeros de trabajo encontraron el culpable: una polilla muerta en un relevo de la computadora. Ellos eliminaron la polilla con unas pinzas y la colocaron en la bitcora de Mark II. Cuando Aiken regres para ver coma andaban las cosas con sus asociados, ellos le contaron que tuvieron que debug la mquina. Al presente, la bitcora del Mark II se prserva en el Museo naval en Dahlgren, Virginia. 1939 John Atanasoff En el 1939, en la Universidad de Iowa State, John Atanasoff diseo y construy la primera computadora digital mientras trabajaba con Clifford Berrr, un estudiante graduado. Ms tarde, Atanasoff y Berry se dedicaron a trabajar en un modelo operacional llamado el ABC, el Atanasooff-Berry Computer. Esta computadora, completada en el 1942, usaba circuitos lgicos binarios y tena memoria regenerativa. 1946 Dr. John Mauchly y J. Presper Eckert Con el advenimiento de la Segunda Guerra Mundial, los militares necesitaban una computadora extremadamente rpida que fuera capaz de realizar miles de cmputos para compilar tablas balsticas para los nuevos caones y misiles navales. El Dr. John Mauchly y J. Presper Eckert crean que la nica manera de resolver este problema era con una mquina electrnica digital, de manera que trabajaron juntos en este proyecto. En el 1946 completaron su trabajo, del cual surgi una computadora electrnica digital operacional, llamada ENIAC (Electronic Numerical Integrator And Computer). Esta mquina fue 3
desarrollada a gran escala, siendo derivada de las ideas no patentadas de Atanasoff. Este aparato trabajaba con el sistema decimal y tena todas las caractersticas de las computadoras de hoy da. Las dimensiones de la ENIAC eran inmensas, ocupando un espacio de 30 X 50 pies, un peso de 30 toneladas, y un consumo de 160 kilovatios de potencia. Conduca electricidad a travs de 18,000 tubos de vaco, generando un calor inmenso; contaba con un aire acondicionado especial para mantenerla fra. La primera vez que se encendi este sistema menguaron las luces de toda Filadelfia. Esta computadora operaba a una frecuencia que era 500 veces ms rpida que cualquier computadora electromecnica de esa poca. Un problema que tena era que tardaba de 30 a dos hora de calcular para las mquinas electromecnicas, esta mquina la resolva en tres minutos. Las limitaciones del ENIAC eran un reducida memoria y un problema al cambiar de una programa a otro.: Cuando el usuario quera cambiar a otro programa, la mquina tena que ser re-alambrada. Estos problemas hubiesen tomado aos en resolverse sino fuera por una reunin entre Herman Goldsine, un matemtico y oficial de enlace para el proyecto de ENIAC, y John Von Newmann, un famoso logstico y matemtico. A raz de tal reunin, John Von Neumann se uni al equipo de Moore, el cual estaba muy cerca de embarcar en una nueva computadora llamada EDVAC (Electronic Discrete Variable Automatic Computer). 1945 John Von Newmann Luego de haber llegado John Von Newmann a Filadelfia, l ayid al grupo de Moore a adquirir el cotrato para el desarrollo de la EDVAC. Neumann tambin asisti al grupo con la composicin lgica de la mquina. Como resultado de la colaboracin del equipo de Moore, surgi un adelante crucial en la forma del concepto del programa almacenado. Hasta este momento, la computadora almacenaba sus programas externamente, ya fuera en tarjetas conectadas, cintas peroradas y tarjetas. La ENIAC empleaba 18, tobos al vaco y requera que un par de tales tubos se unieran en una manera particular para que pudieran sostener la memoria en un bit de los datos. Mauchly y Eckert descubrieron que una lnea de demora de mercurio podra reeplazar docenas de estos tubos al vaco. Ellos figuraron que las lneas de demoras significara ahorros gigantescos en los costos de los tubos y espacio de memoria. Este advance contribuy a la creacin de la computadora EDVAC. El EDVAC almacenaba informacin en memoria en l misma manera que los datos. La mquina, entonces, manipulaba la informacin almacenada. Aunque a Von Newmann y su grupo se le acredit con el uso del concepto del programa almacenado, no fu para ellos la primera mquina. Eso honor se dirige al grupo de la Universidad de Cambridge que desarrollarn el EDSAC (Electronic Delay Storage Automatic Computer). Las computadoras EDSAC y EDVAC fueron las primeras en usar la notacin binaria. Antes del 1951, las computadoras no fueron manufacturadas a grande escala. En el 1951, con la llegada del UNIVAC, comienza la era la las computadoras comerciales. Con tan solo dentro de tres aos, IBM comenz a distribuir su IBM 701 y otras compaas manufacturaron computadoras, tal como el Burroughs E. 101 y el Honeywell Datamatic 1000. Las computadoras que fueron desarrolladas durante los aos 1950 y 1960 se conocieron como las computadoras de la primera generacin porque tena una caracterstica en comn, el tubo en vaco. Generaciones de Computadoras Desde su inicio, la computadora a pasado varias etapas de desarrollo. Por lo general, los escritores clasifican estos avances tecnolgicos como generaciones, un trmino de mercadeo. Aunque existe algn solapamiento, es conveniente visualizar el desarrollo tecnolgico de esta manera. 4
Primera Generacin de Computadoras La primera generacin de computadoras comenz en los aos 1940 y se extendi hasta los 1950. Durante este periodo, las computadoras empleaban tubos al vaco para conducir la electricidad. El uso de los tubos al vaco haca que las computadoras fueran grandes, voluminosas y costosas porque los tubos tenan que ser continuamente reemplazados debido a que se quemaban con frecuencia. Hasta este tiempo, las computadoras fueron clasificadas por su dispositivo principal para el almacenaje en memoria. La UNIVAC I empleaba un ingenioso dispositivo llamado lnea de demora de mercurio (mercury delay line), la cual dependa de pulsos de ultrasonido. 1951 Remington Rand Desarroll la primera computadora elctrica digital, la UNIVAC I (UNIVersal Automatic Computer). 1953 IBM 650 Para esta poca, por primera vez se emplea ampliamente como sistemas de computadora el modelo de IBM 650. Originalmente se planificaron producir 50 mquinas, pero el sistema fue tan exitoso que eventualmente IBM manufactura ms de 1,000. Con las series de mquinas IBM 700, la compaa dominara el mercado de las supercomputadoras para la prxima dcada. 1957 IBM 305 RAMAC En el 1957, el sistema de IBM 305 RAMAC es el primero en su clase en utilizar disco magntico para almacenaje externo. El sistema provee capacidad de almacenamiento similar a la cinta magntica que fue usada previamente, pero ofrece la ventaja de capacidad de acceso semi-aleatorio. Segunda Generacin de Computadoras 1958 Transistor Las computadoras construidas con transistores marcan el comienzo de la segunda generacin de los equipos de computadora. 1959 IBM 1602 IBM introduce dos pequeas computadoras de escritorio, a saber: la IBM 1401 para negocios y la IBM 1602 para cientficos. Tercera Generacin de Computadoras 1964 IBM 360 La tercera generacin de computadoras comenz en el 1964 con la introduccin de la IBM 360, la computadora que fue la pionera para el uso de circuitos integrados en un chip. En ese mismo ao, los cientficos de computadora desarrollaron circuitos integrados diminutos e instalaron cientos de estos transistores en un solo chip de silicn, el cual era tan pequeo como la punta de un dedo
1965 PDP-8
La Digital Equipment Corporation (DEC) introduce la primera minicomputadora, conocida como la PDP-8. 1968 Alan Shugart Alan Shugard en IBM demuestra el primer uso regular del Disco flexible de 8-pulgadas (disco de almacenaje magntico). Cuarta Generacin de Computadoras 1968 Gilbert Hyatt El desarrollo de la tecnologa de microprocesadores result en la cuarta generacin. El el 1968, Gilbert Hyatt diseo una computadora que tena la capacidad de instalar un microchip de silicn del tamao de una ua de dedo. Hayatt quera que el mundo lo reconociera como el inventor que revolucion la computadora. Despus de veinte aos de batallas legales, la oficina de patentes y marcas en Estados Unidos Continentales le otorg a Hyatt la patente No. 4,942.516 por un Single Chip integrated Circuit Computer Architecture. 1971 Dr. Ted Hoff En el 1971, el Dr, Ted Hoff, conjuntamente con un grupo de individuos trabajando en Intel Corporation, desarrollaron un microprocesador o un chip de computadora microprogramable, conocido con el nombre de Intel 4004. Tal chip solo estaba destinado para calculadoras, puesto careca de la potencia necesaria para que pudiera trabajar en una computadora. 1975 la Altair Tres aos ms tarde, ellos presentaron en el mercado la versin 8080, la cual era capaz de correr la unidad de procesamiento de una computadora. En el 1974, Radio Electronics public un artculo sobre la construccin de una computadora casera que usaba esta tecnologa. Subsecuentemente, la revista Popular Electronics escribio una seccin sobre Altair, una computadora que tena el chip 8080. La Altair, nombrada as por un episodio de Star Trek, fue introducida por MITS, Inc. Fue vendida en combo por menos de $400.00. Aunque inicialmente no contaba con teclado, monitor, sin una memoria permanente y sin programas, fueron tomadas 4,000 rdenes dentro de los primeros tres meses. 1976 Steve Wozniak and Steve Jobs Las computadoras Apple hicieron su aparicin durante la dcada de los 1970. En el 1976, Steve Wozniak y Steve Jobs construyern la primera computadora de Apple. Este do suministraban gratuitamente programas para sus mquinas, adquiriendo un xito mdico. Con la ayuda de profesionales en este campo, en el 1977 presentaron una nueva versin mejorada de su mquina de Apple, llamada la Apple II. Este sistema de computadora fue el primero en su clase en ser aceptado por usuarios comerciantes, puesto contaba con la simulacin de una hoja de clculo llamada VisiCalc. Era una computadora de scritorio compacta con 4K de memoria, con precios de $1,298 y una velocida del reloj de 1.0. 1980 IBM PC La corporacin de IBM entr en el mercado de las computadoras personales, lanzando la IBM PC. Esta computadora fue un xito rotundo y se convirti en un best seller. Debido al xito de la entrada de la IBM en el mercado de microcomputadoras tipo PC, otras corporaciones de computadoras decidieron capitalizar tal popularidad al desarrollar sus 6
propios clones. Estas computadoras personales contaban con muchas de los mismos rasgos de las mquinas IBM y eran capaces de correr los mismos programas. Se hizo realidad el uso diseminado de computadoras personales. Quinta Generacin de Computadoras En la quinta generacin, surgieron computadoras con chips de alta velocidad. 1991 Toushstone Delta Supercomputer En el 1991, Cal Tech hizo pblico su Touchstone Delta Supercomputer, la cual ejecutaba 8.6 billones de clculos por segundo. Al presente, existen computadoras que pueden llevar a cabo miles de operaciones simultneamente y la frecuencia de la ejecucin de estas mquinas se miden en teraflops. Un teraflop es equivalente a la ejecucin de 1 trilln de operaciones de puntos flotantes por segundo. AO 3000 A.C 1642 1647 1694 1790 1812 NOMBRE Abaco CREADOR Babilonicos CARACTERISTICA
Realiza clculos matemticos rudimentarios Pascalina Blaise Pascal Suma y resta a base de engranes y ruedas numeradas de 0 a 9 Huesoso de John Naiper Manipulacion de grandes Naiper nmeros.Trabaja a base de logaritmos Stepped Gotlfried W. Von Dividia y multiplicaba por medio de sumas Reckoner Leibniz y restas repetitivas. Telar de Joseph M. Tarjetas perforadas para encontrar el Jacqard Jacqard entrelazado de los hilos en un telar Motor Charles Babbage Desarrollaba ecuaciones diferenciales a diferencial base de 2 tarjetas perforadas en donde guardaba datos y para despus reutilizarlos Motor Augusta Ada Corrigio errores de Babbage.Considerada Analitico Bryon la primera programadora Algebra de George Boole Fundaamental para el diseo y desarrollo Boole de las computadoras. IBM Herman Hollerit Perforadora,lectora y tabuladora de tarjetas con el fin de facilitar censos
Computadora moderna AO 1939 CARACTERISTICA Circuitos lgicos binarios y memoria regenerativa 1946 ENIAC John Mauchly y Trabaja con el sistema decimal J.Presper Eckert 1946 EDVAC John Von Almacena informacin en memoria de la Newman misma menara que los datos 1947 MARK 1 Howar Aiken 551 pies de largo,8 de alto,2 de ancho y 5 toneladas de peso Generaciones de las computadoras 7 NOMBRE ABC CREADOR John Atanasoff
CUADRO COMPARATIVO PRIMERA SEGUNDA GENERACION GENERACION *Contiene un *Se cambian tubos decimal con 10 de vacio por dgitos a cada anillo transistores de 10 tubos *Introduce la *Invento ENIAAC palabra a 32 bits por con 140Kw y 18000 ciclos menores de tubos 30 segundos *Se desarrollo la maquina Von Newman como un programa de almacenamiento
*2 procesos *Mayor capacidad de fundamentales memoria a) Puerta: Funcin lgica booleana *El sistema operativo interacta mas con el b)Celda de memoria usuario *Tiene un respaldo binaria de instrucciones usado como buffer *El sistema 360 fuel la primera familia de computadoras
Computadoras de 16 bits (1970) -Longitud de palabra de 16 bits permite un conjunto de instrucciones de maquina valioso y un campo de direccionamiento relativamente grande. Esto proporciona uan maquina mas potente que puede usarse en una amplia variedad de aplicaciones. -Eficiente para el almacenamiento y la manipulacin de texto. Aplicaciones de negocios, como cientficos. -Sistema multiusuario o compartido (ms usuarios en forma simultnea y maneja ms dispositivos y memorias ms grandes) -Repertorio de instrucciones (limitado nmero de cdigos de operacin) -Aritmtica de precisin ms alto -Rango de direcciones(direccionamiento limitado por el nmero de bits mximo de 64 K direcciones nicas) *Mainframes Soportan grandes bases de datos Almacn central de datos que se pueden manejar y controlar de manera central *Supercomputadoras Resuelven problemas matemticos reales Alta precisin. Realizaen forma repetitiva operaciones de punto flotante Calculo numrico que involucra arreglos Funciones cientficas o de ingeniera.
UNIDAD II
9
Hay un conjunto pequeo de componentes lgicos bsicos, que pueden combinarse de formas diferentes para almacenar datos binarios y realizar las operaciones aritmticas y lgicas con esos datos. Si se desea realizar un clculo concreto, es posible utilizar una configuracin de componentes lgicos diseada especficamente para dicho clculo. Se puede pensar en el proceso de conexin de los diversos componentes para obtener la configuracin deseada, como si se tratase de una forma de programacin. El programa resultante es hardware y se denomina programa cableado hardwired program. Con el hardware de uso general, el sistema acepta datos y seales de control, y produce resultados. As en lugar de reconfigurar el hardware para cada nuevo programa, el programador simplemente necesita proporcionar un nuevo conjunto de seales de control. Cmo se suministran las seales de control? La respuesta es simple, pero ingeniosa. El programa es realmente una secuencia de pasos. En cada paso, se realiza una operacin aritmtica o lgica con ciertos datos. Para cada paso, se necesita un nuevo conjunto de seales de control. Programar es ahora mucho ms fcil. En lugar de tener que reconfigurar el hardware para cada programa, todo lo que se necesita es proporcionar una nueva secuencia de cdigos, a este nuevo mtodo de programacin, una secuencia de cdigos o instrucciones se denomina software. Dos componentes esenciales del sistema: un intrprete de instrucciones y un mdulo de uso general para las funciones aritmticas y lgicas. Estos dos elementos constituyen la CPU. Se requieren varios componentes adicionales para que el computador pueda funcionar. Los datos y las instrucciones deben introducirse en el sistema. Para eso se 10
necesita algn tipo de mdulo de entrada. Este mdulo contiene los componentes bsicos para captar datos e instrucciones en cierto formato y traducirlos al formato de seales que utiliza el sistema. Se necesita un medio para proporcionar los resultados, el mdulo de salida. Globalmente estos mdulos se conocen con el nombre de componentes de E/S (entrada/salida). Se necesita un componente ms. Un dispositivo de entrada proporcionar los datos y las instrucciones secuencialmente, uno tras otro. Pero un programa no siempre ejecuta las instrucciones segn la misma secuencia: puede saltarse ciertas instrucciones. Por ello. debe existir un sitio para almacenar temporalmente, tanto las instrucciones como los datos. Ese modulo se llama memoria, o memoria principal para distinguirlo de los perifricos y la memoria externa. Von Neumann indic que la misma memoria podra ser usada tanto para las instrucciones como para los datos. La CPU se encarga del control intercambia datos con la memoria. Para ello, usualmente utiliza dos registros internos (en la CPU). un registro de direcciones de memoria (MAR. Memory Address Register), que especifica la direccin en memoria de la prxima lectura o escritura, y un registro para datos de memoria (MBR, Memory Buffer Register),que contiene el dato que se va a escribir en memoria o donde se escribe el dato que se va a leer de memoria, igualmente, un registro de direcciones de E/S (E/SAR. E/S Address Register) especifica un dispositivo de E/S. Un registro para datos de E/S (E/S BR. Buffer Register) se utiliza para intercambiar datos entre un mdulo de E/S y la CPU. Un mdulo de memoria consta de un conjunto de posiciones, designadas por direcciones numeradas secuencialmente. Cada posicin contiene un nmero binario que puede ser interpretado como una instruccin o como un dato. Un mdulo de E/S transfiere datos desde los dispositivos externos a la CPU y a la memoria, y viceversa. Contiene los registros (buffers) internos para almacenar los datos temporalmente, basta que puedan enviarse. 2.1.1 MEMORIA INTERNA Y EXTERNA Cuando hablamos de memoria interna nos referimos generalmente a la memoria principal, pero no debemos olvidar que existen otras, el procesador necesita su memoria propia (registros del procesador) y la unidad de control puede llegar a necesitar memoria propia. Cundo decimos memoria externa, nos vamos a estar refiriendo a dispositivos perifricos a los cuales se accede a travs de algn controlador de E/S (discos rgidos, lectoras de CD/DVD, pen-drivers, cintas, etc.). Memoria Interna Capacidad: Las memorias internas son las ms pequeas y se miden en bytes o palabras, siendo las longitudes ms comunes para las palabras las de 8, 16 y 32 bits, las memorias externas son mayores y se suelen medir en trminos de bytes(Kbyte, Mbyte, Tbyte, etc.). Unidad de transferencia: En general la unidad de transferencia es igual al nmero de lneas de entrada/salida de datos que posee el mdulo de memoria, en general coincide a la longitud de palabra del mdulo de memoria, por lo general. Palabra: Es la unidad natural en que est organizada la memoria, suele coincidir con el nmero de bits utilizados para representar los nmeros y con la longitud de las instrucciones, pero como siempre hay excepciones.
11
Unidades direccionables: En muchos sistemas la unidad direccionable es la palabra, pero en algunos casos se puede direccionar de a nivel de byte, y no nos olvidemos que las unidades direccionables estn directamente relacionadas con la anchura del bus de direcciones.Para la memoria externa las unidades son ms grandes y se las llaman bloques. Mtodos de acceso Esta otra clarificacin que podemos hacer vara segn la forma de acceder al dato. Acceso secuencial: Los datos se organizan en unidades llamadas registros, el acceso se logra mediante un acceso lineal especfico. Adems de los datos se agrega informacin que permite distinguir donde comienza un registro y comienza otro y permite la escritura/lectura de los datos. La forma de acceder como su nombre lo indica es secuencial, teniendo que pasar por todos los registros intermedios, anteriores al que deseamos acceder, hasta llegar al registro deseado. El tiempo de acceso es variable dependiendo de la ubicacin del registro deseado. Un ejemplo de este tipo de acceso son las cintas magnticas. Acceso directo: Cada unidad de informacin en que est dividida la unidad tiene una direccin nica basada en su ubicacin fsica. El acceso es directo, pero no al dato especifico, sino a toda la vecindad, luego dentro de la vecindad se hace un acceso secuencial contando o esperando alcanzar la posicin final. El tiempo de acceso es variable. Un ejemplo de esto son los discos magnticos. Acceso aleatorio: Cada posicin de memoria direccionable tiene un acceso directo para acceder, cableado fsicamente. El tiempo de acceso a cada posicin es constante y no depende de accesos anteriores. Un ejemplo de este tipo de acceso es la memoria principal y algunos sistemas de cache. Acceso asociativo: Se compara una parte de la direccin a buscar contra una parte de las palabras almacenadas en este tipo de memoria, dichas palabras adems de los datos contienen informacin para identificar a que posicin corresponden. La comparacin se hace en paralelo con todas las palabras almacenadas en la memoria. Cada palabra de memoria tiene un acceso directo para acceder, cableado fsicamente. El tiempo de acceso es constante y no depende de accesos anteriores. Un ejemplo de este tipo de acceso son algunos sistemas de cache. Tiempo de acceso: es el tiempo en que se tarda en la operacin de lectura o escritura. En memorias de acceso de acceso aleatorio es el tiempo entre que se pone la direccin en el bus y el momento en que el dato ha sido guardado (escritura) o el dato se encuentra disponible (lectura). Para memorias de otro tipo de acceso, el tiempo de acceso es el tiempo que se tarda en ubicar el mecanismo de lectura/escritura en la posicin deseada. Tiempo de ciclo de memoria: Es el tiempo necesario que se requiere para realizar la segunda lectura luego de haber realizado la primera. Generalmente este trmino se usa con las memorias de tipo aleatorio, y es requerido para que finalicen las transacciones en las lneas de controlo para regenerar los datos si se trata de lecturas destructivas. Velocidad de transferencia: Es la velocidad a la cual se pueden transmitir datos desde o hacia memoria, para memorias de tiempo aleatorio esto equivale a la inversa del tiempo de ciclo, para los otros tipos de memoria se utiliza la siguiente relacin: Estas 3 ltimas caractersticas de la memoria son las ms importantes desde el punto de vista del usuario junto a la capacidad. La memoria de una computadora consiste en un conjunto de registros numerados (direccionados) en forma consecutiva, cada uno de los cuales normal mente almacena un 12
byte de informacin. Un byte es un conjunto de ocho bits. Cada registro tiene una direccin, a la que se suele designar como locacin de memoria. La memoria interna suele identificarse con la memoria principal. Sin embargo, hay adems otras formas de memoria interna.
La memoria de una computadora digital convencional se encuentra organizada bajo un criterio jerrquico. En la cima de la jerarqua se encuentran los registros, de velocidad similar a la de la unidad de proceso, pero grandes y consumidores de una importante cantidad de energa de alimentacin. En un procesador se encuentran habitualmente unos pocos registros, del orden de algunos cientos o menos. Al fondo de la jerarqua aparecen las memorias secundarias y los elementos de almacenamiento, como los discos magnticos rgidos y las cintas magnticas, en los que el costo por bit almacenado es bajo en trminos monetarios y de energa consumida, pero cuyo tiempo de acceso es muy alto comparado con el de los registros. Entre los registros y los elementos de almacenamiento secundario se ubican otros tipos de memorias que tienden a salvar la brecha entre ambos extremos. A medida que se recorre la estructura jerrquica, se obtiene una mayor eficiencia a cambio de un mayor costo. Este gran desajuste influye fuertemente sobre la forma en que el sistema operativo debe manejar la transferencia de bloques de datos entre discos y memoria principal. Memoria Principal 13
La memoria ms comn es la denominada memoria de acceso aleatorio (RAM RandomAccess Memory). Este es por supuesto, un mal uso del trmino, ya que todas las memorias listadas en la tabla son de acceso aleatorio Una caracterstica distintiva de las RAM es que es posible, tanto leer datos, como escribir rpidamente nuevos datos en ellas. Tanto la lectura como la escritura se ejecutan mediante seales elctricas. La otra caracterstica distintiva de una RAM es que es voltil. Una RAM debe estar continuamente alimentada. Si se interrumpe la alimentacin, se pierden los datos As pues, las RAM pueden utilizarse slo como almacenamiento temporal. Las tecnologas de RAM se dividen en dos variantes: estticas y dinmicas. Una RAM dinmica est hecha con celdas, que almacenan los datos como cargas en condensadores. La presencia o ausencia de carga en un condensador se interpreta como el 1 o el 0 binarios. Ya que los condensadores tienen una tendencia natural a descargarse, las RAM dinmicas re quieren frescos peridicos para mantener memorizados los datos. En una RAM esttica, los valores binarios se almacenan utilizando configuraciones de puertas que forman biestables. TIPO MEMORIA DE CLASE BORRADO MECANISMO DE VOLATILIDAD ESCRITURA Voltil
Memoria do acceso Memoria de Elctricamente Elctricamente aleatorio (RAM) lectura/escritura por bytes Memoria de solo lectura (ROM) Mediante mscaras
Memoria de No posible ROM programable slo lectura (PROM) PROM (EPROM) borrable Memoria sobretodolectura de Luz ultravioleta, chip completo
No voltil Elctricamente
Memoria externa Dentro de esta categora el medio ms importante es el disco magntico, este medio es la base de las memorias externas en casi todos los equipos. Un disco magntico es un disco circular, cubierto por un material magnetizable. Por medio de una bobina, se puede cambiar la polarizacin se distintas porciones de su superficie, para luego poder leer en qu estado se encuentra cada una de esas porciones. El cabezal es un pequeo dispositivo que es capaz de leer la superficie del disco que pasa debajo de ella, por dicha forma de lectura la superficie del disco est organizada en pistas o tracks concntricos alrededor del eje central. Entre pista y pista hay un espacio que las separa, esto sirve para prevenir interferencias del campo magntico entre pista y pista, como tambin para prevenir o disminuir errores debido a pequeos 14
desalineamientos del cabezal. Todas las pistas contienen la misma cantidad de bits, (casi siempre), esto provoca que cada pista tenga una densidad distinta de datos. Partiendo de la pista ms cercana al eje central, a medida que pasamos a la siguiente pista, la superficie por pista es mayor, pero la cantidad de bits es la misma, esto provoca las distintas densidades. Normalmente los datos se transfieren desde y hacia el disco en unidades de datos llamadas bloques, las pistas se dividen es secciones ms pequeas llamadas sectores que poseen el tamao de un bloque o pueden ser variables. Para ayudar a evitar interferencias entre bloque y bloque, estos se encuentran separados por un espacio vaco llamado intersector o gap. Cada sector adems de la informacin til al usuario posee un campo que lo identifica unvocamente en el disco o conjunto de discos. El byte synch es un patrn de bits especial que identifica el comienzo de un campo, los que le siguen identifican el track, la cabeza. Existen dos tipos de cabeza de lectura/escritura, mvil o fija. En la fija existe una cabeza de lectura/escritura esttica por pista, en cambio con cabeza mvil existe un brazo con un cabezal en el extremo, donde dicho brazo se mueve, trasladando el cabezal de pista en pista. En general ambas caras del disco es magnetizable, y suele haber ms de un disco en cada unidad. Siguiendo con la organizacin del disco, un trmino cilindro es muy utilizado, este trmino se refiere al conjunto de pistas con la misma ubicacin. Otra clasificacin de los discos posibles, es segn la posicin de la cabeza de lectura/escritura respecto al plato. En un extremo tenemos cabezas que estn permanentemente en contacto directo con la superficie del plato, este el caso de los disquetes, en el otro extremo, estn las cabezas que mantienen una distancia fija con respecto a la superficie del disco. En un disco magntico lo ptimo sera una cabeza de lectura/escritura lo ms estrecha posible, para lograr pistas ms estrechas, tener mayor cantidad de pistas por plato y as lograr mayor capacidad. Cuanto ms estrecha la cabeza, esta se tiene que ubicar ms prxima a la superficie del plato, tarea que implica riesgos a impurezas e imperfecciones sobre la superficie del plato. A consecuencia de esta limitacin, se desarrollaron cabezales que se sitan a una distancia variable de la superficie. Las cabezas estn encapsuladas hermticamente, montadas sobre un soporte aerodinmico. Con el disco detenido estas cabezas reposan suavemente sobre la superficie, cuanto el disco empieza a girar, la presin de aire generada por la rotacin sobre el soporte de la cabeza, hace que esta se separe de la superficie del plato, logrando una mnima distancia. Esta implementacin de los cabezales l lo que se implementa actualmente en los discos rgidos. Parmetros para medir prestaciones en los discos: Un disco funcionando rota a una velocidad constante, cuando el sistema trata de acceder a una posicin del disco, el tiempo de acceso depende de varios factores: Tiempo de bsqueda: Es el tiempo que requiere el dispositivo en mover el brazo para posicionar el cabezal sobre la pista deseada, esto en un sistema de cabezas mviles, en un sistema de cabezas fijas el tiempo de bsqueda se refiere al tiempo que se requiere en seleccionar electrnicamente la cabeza correspondiente a la pista solicitada.
15
Retardo rotacional: Es el tiempo que se requiere para que el disco rote y el sector requerido pase por debajo del cabezal, tambin se lo denomina latencia rotacional. A la suma de estos tiempos se la denomina tiempo de acceso. Una vez alcanzado el dato requerido hay que sumarle el tiempo que se requiere para transferir estos datos, esto depende en su mayor parte de la capacidad del bus de datos. Adems hay que tener en cuenta si otro dispositivo esta para ser atendido antes que el disco, o si hay ms de un disco, y se compite por el canal de E/S. RAID Redundant Array of Independent Disk, conjunto redundante de discos independientes. Debido a que se ha llegado a un determinado lmite con respecto a la optimizacin en el rendimiento de un disco magntico, una opcin ampliamente usada para mejorar la performance en el uso de estos es la utilizacin de varios dispositivos, permitiendo poder atender varias peticiones de entrada -salida en paralelo, como tambin permitiendo atender una nica peticin que requiere acceder varias unidades en paralelo, incrementando as la performance. Otro punto que incluye el RAID es anexado de informacin redundante en los discos para permitir la recuperacin de datos en caso de que falle algn disco. Existen una variada forma de guardar la informacin y los datos redundantes, por lo cual existen distintos niveles, pese a esto todos estos niveles comparten las siguientes caractersticas: El conjunto de discos es visto por el sistema operativo como una nica unidad lgica. Los datos son distribuidos entre el conjunto de unidades fsicas. La capacidad de los discos redundantes es utilizada para almacenar datos de paridad que permitirn recuperar la informacin en caso de un fallo un una unidad fsica. Las distintas combinaciones de los dos ltimos puntos determina el nivel de RAID. El nivel cero no soporta el tercer punto.
16
Los elementos esenciales de una instruccin de computador son: el cdigo de operacin, que especifica una operacin a realizar, las referencias a operandos fuente y destino, que especifican la ubicacin de las entradas y salidas para la operacin: y la referencia a la siguiente instruccin que usualmente est implcita. Los cdigos de operacin especifican las operaciones dentro de una de las siguientes categoras: operaciones aritmticas y lgicas: transferencia de datos entre dos registros, entre registros y memoria o entre dos posiciones de memoria; entrada/salida (E/S); y control. Las referencias a operandos especificar registros o posiciones de memoria de datos operandos. Los datos pueden ser de diversos tipos: direcciones, nmeros, caracteres o datos lgicos. Una caracterstica arquitectural comn de los procesadores es la utilizacin de una pila, que puede estar visible o no al programador. Las pilas se emplean para gestionar las llamadas y retornos de procedimientos, y pueden contemplarse como una forma alternativa de direccionar memoria. Las operaciones bsicas con la pila son PUSH (introducir), POP (extraer), y operaciones con una o dos posiciones de la cabecera de la pila Las pilas normalmente se implementan de manera que crecen de las direcciones ms altas hacia las ms bajas. Los procesadores pueden clasificarse como big-endian, little-endian, y bi-endian. Un dato numrico multi-byte que se almacena con el byte ms significativo en la direccin numrica ms baja, se memoriza en la forma big-endian; si se memoriza con el byte ms significativo en la direccin ms alta, lo hace en la forma little-endian. Un procesador biendian puede manejar ambos estilos de memorizacin. El funcionamiento de la CPU est determinado por las instrucciones que ejecuta. Estas instrucciones se denominan instrucciones mquina o instrucciones del computador. Al conjunto de instrucciones distintas que puede ejecutar la CPU se le denomina repertorio de instrucciones de la CPU. Elementos de una instruccin mquina Cada instruccin debe contener la informacin que necesita la CPU para su ejecucin. Elementos para la ejecucin de una instruccin son: Cdigo de operacin: Especifica la operacin a realizar (suma, E/S. etc.). La operacin se indica mediante un cdigo binario, denominado cdigo de operacin o. abreviadamente. codop. Referencia a operandos fuente: La operacin puede implicar a uno o ms operandos fuente, es decir, operandos que son entradas para la instruccin. Referencia al operando resultado: La operacin puede producir un resultado.
Referencia a la siguiente instruccin: Dice a la CPU de dnde captar la siguiere instruccin tras completarse la ejecucin de la instruccin actual. La siguiente instruccin a captar est en memoria principal o en el caso de un sistema de memoria virtual, bien en memoria principal o en memoria secundaria (disco). En la mayora de los casos, la siguiente instruccin a captar sigue inmediatamente a la instruccin en ejecucin. En tales casos no hay referencia explcita a la siguiente 17
instruccin. Cuando sea necesaria una referencia explcita, debe suministrarse la direccin de memoria principal o de memoria virtual. Los operandos Fuente y resultado pueden estar en alguna de las siguientes reas. Memoria principal o virtual: Como en las referencias a instrucciones siguientes, debe indicarse la direccin de memoria principal o de memoria virtual. Registro de la CPU: salvo raras excepciones una CPU contiene uno o ms registros que pueden ser referenciados por instrucciones mquina. Si slo existe un registro. la referencia a l puede ser implcita. Si existe ms de uno. cada registro tendr asignado un nmero nico, y la instruccin debe contener el nmero del registro deseado. Dispositivo de E/S: La instruccin debe especificar el mdulo y dispositivo de E/S para la operacin. En el caso de E/S asignadas en memoria. se dar otra direccin de memoria principal o virtual.
Un procesador incluye registros visibles para el usuario y registros de control/estado. Los primeros pueden referenciarse, implcita o explcitamente, en las instrucciones mquina. Los registros visibles para el usuario pueden ser de uso general, o tener una utilidad especial, tal como almacenamiento de nmeros en coma fija o coma flotante, direcciones, ndices o punteros de segmento. Los registros de control y de estado se usan para controlar el funcionamiento de la CPU. Un ejemplo obvio es el contador de programa. Otro ejemplo importante es la palabra de estado del programa (PSW. program status word), que contiene diversos bits de estado y condicin. stos incluyen bits para reflejar el resultado de la operacin aritmtica ms reciente, bits de habilitacin de interrupciones y un indicador de si la CPU funciona en modo supervisor o usuario. Los procesadores utilizan la segmentacin de instrucciones para acelerar la ejecucin. Fundamentalmente, la segmentacin de cauce supone dividir el ciclo de instruccin en varias etapas separadas que operan secuencialmente, tales como captacin de instruccin, decodificacin de instruccin, y escritura del operando resultado. Las instrucciones se mueven a travs de estas etapas como en una cadena de montaje, de modo que, en principio, cada etapa puede estar trabajando en una instruccin diferente al mismo tiempo. La existencia de saltos y dependencias entre instrucciones complica el diseo y el uso de los cauces segmentados.
genera una orden de E/S y despus contina ejecutndose hasta que el hardware de E/S lo interrumpe para indicar que la operacin de E/S ha concluido; y acceso directo a memoria (DMA, Direct Memory Access), en el que un procesador de E/S especfico toma el control de la operacin de E/S para transferir un gran bloque de datos. Dos ejemplos importantes de interfaces de E/S externas son SCSI y FireWire. SCSI es una interfaz paralela para dispositivos externos, mientras que la nueva FireWire es una interfaz en serie de alta velocidad. Las operaciones de E/S se realizan a travs de una amplia gama de dispositivos, que proporcionan una forma de intercambiar datos entre el exterior y el computador. Un dispositivo externo se conecta al computador mediante un enlace a un mdulo de E/S. El enlace se utiliza para intercambiar seales de control, estado y datos entre el mdulo de E/S y el dispositivo externo. Un dispositivo externo conectado a un mdulo de E/S frecuentemente se denomina dispositivo perifrico o, simplemente, perifrico. En sentido amplio, los dispositivos externos se pueden clasificar en tres categoras: De interaccin con humanos: permiten la comunicacin con el usuario del computador. De interaccin con mquinas; permiten la comunicacin con elementos del equipo. De comunicacin: permiten la comunicacin con dispositivos remotos. Ejemplos de dispositivos de interaccin con humanos son los terminales de video (VDT, Video Display Terminals) y las impresoras. Ejemplos de dispositivos de interaccin con mquinas son los discos magnticos y los sistemas de cinta, y los sensores y actuadores, tales como los que se usan en aplicaciones de robtica. Obsrvese que los discos y los sistemas de cinta se estn considerando como dispositivos de E/S. Desde el punto de vista de su funcin, estos dispositivos son parte de la jerarqua de memoria. Desde un punto de vista estructural, estos dispositivos se controlan mediante mdulos de E/S. Los dispositivos de comunicacin permiten que el computador intercambie datos con un dispositivo remoto, que puede ser un dispositivo de interaccin con humanos, como por ejemplo un terminal, un dispositivo de interaccin con mquinas o. incluso, otro computador. La conexin con el mdulo de E/S se realiza a travs de seriales de control, estado, y datos. Los datos se intercambian en forma de un conjunto de bits que son enviados a, o recibidos desde el modulo E/S. TECLADO/MONITOR La forma ms comn de interaccin computador/usuario se produce a travs de la combinacin teclado/monitor. El usuario proporciona la entrada a travs del teclado. A continuacin esta entrada se transmite al computador y puede verse en el monitor Adems, el monitor muestra los datos que proporciona el computador. La unidad bsica de intercambio es el carcter. Asociado con cada carcter hay un cdigo. Usualmente de 7 o 3 bits de longitud. El cdigo ms comnmente usado es un cdigo de 7 bits, conocido como ASCII (American Standard Code for Information Interchangc) en los Estados Unidos de Amrica, e internacionalmente como Alfabeto de Referencia Internacional ITU-T. Cada carcter de este cdigo se representa mediante un nico nmero binario de 7 bits; en consecuencia, se pueden representar 128 caracteres1. Los caracteres son de dos tipos: imprimibles y de control Los caracteres imprimibles son alfabticos, numricos, y especiales (estos ltimos pueden imprimirse en papel o visualizarse en una pantalla). Algunos de los caracteres de control se utilizan para controlar la impresora o la visualizacin de los caracteres; un ejemplo es el retorno de 19
carro. Otros caracteres de control estn relacionados con los procedimientos de comunicacin. Para la entrada desde teclado, cuando el usuario pulsa una tecla se genera una seal electrnica, interpretada por el transductor del teclado, que la traduce al patrn binario del correspondiente cdigo ASCII. Entonces, este patrn binario se transmite al mdulo de E/S del computador. En el computador el texto se puede almacenar utilizando el mismo cdigo ASCII. En la salida, los cdigos ASCJI se transmiten al dispositivo externo desde el mdulo de E/S. El transductor del dispositivo interpreta este cdigo y enva las seales electrnicas precisas para que muestre en pantalla el carcter indicado o realice la funcin de control solicitada.
Bus de control: Estas lneas son utilizadas para controlar el uso del bus de control y del bus de datos. Se transmiten rdenes y seales de temporizacin las rdenes son muy diversas las ms comunes son: Escritura en memoria. Lectura de memoria. Escritura de E/S. Lectura de E/S. Transferencia reconocida. Peticin del bus. Cesin del bus. Peticin de interrupcin. Interrupcin reconocida. Seal de reloj. Inicio. Las seales de temporizacin indican la validez de los datos que estn en el bus en un momento dado.
Todo elemento que est conectado al bus tiene que saber reconocer si la direccin que est en el bus de datos le corresponde, tiene que reconocer algunas ordenes transmitidas por el bus de control, y puede emitir algn tipo de seal por el bus de control (seal de interrupcin, seal de reconocimiento de alguna peticin, etc.). En general, cuanto ms dispositivos conectamos al bus, disminuye el rendimiento del sistema; las causantes de esto son varias, pero las ms importantes son el tiempo de sincronizacin que se necesita para coordinar el uso del bus entre todos los dispositivos, y que el bus tiene una capacidad mxima, la cual puede llegar a convertirse en un cuello de botella del sistema. Una de las formas de tratar este problema es implementando jerarqua de buses. Jerarqua de buses: Para mejorar el rendimiento del bus, las jerarquas de buses fueron implementadas cada vez ms, una primera aproximacin a una jerarqua de bus bsica seria la siguiente: Primero tenemos un bus local, de alta velocidad que conecta el procesador a la cache, el controlador de la cache tambin puede acceder al bus del sistema, con esta implementacin, la mayor parte de los datos a los que va a acceder el procesador, que estn en la cache, sern entregados a una alta velocidad, otro punto a destacar de esta 21
parte es que los accesos a memoria por parte de la cache no van a interrumpir el flujo de datos entre procesador y cache. Tambin se ve la posibilidad de conectar un dispositivo de entrada salida al bus local. Luego tenemos el bus del sistema, al cual est conectada la memoria y por debajo el bus de expansin, al cual se pueden conectar una amplia diversidad de dispositivos, entre el bus del sistema y el bus de expansin se encuentra una interface, que entre las principales tareas est la de adaptar las velocidades de transmisin, por ejemplo para un dispositivo muy lento conectado al bus de expansin la interface podra acumular una cierta cantidad de datos y luego transmitirla a travs del bus del sistema. El hecho de que cada vez ms salgan al mercado dispositivos que requieren ms velocidad de transmisin en los buses, hizo que los fabricantes implementaran los buses de alta velocidad, el cual est muy estrechamente ligado al bus local, solo hay un adaptador que los une debajo de este bus tenemos el bus de expansin, ms lento conectado mediante otro adaptador. Existen varios parmetros y elementos en los buses con los cuales podemos clasificarlos. Tipos de buses: Una clarificacin que podemos hacer es segn la funcionalidad de este, los podramos dividir en dedicados o multiplexados. Un ejemplo comn de dedicados serian el bus de datos y el bus de direcciones, cada uno se utiliza solo para una funcin especfica. Esta situacin de bus de datos y de direcciones dedicados es lo ms comn, pero podra llegar a implementarse con un solo bus multiplexado el tiempo. Esto funcionaria a grandes rasgos de la siguiente forma: Al comienzo de la transferencia se sita en el bus la direccin de donde se quiere leer o a donde se desea escribir, luego se emite por el bus de datos una seal indicando que en el bus se encuentra una direccin valida. A partir de ese momento se dispone de una unidad de tiempo para que los dispositivos identifiquen si es su direccin, luego de esto se pone en el mismo bus los datos y se realiza la transferencia en el sentido que lo indique una orden emitida por el bus de control. Ventaja de este mtodo es la reduccin de la cantidad de lneas, lo cual ahorra espacio y costos, la desventaja son que para poder implementar es forma de operar la circuitera en cada mdulo tiene que ser ms compleja, y que el rendimiento del sistema ser menor por no poder transmitir los datos simultneamente, en paralelo (datos y direccin). Otro tipo de clarificacin podra ser segn su dedicacin fsica: Podramos poner como ejemplo el bus de E/S, el cual se encarga de conectar solo los dispositivos de E/S, este bus se conecta al bus principal mediante algn adaptador, la ventaja est en que al ser dedicado solo a E/S, el rendimiento de este va a ser mejor, ya que solo van a operar con el los mdulos de E/S, y no va a haber tanta competencia por el bus, este ejemplo lo voy a explicar ms detalladamente cuando llegue a la parte de E/S. Mtodo de arbitraje: Por la razn de que en un momento dado solo puede usar el bus un solo dispositivo, debe existir un mtodo para decidir quien hace uso de l. Todos los mtodos que existen en general pueden ser clasificados en 2 grandes grupos: Arbitraje centralizado: Una parte del hardware del sistema denominada controlador del bus se encarga de decidir el uso del bus en cada momento, este dispositivo puede ser un mdulo separado o puede estar incorporado al procesador.
22
Arbitraje distribuido: En este esquema no existe un controlador centralizado, en su lugar, cada dispositivo que hace uso del bus tiene que tener incorporada la lgica necesaria para poder interactuar con los dems dispositivos y decidir quien hace uso del bus. En cualquiera de los dos casos lo que se busca es que se decida quin va a tener la posesin del bus en un momento dado, procesador, mdulo de E/S o memoria, al cual se lo denomina maestro del bus, el maestro del bus establecer una comunicacin con otro dispositivo (lectura o escritura) al cual se lo denominara esclavo. Temporizacin: La temporizacin clasifica al mtodo utilizado para coordinar los eventos dentro del bus. Segn la temporizacin usada podemos clasificar los buses en 2 grupos. Temporizacin sncrona: Todos los eventos del bus se rigen a travs del reloj del computador. Una de las lneas del bus transmite continuamente una seal de reloj, simplemente una secuencia de unos y ceros, la cual puede ser leda por todos los dispositivos conectados al bus. Al intervalo transcurrido en la emisin de un uno y un cero se lo llama ciclo de reloj, todos los eventos ocurridos dentro del bus comienzan el principio del ciclo y puede durar uno ms. En este mtodo de temporizacin todos van al ritmo del reloj. Las lneas solo pueden tener uno de dos estados, uno o cero. La velocidad en el ritmo que se alterna de un uno a un cero en la lnea del reloj nos da la velocidad del bus, y como todas las operaciones se van a realizar al ritmo del reloj, al aumentar la velocidad del ciclo vamos a aumentar la velocidad del sistema. Todo con este mtodo de temporizacin empieza o finaliza rigindose de las seales del reloj, en general la mayora de los eventos tiene una duracin de un ciclo. Temporizacin asincrnica: Ac los eventos no se rigen por la lnea del reloj, en general todo evento es disparado por otro evento anterior. El procesador pone en el bus de direcciones la direccin a ser leda y en el bus de control por la lnea correspondiente seal de lectura, luego de un breve tiempo para que las seales elctricas se estabilicen, se manda seal por la lnea MSYN (sincronizacin del maestro) indicando que hay seales validas en el bus de direccin y de control, el modulo correspondiente reconocer su direccin, pone el dato solicitado en el bus de datos y emite una seal (SSYN sincronizacin del esclavo) por la en bus de control indicando en las seales del bus de datos son vlidas(son los datos solicitados) La temporizacin sncrona es ms fcil de implementar y comprobar, pero es menos flexible que la sncrona. Por ejemplo, en el caso de que hubiesen varios dispositivos conectados al bus, de distintas velocidades, todos tienen que funcionar a la velocidad del reloj, si hay uno ms rpido, este tiene que bajar su velocidad: En cambio con el asncrono, cada uno funcionaria a su velocidad, en el mismo bus se trabajara a distintas velocidades, cada transferencia se hara con la velocidad ptima de sus dos partes (maestro-esclavo). Anchura del bus:
23
La anchura del bus ya lo he explicado, es simplemente la cantidad de lneas que posee, y est directamente relacionado con el rendimiento del sistema, cuanto ms ancho el bus de direcciones, mayor va a ser la cantidad de direcciones posibles utilizadas para direccionar memoria y dispositivos de E/S, y cuanto ms ancho el bus de datos, mayor ya a ser la cantidad de bis que se va a poder transmitir en paralelo. Tipo de transferencia de datos: Todos los buses permiten la transferencia de datos, ya sea para escritura como para lectura. Para optimizar el rendimiento existen algunas operaciones combinadas en las cuales se pasa la direccin una sola vez, por ejemplo "lectura-modificacin-escritura", sera la lectura del dato, se le aplica alguna modificacin y luego se escribe nuevamente. Todo esto es una sola operacin, nadie puede acceder al bus en el medio de la operacin, se utiliza para proteger los recursos de memoria compartida en sistemas con multiprogramacin para mantener la integridad de los datos. Otra instruccin es "lectura despus de escritura" que servira para comprobar el resultado. Otra operacin muy comn es la transferencia por bloque, se pasa al principio de la operacin la direccin inicial y luego se realiza lectura o escritura a las siguientes direcciones, la cantidad de direcciones siguientes tambin es un parmetro que hay que pasar.
24
Funciones y objetivos de los sistemas operativos -Acceso a los dispositivos de E/S: cada dispositivo de E/S requiere de un conjunto propio y peculiar de instrucciones de seales de control para su funcionamiento. -Acceso controlado a los archivos: En el caso de los archivos, el control debe incluir una compresin, non solo de la naturaleza de los dispositivos E/S si no del formato de los archivos y del medio de almacenamiento. -Acceso al sistema: En el caso de un sistema compartido o pblico, el sistema operativo controla el acceso al sistema como un todo y a los recursos especficos del sistema. -Deteccin y respuesta de errores: Cuando un sistema informtico est en funcionamiento pueden producirse errores. Entre estos se incluyen los errores internos y externos del hardware, tales como los errores de memoria, fallos o mal funcionamiento de dispositivos y distintitos tipos de errores de software, como el desbordamiento aritmtico el intento de acceder a Una posicin prohibida de memoria y la incapacidad del sistema operativo para satisfacer la solicitud de una aplicacin. -Contabilidad: Un buen sistema operativo debe recoger estadsticas de utilizacin de los Diversos recursos y supervisar los parmetros de rendimiento tales como el tiempo de respuesta. El sistema operativo como administrador de recursos Un computador es un conjunto de recursos para el traslado, almacenamiento y proceso de datos y para el control de estas funciones. El sistema operativo es el responsable de la gestin de estos recursos. El sistema operativo funciona de la misma manera que el software normal de un computador, es decir, es un programa ejecutado por el procesador. El sistema operativo abandona con frecuencia el control y debe depender del procesador para recuperarlo. El sistema operativo es, de hecho, nada ms que un programa del computador. Como otros programas de computador, da instrucciones al procesador. Facilidad de evolucin de un sistema operativo Un sistema operativo importante evolucionar en el tiempo por una serie de razones: Actualizaciones del hardware y nuevos tipos de hardware: Por ejemplo, las primeras versiones de UNIX y OS/2 no empleaban mecanismos de paginacin, porque funcionaban en mquinas sin hardware de paginacin2. Las versiones ms recientes se han modificado para aprovechar las capacidades de paginacin. Adems, el empleo de terminales grficos y terminales de pantalla completa, en lugar de los terminales de lneas, pueden influir en el diseo de los sistemas operativos. Nuevos servicios: Como respuesta a Las demandas del usuario o a las necesidades de los administradores del sistema, el sistema operativo ampliar su oferta de servicios. Correcciones: Desafortunadamente, el sistema operativo tiene fallos que se descubrirn con el curso del tiempo y que es necesario corregir. Por supuesto, estas correcciones pueden introducir nuevos fallos a su vez y as sucesivamente.
2.2.2 PLANIFICACIN
25
Su funcin consiste en repartir el tiempo disponible de un microprocesador entre todos los procesos que estn disponibles para su ejecucin. En un sistema multiprogramado, la memoria principal contiene varios procesos. Cada proceso alterna entre usar el procesador y esperar que se realice una operacin de E/S o que ocurra algn otro suceso. El procesador o los procesadores se mantienen ocupados ejecutando un proceso mientras los dems esperan. La clave de la multiprogramacin est en la planificacin. De hecho, son cuatro las clases de planificacin que entran en juego normalmente. Tipos de Planificacin El afn de la planificacin del procesador consiste en asignar los procesos al procesador o los procesadores para que sean ejecutados en algn momento, de forma que se cumplan objetivos del sistema tales como el tiempo de respuesta, la productividad y la eficiencia del procesador. Planificacin a largo plazo La planificacin a largo plazo determina cules son los programas admitidos en el sistema. De este modo, se controla el grado de multiprogramacin. Una vez admitido, un trabajo o un programa de usuario se convierte en un proceso y es aadido a la cola del planificador a corto plazo. En algunos sistemas, un proceso recin creado comienza en situacin de descargado de la memoria principal, en cuyo caso se aade a la cola del planificador a medio plazo. Se toman bsicamente dos decisiones: Cundo el sistema operativo puede aceptar procesos adicionales? Qu trabajo o trabajos son aceptados? Planificacin a medio plazo La planificacin a medio plazo forma parte de la funcin de intercambio. Generalmente, la decisin de cargar un proceso en memoria principal se basa en la necesidad de controlar el grado de multiprogramacin. En un sistema que no emplee memoria virtual, la gestin de memoria tambin es un punto a tratar. As pues, la decisin de carga en memoria tendr en cuenta las necesidades de memoria del proceso descargado. Planificacin a corto plazo El planificador a largo plazo se ejecuta con relativa poca frecuencia, tomando una primera decisin sobre si tomar o no un nuevo proceso y cul tomar. El planificador a medio plazo se ejecuta con algo ms de frecuencia, para tomar la decisin del intercambio. El planificador a corto plazo, tambin conocido como distribuidor (dispatcher), es el de ejecucin ms frecuente y toma decisiones con un mayor detalle sobre el proceso que se ejecutar a continuacin. El planificador a corto plazo se ejecuta cuando ocurre un suceso que puede conducir a la interrupcin del proceso actual o que ofrece la oportunidad de expulsar de la ejecucin al proceso actual en favor de otro. Como ejemplos de estos sucesos se tienen: Interrupciones del reloj Interrupciones de E/S Llamadas al sistema operativo Seales Algoritmos de Planificacin 26
El sistema operativo puede tomar tres tipos de decisiones de planificacin que afectan a la ejecucin de los procesos. La planificacin a largo plazo determina cundo se admiten nuevos procesos en el sistema. La planificacin a medio plazo forma parte de la funcin de intercambio y determina cundo se lleva parcial o totalmente un proceso a memoria principal para que pueda ser ejecutado. La planificacin a corto plazo determina cul de los procesos listos ser ejecutado a continuacin por el procesador. En el diseo de un planificador a corto plazo se emplean un gran variedad de criterios. Algunos de estos criterios hacen referencia al comportamiento del sistema tal y como lo percibe el usuario (orientados a usuario), mientras que otros consideran la efectividad total del sistema para satisfacer las necesidades de todos los usuarios (orientados al sistema). Algunos de los criterios se refieren concretamente a medidas cuantitativas del rendimiento, mientras que otros son de tipo cualitativo. Desde el punto de vista del usuario, la caracterstica ms importante de un sistema es, en general, el tiempo de respuesta, mientras que desde el punto de vista del sistema es ms importante la productividad o la utilizacin del procesador. Se ha desarrollado una gran variedad de algoritmos para tomar las decisiones de planificacin a corto plazo entre los procesos listos. Entre estos se incluyen: Primero en llegar I primero en servirse: Selecciona el proceso que lleva ms tiempo esperando servicio. Turno rotatorio: Emplea un fraccionamiento del tiempo para hacer que los procesos se limiten a ejecutar en rfagas cortas de tiempo, rotando entre los procesos listos. Primero el proceso ms cort: Selecciona el proceso con menor tiempo esperado de ejecucin, sin apropiarse de la CPU. Menor tiempo restante: Selecciona el proceso al que le queda menos tiempo esperado de ejecucin en el procesador. Un proceso puede ser expulsado cuando otro proceso est listo. Primero la mayor tasa de respuesta: La decisin de planificacin se basa en una estimacin del tiempo de retomo normalizado. Realimentacin: Establece un conjunto de colas de planificacin y sita los procesos en las colas, teniendo en cuenta, entre otros criterios, el historial de ejecucin. La eleccin de un algoritmo de planificacin depender del rendimiento esperado y de la Complejidad de la implementacin. 2.2.3 GESTIN DE MEMORIA En un sistema monoprogramado, la memoria principal se divide en dos partes: una parte para el sistema operativo (monitor residente, ncleo) y otra parte para el programa que se ejecuta en ese instante. En un sistema multiprogramado, la parte de "usuario" de la memoria debe subdividirse an ms para hacer sitio a varios procesos. La tarea de subdivisin la lleva a cabo dinmicamente el sistema operativo y se conoce como gestin de memoria. En un sistema multiprogramado resulta vital una gestin efectiva de la memoria. Si slo hay unos pocos procesos en memoria, entonces la mayor parte del tiempo estarn esperando a la E/S y el procesador estar desocupado. Por ello, hace falta repartir eficientemente la memoria para meter tantos procesos como sea posible.
27
Intercambio El objetivo del intercambio es dar cabida a la ejecucin de ms aplicaciones de las que pueden residir simultneamente en la memoria del sistema: Consiste en trasladar el cdigo y los datos de un proceso completo de memoria al sistema de almacenamiento secundario, para cargar otro previamente almacenado, no permite a un proceso utilizar ms memoria RAM de la que realmente existe en el sistema. Esta tcnica puede ser ineficiente ya que se tiene que hacer el intercambio completo del proceso, aunque ste solo vaya a ejecutar una pequea porcin del cdigo. Durante el intercambio un proceso puede ser sacado temporalmente de memoria y llevado a un lugar especial del disco y posteriormente vuelto a memoria y continuada su ejecucin.. El lugar de almacenamiento temporal suele ser un espacio suficientemente grande como para acomodar copias de las imgenes de memoria de todos los usuarios. Definicin de Particiones Particiones fijas Consiste en dividir la memoria en varias particiones de tamao fijo. Cada particin puede contener exactamente un proceso. El nivel de multiprogramacin est limitado por el nmero de particiones. Cuando una particin est libre, se selecciona un proceso de la cola de entrada y se carga en la particin libre; cuando un proceso termina, la particin est disponible para otro. El sistema operativo conserva una tabla que indica qu partes de la memoria estn disponibles y cuales estn ocupadas. Particiones Variables * Cada trabajo ocupa tanto espacio como necesita. * El tamao del trabajo a ubicar no puede ser mayor que el almacenamiento principal disponible * Se disminuye parcial o totalmente el desperdicio de memoria * Aparecen: Condensacin y Compactacin Paginacin Es una tcnica de manejo de memoria, en la cual el espacio de memoria se divide en secciones fsicas de igual tamao, denominadas marcos de pgina. Los programas se dividen en unidades lgicas, denominadas pginas, que tienen el mismo tamao que los marcos de pginas. De esta forma, se puede cargar una pgina de informacin en cualquier marco de pgina. Las pginas sirven como unidad de almacenamiento de informacin y de transferencia entre memoria principal y memoria auxiliar o secundaria. Cada marco se identifica por la direccin de marco, que est en la posicin fsica de la primera palabra en el marco de pgina. Las pginas de un programa necesitan estar contiguamente en memoria, aunque el programador lo observe de esta forma. Los mecanismos de paginacin permiten la correspondencia correcta entre las direcciones 28
virtuales (dadas por los programas) y las direcciones reales de la memoria que se reverencien. Memoria Virtual La memoria virtual es una tcnica de administracin de la memoria real que permite al sistema operativo brindarle al software de usuario y a s mismo un espacio de direcciones mayor que la memoria real o fsica. Paginacin.-Hasta ahora, los mtodos que hemos visto de la administracin de la memoria principal, nos han dejado con un problema: fragmentacin, (huecos en la memoria que no pueden usarse debido a lo pequeo de su espacio) lo que nos provoca un desperdicio de memoria principal. Una posible solucin para la fragmentacin externa es permitir que espacio de direcciones lgicas lleve a cabo un proceso en direcciones no contiguas, as permitiendo al proceso ubicarse en cualquier espacio de memoria fsica que est disponible, aunque est dividida. Una forma de implementar esta solucin es a travs del uso de un esquema de paginacin. La paginacin evita el considerable problema de ajustar los pedazos de memoria de tamaos variables que han sufrido los esquemas de manejo de memoria anteriores. Dado a sus ventajas sobre los mtodos previos, la paginacin, en sus diversas formas, es usada en muchos sistemas operativos. Al utilizar la memoria virtual, las direcciones no pasan en forma directa al bus de memoria, sino que van a una unidad administradora de la memoria (MMU Memory Management Unit). Estas direcciones generadas por los programas se llaman direcciones virtuales y conforman el hueco de direcciones virtuales. Este hueco se divide en unidades llamadas pginas. Las unidades correspondientes en la memoria fsica se llaman marcos para pgina o frames. Las pginas y los frames tienen siempre el mismo tamao. SEGMENTACIN Otra opcin para el manejo de la memoria es usar una forma de liberar al programador de la tarea del control de las tablas en expansin y contraccin, de la misma forma que la memoria virtual elimina la preocupacin por organizar el programa en una serie de proyectos. Esto se puede lograr dotando a la mquina de varios espacios independientes de direcciones llamados segmentos. Cada segmento tiene una serie lineal de direcciones, desde 0 hasta cierto mximo. La longitud de cada segmento puede variar de 0 hasta un mximo permitido. Los distintos segmentos pueden tener y de hecho tienen por lo general, longitudes distintas. Adems, la longitud de un segmento puede variar durante la ejecucin. La longitud de un segmento de la pila puede crecer si algo entra a la pila y decrecer si algo sale de ella. La segmentacin tambin facilita el uso de procedimientos o datos compartidos entre varios procesos. Un ejemplo comn son las bibliotecas compartidas (Shared DLLs). Es frecuente que las estaciones de trabajo modernas que ejecutan sistemas avanzados, con ventanas, tengan bibliotecas grficas de tamao muy grande que se compilan casi en todos los programas. En un sistema segmentado, la biblioteca grfica se puede colocar en 29
DE
MAQUINA
EL
LENGUAJE
Lenguaje de mquina es el sistema de cdigos directamente interpretable por un circuito microprogramable, como el microprocesador de una computadora o el microcontrolador de un autmata. Este lenguaje est compuesto por un conjunto de instrucciones que determinan acciones a ser tomadas por la mquina. Un programa consiste en una cadena de estas instrucciones de lenguaje de mquina (ms los datos). Estas instrucciones son normalmente ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje de mquina es especfico de cada mquina o arquitectura de la mquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre ellas. El lenguaje de mquina y el lenguaje ensamblador. Todo procesador, grande o pequeo, desde el de una calculadora hasta el de un supercomputador, ya sea de propsito general o especfico, posee un lenguaje nico que es capaz de reconocer y ejecutar. Por razones que resultan obvias, este lenguaje ha sido denominado Lenguaje de Mquina y ms que ser propio de un computador pertenece a su microprocesador. El lenguaje de mquina est compuesto por una serie de instrucciones, que son las nicas que pueden ser reconocidas y ejecutadas por el microprocesador. Este lenguaje es un conjunto de nmeros que representan las operaciones que realiza el microprocesador a travs de su circuitera interna. Estas instrucciones, por decirlo as, estn grabadas o "alambradas" en el hardware y no pueden ser cambiadas. El nivel ms bajo al que podemos aspirar a llegar en el control de un microprocesador es precisamente el del lenguaje de mquina. Ahora bien, siendo el lenguaje de mquina un conjunto de nmeros, cmo es capaz el microprocesador de saber cundo un nmero representa una instruccin y cundo un dato? El secreto de esto reside en la direccin de inicio de un programa y en el estado del microprocesador. La direccin de inicio nos indica en qu localidad de memoria comienza un programa, y en consecuencia que datos deberemos considerar como instrucciones. El estado del microprocesador nos permite saber cundo ste espera una instruccin y cundo ste espera un dato. Obviamente, el lenguaje de mquina de un microprocesador no puede ser ejecutado por otro microprocesador de arquitectura distinta, a menos que haya cierto tipo de compatibilidad prevista. Por ejemplo, un 80486 es capaz de ejecutar lenguaje de mquina propio y soporta el cdigo generado para microprocesadores anteriores de la misma serie (desde un 8086 hasta un 80386). Por otra parte, un PowerPC es capaz de ejecutar instrucciones de los microprocesadores Motorola 68xxx y de los Intel 80xx/80x86. En 30
ambos casos, el diseo de los microprocesadores se hizo tratando de mantener cierto nivel de compatibilidad con los desarrollados anteriormente. En el segundo caso, este nivel de compatibilidad se extendi a los de otra marca. Sin embargo, un 8088 no puede ejecutar cdigo de un 80186 o superiores, ya que los procesadores ms avanzados poseen juegos de instrucciones y registros nuevos no contenidos por un 8088. Un caso similar es la serie 68xxx, pero de ninguna manera podemos esperar que un Intel ejecute cdigo de un Motorola y viceversa. Y esto no tiene nada que ver con la compaa, ya que Intel desarrolla otros tipos de microprocesadores como el 80860 y el iWARP, los cuales no pueden compartir cdigo ni entre ellos ni entre los 80xx/80xxx. Ahora bien, mientras que con el lenguaje de mquina, nosotros obtenemos un control total del microprocesador, la programacin en este lenguaje resulta muy difcil y fcil para cometer errores. No tanto por el hecho de que las instrucciones son slo nmeros, sino porque se debe calcular y trabajar con las direcciones de memoria de los datos, los saltos y las direcciones de llamadas a subrutinas, adems de que para poder hacer ejecutable un programa, se deben enlazar las rutinas de run-time y servicios del sistema operativo. Este proceso es al que se le denomina ensamblado de cdigo. Para facilitar la elaboracin de programas a este nivel, se desarrollaron los Ensambladores y el Lenguaje Ensamblador. Existe una correspondencia 1 a 1 entre las instrucciones del lenguaje de mquina y las del lenguaje ensamblador. Cada uno de los valores numricos del lenguaje de mquina tiene una representacin simblica de 3 a 5 letras como instruccin del lenguaje ensamblador. Adicionalmente, este lenguaje proporciona un conjunto de pseudooperaciones (tambin conocidas como directivas del ensamblador) que sirven para definir datos, rutinas y todo tipo de informacin para que el programa ejecutable sea creado de determinada forma y en determinado lugar.
Fortran, Clipper, COBOL, Pascal o C, que en vez de llamar y ejecutar una rutina en lenguaje de mquina, stos juntan esas rutinas para formar el cdigo objeto que, despus de enlazar las rutinas de run-time y llamadas a otros programas y servicios del sistema operativo, se transformar en el programa ejecutable. Finalmente, tenemos los ensambladores como los descritos en este trabajo que son como una versin reducida y elemental de un compilador (pero que de ninguna manera deben considerarse como tales), ya que lo nico que tienen que hacer es cambiar toda referencia simblica por la direccin correspondiente, calcular los saltos, resolver referencias y llamadas a otros programas, y realizar el proceso de enlace. Los ensambladores son programas destinados a realizar el ensamblado de un determinado cdigo.
Mnemnicos de opcode y mnemnicos extendidos A diferencia de las instrucciones (sentencias) de los lenguajes de alto nivel, instrucciones en el lenguaje ensamblador son generalmente muy simples. Generalmente, una mnemnico es un nombre simblico para una sola instruccin en lenguaje de mquina ejecutable (un opcode), y hay por lo menos un mnemnico de opcode definido para cada instruccin en lenguaje de mquina. Cada instruccin consiste tpicamente en una operacin u opcode ms cero o ms operandos. La mayora de las instrucciones refieren a un solo valor, o a un par de valores. Los operandos pueden ser inmediatos (tpicamente valores de un byte, codificados en la propia instruccin), registros especificados en la instruccin, implcitos o las direcciones de los datos localizados en otra parte de la memoria. Esto est determinado por la arquitectura subyacente del procesador, el ensamblador simplemente refleja cmo trabaja esta arquitectura. Los mnemnicos extendidos son frecuentemente usados para especificar una combinacin de un opcode con un operando especfico, ej, el ensamblador del System/360 usa a B como un 32
mnemnico extendido para el BC con una mscara de 15 y NOP al BC con una mscara de 0. Los mnemnicos extendidos son frecuentemente usados para soportar usos especializados de instrucciones, a menudo para propsitos no obvios con respecto al nombre de la instruccin. Por ejemplo, muchos CPU no tienen una instruccin explcita de NOP (No Operacin), pero tienen instrucciones que puedan ser usadas para tal propsito. En el CPU 8086, la instruccin XCHG AX,AX (intercambia el registro AX consigo mismo) es usada para el NOP, con NOP siendo un pseudo-opcode para codificar la instruccin XCHG AX,AX. Algunos desensambladores reconocen esto y decodificarn la instruccin XCHG AX,AX como NOP. Similarmente, los ensambladores de IBM para el System/360 usan los mnemnicos extendidos NOP y NOPR con las mscaras cero para BC y BCR. Algunos ensambladores tambin soportan simples macroinstrucciones incorporadas que generan dos o ms instrucciones de mquina. Por ejemplo, con algunos ensambladores para el Z80, la instruccin LD HL, BC genera las instrucciones LD L, C LD H, B.3 LD HL, BC es un pseudo-opcode, que en este caso simula ser una instruccin de 16 bits, cuando se expande se producen dos instrucciones de 8 bits que equivalen a la simulada de 16 bits.
SECCIONES DE DATOS Hay instrucciones usadas para definir elementos de datos para manejar datos y variables. Definen el tipo de dato, la longitud y la alineacin de los datos. Estas instrucciones tambin pueden definir si los datos estn disponibles para programas exteriores (programas ensamblados separadamente) o solamente para el programa en el cual la seccin de datos est definida. Algunos ensambladores clasifican estas instrucciones.
Uso actual Hay algunas situaciones en las cuales los profesionales pudieran elegir utilizar el lenguaje ensamblador. Por ejemplo cuando:
es requerido un ejecutable binario independiente (stand-alone), es decir uno que deba ejecutarse sin recursos a componentes de tiempo de ejecucin o 33
a bibliotecas asociadas con un lenguaje de alto nivel; sta es quizs la situacin ms comn. Son programas empotrados que solo almacenan una pequea cantidad de memoria y el dispositivo est dirigido para hacer tareas para un simple propsito. Ejemplos consisten en telfonos, sistemas de combustible e ignicin para automviles, sistemas de control del aire acondicionado, sistemas de seguridad, y sensores interactuando directamente con el hardware, por ejemplo en drivers de dispositivo y manejadores de interrupcin usando instrucciones especficas del procesador no explotadas o disponibles por el compilador. Un ejemplo comn es la instruccin de rotacin bitwise en el ncleo de muchos algoritmos de cifrado creando funciones vector izadas para programas en lenguajes de alto nivel como C. En el lenguaje de alto nivel esto es a veces ayudado por funciones intrnsecas del compilador que mapean directamente a los mnemnicos del SIMD, pero sin embargo resulta en una conversin de ensamblador de uno a uno para un procesador de vector asociado es requerida la optimizacin extrema, ej, en un bucle interno en un algoritmo intensivo en el uso del procesador. Los programadores de juegos toman ventaja de las habilidades de las caractersticas del hardware en los sistemas, permitiendo a los juegos correr ms rpidamente. Tambin las grandes simulaciones cientficas requieren algoritmos altamente optimizados, ej,lgebra 10 15 lineal con BLAS o la transformada de coseno discreta (ej, la versin SIMD en ensamblador del x264,16 (una biblioteca para codificar streams de video) un sistema con severas limitaciones de recursos (ej, un sistema empotrado) debe ser codificado a mano para maximizar el uso de los limitados recursos; pero esto est llegando a ser menos comn a medida que el precio del procesador decrece y el desempeo mejora no existe ningn lenguaje de alto nivel, en un procesador nuevo o especializado, por ejemplo escribiendo programas de tiempo real que necesitan sincronizacin y respuestas precisas, tales como sistemas de navegacin de vuelo, y equipo mdico. Por ejemplo, en un sistema fly-by-wire(vuelo por mandos elctricos), la telemetra debe ser interpretada y hay que actuar dentro de limitaciones estrictas de tiempo. Tales sistemas deben eliminar fuentes de retrasos impredecibles, que pueden ser creados por (algunos) lenguajes interpretados, recoleccin de basura automtica, operaciones de paginacin, o multitarea preventiva. Sin embargo, algunos lenguajes de alto nivel incorporan componentes de tiempo de ejecucin e interfaces de sistema operativo que pueden introducir tales retrasos. Elegir el ensamblador o lenguajes de bajo nivel para tales sistemas da a los programadores mayor visibilidad y control sobre el proceso de los detalles es requerido control total sobre el ambiente, en situaciones de seguridad extremadamente alta donde nada puede darse por sentado. se escriben virus de computadora, bootloaders, ciertos drivers de dispositivo, u otros elementos muy cerca del hardware o al sistema operativo de bajo nivel 34
se escriben simuladores del conjunto de instrucciones para monitoreo, trazado y depuracin de errores donde la sobrecarga adicional es mantenida al mnimo se hace ingeniera inversa en binarios existentes que pueden o no haber sido escritos originalmente en un lenguaje de alto nivel, por ejemplo al crackear la proteccin anticopia del software propietario. se hace ingeniera inversa y modificacin de video juegos (tambin denominado ROM hacking), que es posible por medio de varios mtodos. El ms ampliamente implementado es alterando el cdigo del programa a nivel de lenguaje ensamblador se escribe cdigo automodificable, algo para lo que el lenguaje ensamblador se presta bien se escriben juegos y otros softwares para calculadoras grficas17 se escribe software compilador que genera cdigo ensamblador, y por lo tanto los desarrolladores deben ser programadores de lenguaje ensamblador se escriben algoritmos criptogrficos que siempre deben tomar estrictamente el mismo tiempo para ejecutar, previniendo ataques de tiempo
35