Está en la página 1de 35

Concepto de arquitectura En el entorno informtico proporciona una descripcin de la construccin y distribucin fsica de los componentes de la computadora.

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.

1.1 BREVE HISTORIA DE LA TECNOLOGA DE COMPUTADORAS


La poca Antigua El baco El baco representa el artefacto ms antiguo empleado para manipular datos. Se cree que alrededor del ao 3000 BC, los babilonios empleaban el baco para realizar cmputos matemticos rudimentarios. Los Pioneros 1617 John Napier John Napier, un matemtico Escocs, invent los Huesos o Bastoncillos de Napier. Este artefacto permita multiplicar grandes nmeros mediante la manipulacin de estos bastoncillos. 1623 Wilhelm Schickard Wilhelm Schickard fue el primer matemtico en intentar desarrollar una calculadora. Nativo de Alemania, aproximadamente para el ao 1623, ste matemtico construy un mecanismo que poda sumar, restar, multiplicar y dividir. Su plan era enviar a su amigo, Johannes Keple, una copia de su nueva invencin, pero un fuego destruy las partes antes que fueran ensambladas. El prototipo nunca fue encontrado, pero un esquema rudimentario de esta mquina sobrevivi. Para la dcada de los 1970, fue construido un modelo de este tipo de computador matemtico. 1642 Blaise Pascal

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

1812 1854 1880

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

TERCERA GENERACION *Se implementan los circuitos integrados

CUARTA Y QUINTA GENERACION *Se implementan los microprocesadores

*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

1.2 CLASIFICACIN DE COMPUTADORAS 1.2.1 POR SU PROPOSITO


Computadoras de propsito general Pueden procesar Informacin de negocios con la misma facilidad que procesan frmulas matemticas complejas. Pueden almacenar grandes cantidades de informacin y los grandes programas necesarios para procesarla. Debido a que las computadoras de aplicacin general son tan verstiles la mayor parte de las empresas actuales las utilizan. Computadoras de propsito especfico Tienen muchas de las caractersticas de las Computadoras de uso general pero se dedican a tareas de procesamiento muy especializadas. Se disean para manejar problemas especficos y no se aplican a otras actividades computarizadas. Por ejemplo, las computadoras de aplicacin especial pueden disearse para procesar exclusivamente datos numricos o para controlar completamente procesos automatizados de fabricacin.

1.2.1 POR SU CAPACIDAD


*Microcomputadoras Computadora cuyo CPU es un MP(todos sus componentes estn en un solo chip de circuito integrado). *Minicomputadoras 8

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.

1.3 APLICACIONES TIPICAS


Un simulador es un ejemplo de las computadoras de uso especfico y puede ser un simulador de vuelo, de entrenamiento y en otros campos como, la administracin de plantas nucleares, los vuelos espaciales, el atletismo, la exploracin marina, etc > Bsqueda y estudio de la energa y armas nucleares. > Bsqueda de yacimientos petrolferos con grandes bases de datos ssmicos. > El estudio y prediccin de tornados. > El estudio y prediccin del clima de cualquier parte del mundo. > La elaboracin de maquetas y proyectos de la creacin de aviones, simuladores de vuelo. > Uso personal(vida cotidiana) > Uso administrativo(oficinas o dependencias gubernamentales)

UNIDAD II
9

2.1 COMPONENTES BSICOS


Un computador est constituido por CPU memoria, y unidades de E/S. con uno o varios mdulos de cada tipo. Estos componentes se interconectan de modo que se pueda llevar a cabo la funcin bsica del computador, que es ejecutar programas. As, a este nivel, se puede describir un computador mediante el comportamiento de cada uno de sus componentes, es decir, mediante los datos y las seales de control que un componente intercambia con los otros, y mediante la estructura de interconexin y los controles necesarios para gestionar el uso de dicha estructura. Prcticamente todos los computadores actuales se han diseado basndose en los conceptos desarrollados por John von Neumann en el Instituto de Estudios Avanzados (Institute for Advances Studies) de Princeton. Tal diseo se conoce con el nombre de arquitectura de von Neumann. y se basa en tres conceptos clave: Los datos y las instrucciones se almacenan en una sola memoria de lecturaescritura. Los contenidos de esta memoria se direccionan indicando su posicin, sin considerar el tipo de dato contenido en la misma. La ejecucin se produce siguiendo una secuencia de instruccin tras instruccin.

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 FLASH PROM borrable elctricamente (EEPROM)

Elctricamente por bloques Elctricamente por bytes

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.

2.1.2 UNIDAD CENTRAL DE PROCESAMIENTO


La ALU es la parte del computador que realiza realmente las operaciones aritmticas y lgicas con los datos. El resto de los elementos del computador (unidad de control registros, memoria y E/S) estn principalmente para suministrar datos a la ALU, a fin de que esta los procese, y para recuperar los resultados. Con la ALU llegamos al estudio de lo que puede considerarse el ncleo o esencia del computador. Una unidad aritmtico-lgica y en realidad, todos los componentes electrnicos del computador se basan en el uso de dispositivos lgicos digitales sencillos que pueden almacenar dgitos binarios y realizar operaciones lgicas booleanas elementales. Los datos se presentan a la ALU en registros, y en registros se almacenan los resultados de las operaciones producidos por la ALU. Estos registros son posiciones de memoria temporal internas al procesador que estn conectados a la ALU. La ALU puede tambin activar indicadores (flags) como resultado de una operacin. Por ejemplo, un indicador de desbordamiento se pondr a I si el resultado de una operacin excede la longitud del registro en donde ste debe almacenarse Los valores de los indicadores se almacenan tambin en otro registro dentro del procesador. La unidad de control proporciona las seales que gobiernan el funcionamiento de la ALU y la transferencia de datos dentro y fuera de la ALU.

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.

2.1.3 DISPOSITIVOS DE ENTRADA/SALIDA


La arquitectura de E/S del computador es su interfaz con el exterior. Esta arquitectura se disea de manera que permita una forma sistemtica de controlar las interacciones con el mundo exterior y proporcione al sistema operativo la informacin que necesita para gestionar eficazmente la actividad de E/S. Hay tres tcnicas de E/S principales: E/S programada, en la que la E/S se produce bajo e! control directo y continuo del programa que le solicita la operacin de E/S; E/S mediante interrupciones, en la que el programa 18

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.

2.1.4 BUSES DEL SISTEMA


Los buses son el mecanismo ms comn para la comunicacin entre los dispositivos del computador. Fsicamente son conductores por donde viajan seales elctricas. El bus es un dispositivo en comn entre dos o ms dispositivos, si dos dispositivos transmiten al mismo tiempo seales las seales pueden distorsionarse y consecuentemente perder informacin. Por dicho motivo existe un arbitraje para decidir quien hace uso del bus. Por cada lnea se pueden trasmitir seales que representan unos y ceros, en secuencia, de a una seal por unidad de tiempo. Si se desea por ejemplo transmitir 1 byte, se debern mandar 8 seales, una detrs de otra, en consecuencia se tardara 8 unidades de tiempo. Para poder transmitir 1 byte en 1 sola unidad de tiempo tendramos que usar 8 lneas al mismo tiempo. Existen varios tipos de buses que realizan la tarea de interconexin entre las distintas partes del computador, al bus que comunica al procesador, memoria y E/S se lo denomina BUS DEL SISTEMA. La cantidad de lneas del bus a medida que pasa el tiempo se va incrementando como uno de los mtodos para incrementar la velocidad de transferencia de seales en el computador, y as incrementar el desempeo. Cada lnea tiene un uso especfico, y hay una gran diversidad de implementaciones, pero en general podemos distinguir 3 grandes grupos de buses. Bus de datos: Por estas lneas se transfieren los datos, pueden ser de 8, 16, 32 o ms lneas (no se realmente en cuanto andan hoy en da), lo cual nos indica cuantos datos podemos transferir al mismo tiempo, y es muy influyente en el rendimiento del sistema. Por ejemplo si el bus es de 8 lneas y las instrucciones son de 16 bits, el sistema va a tener que acceder 2 veces a memoria para poder leer la instruccin, el doble de tiempo en leer instrucciones, comparado con un bus de datos de 16 lneas. Bus de direcciones: Por estas lneas se enva la direccin a la cual se requiere hacer referencia para una lectura o escritura, si el bus es de 8 lneas por ejemplo, las combinaciones posibles para identificar una direccin iran del 00000000 al 11111111, son 256 combinaciones posibles, en consecuencia el ancho del bus de datos nos indica la cantidad de direcciones de memoria a la que podemos hacer referencia. Dentro de las direcciones posibles, en general el sistema no usa todas para hacer referencia a la memoria principal, una parte las usa para hacer referencia a los puertos de E/S. 20

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.

2.2 SISTEMA OPERATIVO, COMO SOPORTE


Un sistema operativo es un programa que controla la ejecucin de los programas de aplicacin y acta como interfaz entre el usuario y el hardware del computador. Se puede considerar que un Sistema Operativo tiene dos objetivos: -Comodidad: Un sistema operativo hace que un computador sea ms fcil y cmodo de usar. -Eficiencia: Un sistema operativo permite que los recursos del computador se utilicen de forma eficiente.

2.2.1 CONCEPTOS BSICOS


El sistema operativo como interfaz de Usuario/Computadora El hardware y el software que se utilizan para proveer de aplicaciones a los usuarios pueden contemplarse de forma estratificada o jerrquica. De forma resumida, un sistema operativo ofrece servicio en las reas siguientes: -Creacin de programas: El sistema operativo ofrece una gran variedad de caractersticas y servicios, tales como los editores y los depuradores, para ayudar al programador en la creacin de programas. -Ejecucin de programas: Para ejecutar un programa se necesita un cierto nmero de tareas. Las instrucciones y los datos se deben cargar en la memoria principal, los archivos y los dispositivos de E/S se deben inicializar y se deben preparar otros recursos.

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

un segmento y compartirse entre varios procesos, sin necesidad de tenerla en el

espacio de direcciones de cada proceso.

2.3 EL LENGUAJE ENSAMBLADOR.

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.

2.3.1 PANORAMA GENERAL


An cuando el lenguaje ensamblador fue diseado para hacer ms fcil la programacin de bajo nivel, esta resulta todava complicada y muy laboriosa. Por tal motivo se desarrollaron los lenguajes de alto nivel, para facilitar la programacin de los computadores, minimizando la cantidad de instrucciones a especificar. Sin embargo, esto no quiere decir que el microprocesador ejecute dichos lenguajes. Cada una de las instrucciones de un lenguaje de alto nivel o de un nivel intermedio, equivalen a varias de lenguaje mquina o lenguaje ensamblador. La traduccin de las instrucciones de nivel superior a las de bajo nivel la realizan determinados programas. Por una parte tenemos los intrpretes, como DBase, BASIC, APL, y Lisp. En estos, cada vez que se encuentra una instruccin, se llama una determinada rutina de lenguaje de mquina que se encarga de realizar las operaciones asociadas, pero en ningn momento se genera un cdigo objeto y mucho menos un cdigo ejecutable. Por otra parte, tenemos los compiladores, como los desarrollados para 31

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.

2.3.2 INTRODUCCIN AL LENGUAJE ENSAMBLADOR


DISEO DEL LENGUAJE Elementos bsicos Hay un grado grande de diversidad en la manera en que los autores de los ensambladores categorizan las sentencias y en la nomenclatura que usan. En particular, algunos describen cualquier cosa como pseudo-operacin (pseudo-Op), con excepcin del mnemnico de mquina o del mnemnico extendido. Un tpico lenguaje ensamblador consiste en 3 tipos de sentencias de instruccin que son usadas para definir las operaciones del programa: Mnemnicos de opcode Secciones de datos Directivas de ensamblador

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