Está en la página 1de 64

Funcionamiento Interno Del Computador Al iniciar el arranque, en la mayora de computadores, cualquiera sea su tamao o potencia, el control pasa mediante

circuito cableado a unas memorias de tipo ROM, grabadas con informacin permanente (datos de configuracin, fecha y hora, dispositivos, etc.) Despus de la lectura de esta informacin, el circuito de control mandar a cargar en la memoria principal desde algn soporte externo (disco duro o disquete) los programas del sistema operativo que controlarn las operaciones a seguir, y en pocos segundos aparecer en pantalla el identificador o interfaz, dando muestra al usuario que ya se est en condiciones de utilizacin. Si el usuario carga un programa con sus instrucciones y datos desde cualquier soporte de informacin, bastar una pequea orden para que dicho programa comience a procesarse, una instruccin tras otra, a gran velocidad, transfiriendo la informacin desde y hacia donde est previsto en el programa con pausas si el programa es inactivo, en las que se pide al usuario entradas de informacin. Finalizada esta operacin de entrada, el ordenador continuar su proceso secuencial hasta culminar la ejecucin del programa, presentando sus resultados en pantalla, impresora o cualquier perifrico. Cada una de las instrucciones tiene un cdigo diferente expresado en formato binario. Esta combinacin distinta de unos y ceros la interpreta el <<cerebro>> del ordenador, y como est diseado para que sepa diferenciar lo que tiene que hacer al procesar cada una de ellas, las ejecuta y contina con la siguiente instruccin, sin necesidad de que intervenga el ordenador. El proceso de una instruccin se descompone en operaciones muy simples de transferencia de informacin u operaciones aritmticas y lgicas elementales, que realizadas a gran velocidad le proporcionan una gran potencia que es utilizada en mltiples aplicaciones. Realmente, esa informacin digitalizada en binario, a la que se refiere con unos y ceros, el ordenador la diferencia porque se trata de niveles diferentes de voltaje. Cuando se emplean circuitos integrados, los niveles lgicos bajo y alto, que se representan por ceros y unos, corresponden a valores muy prximos a cero y cinco voltios en la mayora de los casos. Cuando las entradas de las puertas lgicas de los circuitos digitales se les aplica el nivel alto o bajo de voltaje, el comportamiento muy diferente. Por ejemplo, si se le aplica nivel alto conducen o cierran el circuito; en cambio si se aplica nivel bajo no conducen o dejan abierto el circuito. Para que esto ocurra, los transistores que constituyen los circuitos integrados trabajan en conmutacin, pasando del corte a la saturacin. Estructura Interna Del Computador En ella la conforman cada uno de los chips que se encuentran en la plaqueta base o tarjeta madre, estos son:

Bios Cach Chipset Puestos USB Zcalo ZIF Slot de Expansin


o o o o

Ranuras PCI Ranuras DIMM Ranuras SIMM Ranuras AGP

Ranuras ISA Pila Conector disquetera Conector electrnico Conector EIDE (disco duro)

Bios: "Basic Input-Output System", sistema bsico de entrada-salida. Programa incorporado en un chip de la placa base que se encarga de realizar las funciones bsicas de manejo y configuracin del ordenador. Cach: es un tipo de memoria del ordenador; por tanto, en ella se guardarn datos que el ordenador necesita para trabajar. Esta tambin tiene una segunda utilidad que es la de memoria intermedia que almacena los datos mas usados, para ahorrar mucho mas tiempo del trnsito y acceso a la lenta memoria RAM. Chipset: es el conjunto (set) de chips que se encargan de controlar determinadas funciones del ordenador, como la forma en que interacciona el microprocesador con la memoria o la cach, o el control de los puertos y slots ISA, PCI, AGP, USB. USB: En las placas ms modernas (ni siquiera en todas las ATX); de forma estrecha y rectangular, inconfundible pero de poca utilidad por ahora. Zcalo ZIF: Es el lugar donde se inserta el "cerebro" del ordenador. Durante ms de 10 aos ha consistido en un rectngulo o cuadrado donde el "micro", una pastilla de plstico negro con patitas, se introduca con mayor o menor facilidad; recientemente, la aparicin de los Pentium II ha cambiado un poco este panorama. Slot de Expansin: son unas ranuras de plstico con conectores elctricos (slots) donde se introducen las tarjetas de expansin (tarjeta de vdeo, de sonido, de red...). Segn la tecnologa en que se basen presentan un aspecto externo diferente, con diferente tamao y a veces incluso en distinto color. En esta se encuentran:

Ranuras PCI: el estndar actual. Pueden dar hasta 132 MB/s a 33 MHz, lo que es suficiente para casi todo, excepto quiz para algunas tarjetas de vdeo 3D. Miden unos 8,5 cm y generalmente son blancas. Ranuras DIMM: son ranuras de 168 contactos y 13 cm. Originalmente de color negro. Ranuras SIMM: los originales tenan 30 conectores, esto es, 30 contactos, y medan unos 8,5 cm. Hacia finales de la poca del 486 aparecieron los de 72 contactos, ms largos: unos 10,5 cm de color blanco. Ranuras AGP: o ms bien ranura, ya que se dedica exclusivamente a conectar tarjetas de vdeo 3D, por lo que slo suele haber una; adems, su propia estructura impide que se utilice para todos los propsitos, por lo que se utiliza como una ayuda para el PCI. Segn el modo de funcionamiento puede ofrecer 264 MB/s o incluso 528 MB/s. Mide unos 8 cm y se encuentra bastante separada del borde de la placa. Ranuras ISA: son las ms veteranas, un legado de los primeros tiempos del PC. Funcionan a unos 8 MHz y ofrecen un mximo de 16 MB/s, suficiente para conectar un mdem o una tarjeta de sonido, pero muy poco para una tarjeta de vdeo. Miden unos 14 cm y su color suele ser negro; existe una versin an ms antigua que mide slo 8,5 cm.

Pila: se encarga de conservar los parmetros de la BIOS cuando el ordenador est apagado. Sin ella, cada vez que encendiramos tendramos que introducir las caractersticas del disco duro, del Chipset, la fecha y la hora... Conectores internos: Bajo esta denominacin englobamos a los conectores para dispositivos internos, como puedan ser la disquetera, el disco duro, el CD-ROM o el altavoz interno, e incluso para los puertos serie, paralelo y de joystick. 4. Conclusin

El ordenador recibe y enva la informacin a travs de los perifricos por medio de los canales. La UCP es la encargada de procesar la informacin que le llega al ordenador. El intercambio de informacin se tiene que hacer con los perifricos y la UCP. s un sistema complejo que puede llegar a estar constituido por millones de componentes electrnicos elementales. Esto que en le teora parece tan fcil es bastante mas complicado en la prctica, ya que aparte de los bus de datos y de direcciones existen tambin casi dos docenas ms de lneas de seal en la comunicacin entre la CPU y la memoria, a las cuales tambin se acude. Dentro de la tecnologa SCSI hay 2 generaciones y una tercera que est a la vuelta de la esquina. La primera generacin permita un ancho de banda de 8 bits y unos ratios de transferencia de hasta 5 MBps. El mayor problema de esta especificacin fue que para que un producto se denominara SCSI solo deba cumplir 4 cdigos de operacin de los 64 disponibles por lo que proliferaron en el mercado gran cantidad de dispositivos SCSI no compatibles entre s. El microprocesador lo que hace es procesar ordenes sencilla, para procesar ordenes mayores deberemos construir un programa. Con un micro de 16 bits solo se puede direccionar hasta 64 k de memoria, pero ya sabemos que se debe acceder a ms de ellas, esto lo logramos con el esquema de direccionamiento de 20 bits utilizado por el microprocesador Una vez seleccionada y analizada la instruccin deber accionar los circuitos correspondientes de otras unidades, para que se cumplimente la instruccin, a travs del secuenciador o reloj. El chip ms importante de cualquier placa madre es el procesador Las teclas estn sobre los puntos de interseccin de las lneas conductoras horizontales y verticales. Cuando se pulsa una tecla. Se establece un contacto elctrico entre la lnea conductora vertical y horizontal que pasan por debajo de la misma realizar las operaciones con los datos procesados por el ordenador. Puede realizar las operaciones aritmticas bsicas: suma, resta, multiplicacin y divisin, as como, controlada por la UC operaciones como la de desplazamiento. Este desplazamiento se puede realizar hacia la derecha o hacia la izquierda. La UAL utiliza un registro denominado acumulador donde almacena los resultados de las operaciones antes de ser enviados a la memoria. Cuando vamos a acceder a la direccin de memoria especificada en el CP, esta direccin deber transferirse al RDM, a travs del cual accederemos a dicha direccin. Esto se realiza al iniciar cada ciclo de instruccin. La memoria est compuesta de chips. Lo nico que realizan estos chips es almacenar la informacin hasta que esta es requerida. El nmero de chips de que consta la memoria es el que determina la capacidad de la misma.

Arquitectura

A pesar de que las tecnologas empleadas en las computadoras digitales han cambiado mucho desde que aparecieron los primeros modelos en los aos 40, la mayora todava utiliza la Arquitectura de von Neumann, publicada a principios de los aos 1940 por John von Neumann, que otros autores atribuyen a John Presper Eckert y John William Mauchly. La arquitectura de Von Neumann describe una computadora con 4 secciones principales: la unidad aritmtico lgica (ALU por sus siglas del ingls: Arithmetic Logic Unit), la unidad de control, la memoria central, y los dispositivos de entrada y salida (E/S). Estas partes estn interconectadas por canales de conductores denominados buses:

La memoria es una secuencia de celdas de almacenamiento numeradas, donde cada una es un bit o unidad de informacin. La instruccin es la informacin necesaria para realizar lo que se desea con el computador. Las celdas contienen datos que se necesitan para llevar a cabo las instrucciones, con el computador. El nmero de celdas varan mucho de computador a computador, y las tecnologas empleadas para la memoria han cambiado bastante; van desde los rels electromecnicos, tubos llenos de mercurio en los que se formaban los pulsos acsticos, matrices de imanes permanentes, transistores individuales a circuitos integrados con millones de celdas en un solo chip. En general, la memoria puede ser reescrita varios millones de veces (memoria RAM); se parece ms a una pizarra que a una lpida (memoria ROM) que slo puede ser escrita una vez. El procesador (tambin llamado Unidad central de procesamiento o CPU) consta de manera bsica de los siguientes elementos:

Un tpico smbolo esquemtico para una ALU: A y B son operandos; R es la salida; F es la entrada de la unidad de control; D es un estado de la salida.

La unidad aritmtico lgica o ALU es el dispositivo diseado y construido para llevar a cabo las operaciones elementales como las operaciones aritmticas (suma, resta, ...), operaciones lgicas (Y, O, NO), y operaciones de comparacin o relacionales. En esta unidad es en donde se hace todo el trabajo computacional. La unidad de control sigue la direccin de las posiciones en memoria que contienen la instruccin que el computador va a realizar en ese momento; recupera la informacin ponindola en la ALU para la operacin que debe desarrollar. Transfiere luego el resultado a ubicaciones apropiadas en la memoria. Una vez que ocurre lo anterior, la unidad de control va a la siguiente

instruccin (normalmente situada en la siguiente posicin, a menos que la instruccin sea una instruccin de salto, informando al ordenador de que la prxima instruccin estar ubicada en otra posicin de la memoria). Los procesadores pueden constar de adems de las anteriormente citadas, de otras unidades adicionales como la unidad de Coma Flotante

Los dispositivos de Entrada/Salida sirven a la computadora para obtener informacin del mundo exterior y/o comunicar los resultados generados por el computador al exterior. Hay una gama muy extensa de dispositivos E/S como teclados, monitores, unidades de disco flexible o cmaras web.

Arquitectura de computadoras
De Wikipedia, la enciclopedia libre Saltar a navegacin, bsqueda

Una visin tpica de una arquitectura de computadora como una serie de capas de abstraccin: hardware, firmware, ensamblador, kernel, sistema operativo y aplicaciones.

La arquitectura de computadoras es el diseo conceptual y la estructura operacional fundamental de un sistema de computadora. Es decir, es un modelo y una descripcin funcional de los requerimientos y las implementaciones de diseo para varias partes de una computadora, con especial inters en la forma en que la unidad central de proceso (UCP) trabaja internamente y accede a las direcciones de memoria.

Tambin suele definirse como la forma de seleccionar e interconectar componentes de hardware para crear computadoras segn los requerimientos de funcionalidad, rendimiento y costo. El ordenador recibe y enva la informacin a travs de los perifricos por medio de los canales. La UCP es la encargada de procesar la informacin que le llega al ordenador. El intercambio de informacin se tiene que hacer con los perifricos y la UCP. Todas aquellas unidades de un sistema exceptuando la UCP se denomina perifrico, por lo que el ordenador tiene dos partes bien diferenciadas, que son: la UCP (encargada de ejecutar programas y que esta compuesta por la memoria principal, la UAL y la UC) y los perifricos (que pueden ser de entrada, salida, entrada-salida y comunicaciones).

Contenido
[ocultar]

1 Introduccin 2 Almacenamiento de operandos en la CPU o 2.1 Ventajas de las arquitecturas o 2.2 Desventajas de las arquitecturas 3 Vase tambin 4 Enlaces externos

[editar] Introduccin
La implantacin de instrucciones es similar al uso de una serie de desmontaje en una fbrica de manufacturacin. En las cadenas de montaje, el producto pasa a travs de muchas etapas de produccin antes de tener el producto desarmado. Cada etapa o segmento de la cadena est especializada en un rea especfica de la lnea de produccin y lleva a cabo siempre la misma actividad. Esta tecnologa es aplicada en el diseo de procesadores eficientes. A estos procesadores se les conoce como pipeline processors. Estos estn compuestos por una lista de segmentos lineales y secuenciales en donde cada segmento lleva a cabo una tarea o un grupo de tareas computacionales. Los datos que provienen del exterior se introducen en el sistema para ser procesados. La computadora realiza operaciones con los datos que tiene almacenados en memoria, produce nuevos datos o informacin para uso externo. Las arquitecturas y los conjuntos de instrucciones se pueden clasificar considerando los siguientes aspectos:

Almacenamiento de operativos en la CPU: dnde se ubican los operadores aparte de la substractora informativa (SI) Nmero de operandos explcitos por instruccin: cuntos operandos se expresan en forma explcita en una instruccin tpica. Normalmente son 0, 1, 2 y 3.

Posicin del operando: Puede cualquier operando estar en memoria?, o deben estar algunos o todos en los registros internos de la CPU. Cmo se especifica la direccin de memoria (modos de direccionamiento disponibles). Operaciones: Qu operaciones estn disponibles en el conjunto de instrucciones. Tipo y tamao de operandos y cmo se especifican.

[editar] Almacenamiento de operandos en la CPU


La diferencia bsica est en el almacenamiento interno de la CPU. Las principales alternativas son:

Acumulador. Conjunto de registros. Memoria

Caractersticas: karinita En una arquitectura de acumulador un operando est implcitamente en el acumulador siempre leyendo e ingresando datos. (Ej: calculadora Standard -estndar-) En la arquitectura de pila no es necesario nombrar a los operandos ya que estos se encuentran en el tope de la pila. (Ej: calculadora de pila HP) La Arquitectura de registros tiene solo operandos explcitos (es aquel que se nombra) en registros o memoria.
[editar] Ventajas de las arquitecturas

Pila : Modelo sencillo para evaluacin de expresiones (notacin polaca inversa). Instrucciones cortas pueden dar una buena densidad de cdigo. Acumulador: Instrucciones cortas. Minimiza estados internos de la mquina (unidad de control sencilla). Registro: Modelo ms general para el cdigo de instrucciones parecidas. Automatiza generacin de cdigo y la reutilizacin de operandos. Reduce el trfico a memoria. Una computadora actualmente tiene como estndar 32 registros. El acceso a los datos es ms rpido.

[editar] Desventajas de las arquitecturas

Pila: A una pila no se puede acceder aleatoriamente. Esta limitacin hace difcil generar cdigo eficiente. Tambin dificulta una implementacin eficente, ya que la pila llega a ser un cuello de botella es decir que existe dificultad para la transferencia de datos en su velocidad mk. Acumulador: Como el acumulador es solamente almacenamiento temporal, el trfico de memoria es el ms alto en esta aproximacin. Registro: Todos los operadores deben ser nombrados, conduciendo a instrucciones ms largas

Hardware
De Wikipedia, la enciclopedia libre Saltar a navegacin, bsqueda

Hardware tpico de una computadora personal. 1. Monitor 2. Placa base 3. CPU 4. Memoria RAM 5. Tarjeta de expansin 6. Fuente de alimentacin 7. Unidad de disco ptico 8. Disco duro, Unidad de estado slido 9. Teclado 10. Ratn/Mouse

Hardware (pronunciacin AFI: /hdw/ /hdw/) corresponde a todas las partes tangibles de una computadora: sus componentes elctricos, electrnicos, electromecnicos y mecnicos;1 sus cables, gabinetes o cajas, perifricos de todo tipo y cualquier otro elemento fsico involucrado; contrariamente, el soporte lgico es intangible y es llamado software. El trmino es propio del idioma ingls (literalmente traducido: partes duras), su traduccin al espaol no tiene un significado acorde, por tal motivo se la ha adoptado tal cual es y suena; la Real Academia Espaola lo define como Conjunto de los componentes que integran la parte material de una computadora.2 El trmino, aunque es lo ms comn, no solamente se aplica a una computadora tal como

se la conoce, ya que, por ejemplo, un robot, un telfono mvil, una cmara fotogrfica o un reproductor multimedia tambin poseen hardware (y software).3 4 El trmino hardware tampoco correspondera a un sinnimo exacto de componentes informticos, ya que esta ltima definicin se suele limitar exclusivamente a las piezas y elementos internos, independientemente de los perifricos. La historia del hardware del computador se puede clasificar en cuatro generaciones, cada una caracterizada por un cambio tecnolgico de importancia. Este hardware se puede clasificar en: bsico, el estrictamente necesario para el funcionamiento normal del equipo; y complementario, el que realiza funciones especficas. Un sistema informtico se compone de una unidad central de procesamiento (CPU), encargada de procesar los datos, uno o varios perifricos de entrada, los que permiten el ingreso de la informacin y uno o varios perifricos de salida, los que posibilitan dar salida (normalmente en forma visual o auditiva) a los datos procesados.

Contenido
[ocultar]

1 Historia 2 Tipos de hardware o 2.1 Unidad central de procesamiento o 2.2 Memoria RAM 2.2.1 Memoria RAM dinmica 2.2.2 Memorias RAM especiales o 2.3 Perifricos 2.3.1 Dispositivos de entrada de informacin (E) 2.3.2 Dispositivos de salida de informacin (S) 2.3.3 Dispositivos mixtos (E/S de informacin) o 2.4 Hardware grfico 3 Vase tambin 4 Referencias 5 Bibliografa 6 Enlaces externos

[editar] Historia
Artculo principal: Historia del hardware

La clasificacin evolutiva del hardware del computador electrnico, est dividida en generaciones, donde cada una supone un cambio tecnolgico muy notable. El origen de las primeras es sencillo de establecer, ya que en ellas el hardware fue sufriendo cambios radicales. 5 Los componentes esenciales que constituyen la electrnica del computador fueron totalmente reemplazados en las primeras tres generaciones, originando cambios que resultaron trascendentales. En las ltimas dcadas es ms difcil distinguir las

nuevas generaciones, ya que los cambios han sido graduales y existe cierta continuidad en las tecnologas usadas. En principio, se pueden distinguir:

1 Generacin (1945-1956): Electrnica implementada con tubos de vaco. Fueron las primeras mquinas que desplazaron los componentes electromecnicos (rels). 2 Generacin (1957-1963): Electrnica desarrollada con transistores. La lgica discreta era muy parecida a la anterior, pero la implementacin result mucho ms pequea, reduciendo, entre otros factores, el tamao de un computador en notable escala. 3 Generacin (1964-hoy): Electrnica basada en circuitos Integrados . Esta tecnologa permiti integrar cientos de transistores y otros componentes electrnicos en un nico circuito integrado conformando una pastilla de silicio. Las computadoras redujeron as considerablemente su costo, consumo y tamao, incrementndose su capacidad, velocidad y fiabilidad, hasta producir mquinas como las que existen en la actualidad. 4 Generacin (futuro): Probablemente se originar cuando los circuitos de silicio, integrados a alta escala, sean reemplazados por un nuevo tipo de material o tecnologa. 6

La aparicin del microprocesador marca un hito de relevancia, y para muchos autores constituye el inicio de la cuarta generacin.7 A diferencia de los cambios tecnolgicos anteriores, su invencin no supuso la desaparicin radical de los computadores que no lo utilizaban. As, aunque el microprocesador 4004 fue lanzado al mercado en 1971, todava a comienzo de los 80's haba computadores, como el PDP-11/44,8 con lgica carente de microprocesador que continuaban exitosamente en el mercado; es decir, en este caso el desplazamiento ha sido muy gradual. Otro hito tecnolgico usado con frecuencia para definir el inicio de la cuarta generacin es la aparicin de los circuitos integrados VLSI (Very Large Scale Integration), a principios de los ochenta. Al igual que el microprocesador no supuso el cambio inmediato y la rpida desaparicin de los computadores basados en circuitos integrados en ms bajas escalas de integracin. Muchos equipos implementados con tecnologas VLSI y MSI (Medium Scale Integration) aun coexistan exitosamente hasta bien entrados los 90.

[editar] Tipos de hardware

Microcontrolador Motorola 68HC11 y chips de soporte que podran constituir el hardware de un equipo electrnico industrial.

Una de las formas de clasificar el Hardware es en dos categoras: por un lado, el "bsico", que abarca el conjunto de componentes indispensables necesarios para otorgar la funcionalidad mnima a una computadora, y por otro lado, el Hardware "complementario", que, como su nombre lo indica, es el utilizado para realizar funciones especficas (ms all de las bsicas), no estrictamente necesarias para el funcionamiento de la computadora. As es que: Un medio de entrada de datos, la unidad de procesamiento (C.P.U.), la memoria RAM, un medio de salida de datos y un medio de almacenamiento constituyen el "hardware bsico". Los medios de entrada y salida de datos estrictamente indispensables dependen de la aplicacin: desde el punto de vista de un usuario comn, se debera disponer, al menos, de un teclado y un monitor para entrada y salida de informacin, respectivamente; pero ello no implica que no pueda haber una computadora (por ejemplo controlando un proceso) en la que no sea necesario teclado ni monitor, bien puede ingresar informacin y sacar sus datos procesados, por ejemplo, a travs de una placa de adquisicin/salida de datos. Las computadoras son aparatos electrnicos capaces de interpretar y ejecutar instrucciones programadas y almacenadas en su memoria, ellas consisten bsicamente en operaciones aritmtico-lgicas y de entrada/salida.9 Se reciben las entradas (datos), se las procesa y almacena (procesamiento), y finalmente se producen las salidas (resultados del procesamiento). Por ende todo sistema informtico tiene, al menos, componentes y dispositivos hardware dedicados a alguna de las funciones antedichas;10 a saber:
1. 2. 3. 4. 5. Procesamiento: Unidad Central de Proceso o CPU Almacenamiento: Memorias Entrada: Perifricos de Entrada (E) Salida: Perifricos de salida (S) Entrada/Salida: Perifricos mixtos (E/S)

Desde un punto de vista bsico y general, un dispositivo de entrada es el que provee el medio para permitir el ingreso de informacin, datos y programas (lectura); un dispositivo de salida brinda el medio para registrar la informacin y datos de salida (escritura); la memoria otorga la capacidad de almacenamiento, temporal o permanente (almacenamiento); y la CPU provee la capacidad de clculo y procesamiento de la informacin ingresada (transformacin).11 Un perifrico mixto es aqul que puede cumplir funciones tanto de entrada como de salida, el ejemplo ms tpico es el disco rgido (ya que en l se lee y se graba informacin y datos).

[editar] Unidad central de procesamiento Artculo principal: CPU

Microprocesador de 64 bits doble ncleo, el AMD Athlon 64 X2 3600.

La CPU, siglas en ingls de Unidad Central de Procesamiento, es la componente fundamental del computador, encargada de interpretar y ejecutar instrucciones y de procesar datos.12 En los computadores modernos, la funcin de la CPU la realiza uno o ms microprocesadores. Se conoce como microprocesador a un CPU que es manufacturado como un nico circuito integrado. Un servidor de red o una mquina de clculo de alto rendimiento (supercomputacin), puede tener varios, incluso miles de microprocesadores trabajando simultneamente o en paralelo (multiprocesamiento); en este caso, todo ese conjunto conforma la CPU de la mquina. Las unidades centrales de proceso (CPU) en la forma de un nico microprocesador no slo estn presentes en las computadoras personales (PC), sino tambin en otros tipos de dispositivos que incorporan una cierta capacidad de proceso o "inteligencia electrnica"; como pueden ser: controladores de procesos industriales , televisores, automviles, calculadores, aviones, telfonos mviles, electrodomsticos, juguetes y muchos ms. Actualmente los diseadores y fabricantes ms populares de microprocesadores de PC son Intel y AMD; y para el mercado de dispositivos mviles y de bajo consumo, los principales son Samsung, Qualcomm y Texas Instruments.

Placa base formato ATX.

El microprocesador se monta en la llamada placa base, sobre el un zcalo conocido como zcalo de CPU, que permite las conexiones elctricas entre los circuitos de la placa y el procesador. Sobre el procesador ajustado a la placa base se fija un disipador trmico de un material con elevada conductividad trmica, que por lo general es de aluminio, en algunos casos de cobre; ste es indispensable en los microprocesadores que consumen bastante energa, la cual, en gran parte, es emitida en forma de calor: En algunos casos pueden consumir tanta energa como una lmpara incandescente (de 40 a 130 vatios). Adicionalmente, sobre el disipador se acopla uno o dos ventiladores (raramente ms), destinados a forzar la circulacin de aire para extraer ms rpidamente el calor acumulado por el disipador, y originado en el microprocesador. Complementariamente, para evitar daos por efectos trmicos, tambin se suelen instalar sensores de temperatura del microprocesador y sensores de revoluciones del ventilador, as como sistemas automticos que controlan la cantidad de revoluciones por unidad de tiempo de estos ltimos. La gran mayora de los circuitos electrnicos e integrados que componen el hardware del computador van montados en la placa madre. La placa madre, tambin conocida como placa base o con el anglicismo board,13 es un gran circuito impreso sobre el que se suelda el chipset, las ranuras de expansin (slots), los zcalos, conectores, diversos integrados, etc. Es el soporte fundamental que aloja y comunica a todos los dems componentes: Procesador, mdulos de memoria RAM, tarjetas grficas, tarjetas de expansin, perifricos de entrada y salida. Para comunicar esos componentes, la placa base posee una serie de buses mediante los cuales se trasmiten los datos dentro y hacia afuera del sistema. La tendencia de integracin ha hecho que la placa base se convierta en un elemento que incluye tambin la mayora de las funciones bsicas (vdeo, audio, red, puertos de varios tipos), funciones que antes se realizaban con tarjetas de expansin. Aunque ello no

excluye la capacidad de instalar otras tarjetas adicionales especficas, tales como capturadoras de vdeo, tarjetas de adquisicin de datos, etc. La tendencia en los ltimos aos es eliminar elementos separados en la placa base e integrarlos al microprocesador.
[editar] Memoria RAM

Modulos de memoria RAM instalados.


Artculo principal: Memoria RAM

Del ingls Random Access Memory, literalmente significa "memoria de acceso aleatorio". El trmino tiene relacin con la caracterstica de presentar iguales tiempos de acceso a cualquiera de sus posiciones (ya sea para lectura o para escritura). Esta particularidad tambin se conoce como "acceso directo", en contraposicin al Acceso secuencial. La RAM es la memoria utilizada en una computadora para el almacenamiento transitorio y de trabajo (no masivo). En la RAM se almacena temporalmente la informacin, datos y programas que la Unidad de Procesamiento (CPU) lee, procesa y ejecuta. La memoria RAM es conocida como Memoria principal de la computadora, tambin como "Central o de Trabajo"; 14 a diferencia de las llamadas memorias auxiliares, secundarias o de almacenamiento masivo (como discos duros, unidades de estado slido, cintas magnticas u otras memorias). Las memorias RAM son, comnmente, voltiles; lo cual significa que pierden rpidamente su contenido al interrumpir su alimentacin elctrica. Las ms comunes y utilizadas como memoria central son "dinmicas" (DRAM), lo cual significa que tienden a perder sus datos almacenados en breve tiempo (por descarga, an estando con alimentacin elctrica), por ello necesitan un circuito electrnico especfico que se encarga de proveerle el llamado "refresco" (de energa) para mantener su informacin.

La memoria RAM de un computador se provee de fbrica e instala en lo que se conoce como mdulos. Ellos albergan varios circuitos integrados de memoria DRAM que, conjuntamente, conforman toda la memoria principal. [editar] Memoria RAM dinmica Es la presentacin ms comn en computadores modernos (computador personal, servidor); son tarjetas de circuito impreso que tienen soldados circuitos integrados de memoria por una o ambas caras, adems de otros elementos, tales como resistencias y capacitores. Esta tarjeta posee una serie de contactos metlicos (con un recubrimiento de oro) que permite hacer la conexin elctrica con el bus de memoria del controlador de memoria en la placa base. Los integrados son de tipo DRAM, memoria denominada "dinmica", en la cual las celdas de memoria son muy sencillas (un transistor y un condensador), permitiendo la fabricacin de memorias con gran capacidad (algunos cientos de Megabytes) a un costo relativamente bajo. Las posiciones de memoria o celdas, estn organizadas en matrices y almacenan cada una un bit. Para acceder a ellas se han ideado varios mtodos y protocolos cada uno mejorado con el objetivo de acceder a las celdas requeridas de la manera ms eficiente posible.

Memorias RAM con tecnologas usadas en la actualidad.

Entre las tecnologas recientes para integrados de memoria DRAM usados en los mdulos RAM se encuentran:

SDR SDRAM: Memoria con un ciclo sencillo de acceso por ciclo de reloj. Actualmente en desuso, fue popular en los equipos basados en el Pentium III y los primeros Pentium 4. DDR SDRAM: Memoria con un ciclo doble y acceso anticipado a dos posiciones de memoria consecutivas. Fue popular en equipos basados en los procesadores Pentium 4 y Athlon 64. DDR2 SDRAM: Memoria con un ciclo doble y acceso anticipado a cuatro posiciones de memoria consecutivas. DDR3 SDRAM: Memoria con un ciclo doble y acceso anticipado a ocho posiciones de memoria consecutivas. Es el tipo de memoria ms actual, est reemplazando rpidamente a su predecesora, la DDR2.

Los estndares JEDEC, establecen las caractersticas elctricas y las fsicas de los mdulos, incluyendo las dimensiones del circuito impreso. Los estndares usados actualmente son:

DIMM Con presentaciones de 168 pines (usadas con SDR y otras tecnologas antiguas), 184 pines (usadas con DDR y el obsoleto SIMM) y 240 (para las tecnologas de memoria DDR2 y DDR3). SO-DIMM Para computadores porttiles, es una miniaturizacin de la versin DIMM en cada tecnologa. Existen de 144 pines (usadas con SDR), 200 pines (usadas con DDR y DDR2) y 240 pines (para DDR3).

[editar] Memorias RAM especiales Hay memorias RAM con caractersticas que las hacen particulares, y que normalmente no se utilizan como memoria central de la computadora; entre ellas se puede mencionar:

SRAM: Siglas de Static Random Access Memory. Es un tipo de memoria ms rpida que la DRAM (Dynamic RAM). El trmino "esttica" deriva del hecho que no necesita el refresco de sus datos. Si bien esta RAM no requiere circuito de refresco, ocupa ms espacio y utiliza ms energa que la DRAM. Este tipo de memoria, debido a su alta velocidad, es usada como memoria cach. NVRAM: Siglas de Non-Volatile Random Access Memory. Memoria RAM no voltil (mantiene la informacin en ausencia de alimentacin elctrica). Hoy en da, la mayora de memorias NVRAM son memorias flash, muy usadas para telfonos mviles y reproductores porttiles de MP3. VRAM: Siglas de Video Random Access Memory. Es un tipo de memoria RAM que se utiliza en las tarjetas grficas del computador. La caracterstica particular de esta clase de memoria es que es accesible de forma simultnea por dos dispositivos. As, es posible que la CPU grabe informacin en ella, al tiempo que se leen los datos que sern visualizados en el Monitor de computadora.

De las anteriores a su vez, hay otros subtipos ms.


[editar] Perifricos Artculo principal: Perifricos

Se entiende por perifrico a las unidades o dispositivos que permiten a la computadora comunicarse con el exterior, esto es, tanto ingresar como exteriorizar informacin y datos.10 Los perifricos son los que permiten realizar las operaciones conocidas como de entrada/salida (E/S).11 Aunque son estrictamente considerados accesorios o no esenciales, muchos de ellos son fundamentales para el funcionamiento adecuado de la computadora moderna; por ejemplo, el teclado, el disco duro y el monitor son elementos actualmente imprescindibles; pero no lo son un escner o un plter. Para ilustrar este punto: en los aos 80, muchas de las primeras computadoras personales no utilizaban disco duro ni

mouse (o ratn), tenan slo una o dos disqueteras, el teclado y el monitor como nicos perifricos. [editar] Dispositivos de entrada de informacin (E)

Teclado para PC inalmbrico.

Ratn (Mouse) comn almbrico.

De esta categora son aquellos que permiten el ingreso de informacin, en general desde alguna fuente externa o por parte del usuario. Los dispositivos de entrada proveen el medio fundamental para transferir hacia la computadora (ms propiamente al procesador) informacin desde alguna fuente, sea local o remota. Tambin permiten cumplir la esencial tarea de leer y cargar en memoria el sistema operativo y las aplicaciones o programas informticos, los que a su vez ponen operativa la computadora y hacen posible realizar las ms diversas tareas.11 Entre los perifricos de entrada se puede mencionar: 10 teclado, mouse o ratn, escner, micrfono, cmara web , lectores pticos de cdigo de barras, Joystick, lectora de CD, DVD o BluRay (slo lectoras), placas de adquisicin/conversin de datos, etc. Pueden considerarse como imprescindibles para el funcionamiento, (de manera como hoy se concibe la informtica) al teclado, al ratn y algn dispositivo lector de discos; ya que tan slo con ellos el hardware puede ponerse operativo para un usuario. Los otros son ms bien accesorios, aunque en la actualidad pueden resultar de tanta necesidad que son considerados parte esencial de todo el sistema.

Impresora de inyeccin de tinta.

[editar] Dispositivos de salida de informacin (S) Son aquellos que permiten emitir o dar salida a la informacin resultante de las operaciones realizadas por la CPU (procesamiento). Los dispositivos de salida aportan el medio fundamental para exteriorizar y comunicar la informacin y datos procesados; ya sea al usuario o bien a otra fuente externa, local o remota.11 Los dispositivos ms comunes de este grupo son los monitores clsicos (no de pantalla tctil), las impresoras, y los altavoces. 10 Entre los perifricos de salida puede considerarse como imprescindible para el funcionamiento del sistema, al monitor. Otros, aunque accesorios, son sumamente necesarios para un usuario que opere un computador moderno. [editar] Dispositivos mixtos (E/S de informacin)

Piezas de un Disco duro.

Son aquellos dispositivos que pueden operar de ambas formas: tanto de entrada como de salida.11 Tpicamente, se puede mencionar como perifricos mixtos o de Entrada/Salida a: discos rgidos, disquetes, unidades de cinta magntica, lecto-grabadoras de CD/DVD,

discos ZIP, etc. Tambin entran en este rango, con sutil diferencia, otras unidades, tales como: Tarjetas de Memoria flash o unidad de estado slido, tarjetas de red, mdems, tarjetas de captura/salida de vdeo, etc. 10 Si bien se puede clasificar al pendrive (lpiz de memoria), memoria flash o memoria USB o unidades de estado slido en la categora de memorias, normalmente se los utiliza como dispositivos de almacenamiento masivo; siendo todos de categora Entrada/Salida.15 Los dispositivos de almacenamiento masivo10 tambin son conocidos como "Memorias Secundarias o Auxiliares". Entre ellos, sin duda, el disco duro ocupa un lugar especial, ya que es el de mayor importancia en la actualidad, en el que se aloja el sistema operativo, todas las aplicaciones, utilitarios, etc. que utiliza el usuario; adems de tener la suficiente capacidad para albergar informacin y datos en grandes volmenes por tiempo prcticamente indefinido. Los servidores Web, de correo electrnico y de redes con bases de datos, utilizan discos rgidos de grandes capacidades y con una tecnologa que les permite trabajar a altas velocidades como SCSI incluyendo tambin, normalmente, capacidad de redundancia de datos RAID; incluso utilizan tecnologas hbridas: disco rgido y unidad de estado slido, lo que incrementa notablemente su eficiencia. Las interfaces actuales ms usadas en discos duros son: IDE, SATA, SCSI y SAS; y en las unidades de estado slido son SATA y PCI-Express ya que necesitan grandes anchos de banda. La pantalla tctil (no el monitor clsico) es un dispositivo que se considera mixto, ya que adems de mostrar informacin y datos (salida) puede actuar como un dispositivo de entrada, reemplazando, por ejemplo, a algunas funciones del ratn o del teclado.
[editar] Hardware grfico

GPU de Nvidia GeForce.


Artculo principal: Tarjeta grfica

El hardware grfico lo constituyen bsicamente las tarjetas grficas. Dichos componentes disponen de su propia memoria y unidad de procesamiento, esta ltima llamada unidad de procesamiento grfico (o GPU, siglas en ingls de Graphics Processing Unit). El objetivo bsico de la GPU es realizar los clculos asociados a

operaciones grficas, fundamentalmente en coma flotante, 16 liberando as al procesador principal (CPU) de esa costosa tarea (en tiempo) para que ste pueda efectuar otras funciones en forma ms eficiente. Antes de esas tarjetas de vdeo con aceleradores por hardware, era el procesador principal el encargado de construir la imagen mientras la seccin de vdeo (sea tarjeta o de la placa base) era simplemente un traductor de las seales binarias a las seales requeridas por el monitor; y buena parte de la memoria principal (RAM) de la computadora tambin era utilizada para estos fines. Dentro de sta categora no se deben omitir los sistemas grficos integrados (IGP), presentes mayoritariamente en equipos porttiles o en equipos prefabricados (OEM), los cuales generalmente, a diferencia de las tarjetas grficas, no disponen de una memoria dedicada, utilizando para su funcin la memoria principal del sistema. La tendencia en los ltimos aos es integrar los sistemas grficos dentro del propio procesador central. Los procesadores grficos integrados (IGP) generalmente son de un rendimiento y consumo notablemente ms bajo que las GPU de las tarjetas grficas dedicadas, no obstante, son ms que suficiente para cubrir las necesidades de la mayora de los usuarios de un PC. Actualmente se estn empezando a utilizar las tarjetas grficas con propsitos no exclusivamente grficos, ya que en potencia de clculo la GPU es superior, ms rpida y eficiente que el procesador para operaciones en coma flotante, por ello se est tratando de aprovecharla para propsitos generales, al concepto, relativamente reciente, se le denomina GPGPU (General-Purpose Computing on Graphics Processing Units). La Ley de Moore establece que cada 18 a 24 meses la cantidad de transistores que puede contener un circuito integrado se logra duplicar; en el caso de los GPU esta tendencia es bastante ms notable, duplicando, o an ms, lo indicado en la ley de Moore.17 Desde la dcada de 1990, la evolucin en el procesamiento grfico ha tenido un crecimiento vertiginoso; las actuales animaciones por computadoras y videojuegos eran impensables veinte aos atrs.

Firmware
De Wikipedia, la enciclopedia libre Saltar a navegacin, bsqueda

Una visin tpica de la arquitectura de computadores como una serie de capas de abstraccin: hardware, firmware, ensamblador, kernel, sistema operativo y aplicaciones

Memoria de solo lectura que contiene el BIOS de una vieja placa base.

El firmware es un bloque de instrucciones de programa para propsitos especficos, grabado en una memoria de tipo no voltil (ROM, EEPROM, flash, etc), que establece la lgica de ms bajo nivel que controla los circuitos electrnicos de un dispositivo de cualquier tipo. Al estar integrado en la electrnica del dispositivo es en parte hardware, pero tambin es software, ya que proporciona lgica y se dispone en algn tipo de lenguaje de programacin. Funcionalmente, el firmware es el intermediario (interfaz) entre las rdenes externas que recibe el dispositivo y su electrnica, ya que es el encargado de controlar a sta ltima para ejecutar correctamente dichas rdenes externas. Encontramos firmware en memorias ROM de los sistemas de diversos dispositivos perifricos, como en monitores de video, unidades de disco, impresoras, etc., pero tambin en los propios microprocesadores, chips de memoria principal y en general en cualquier circuito integrado. Muchos de los firmwares almacenados en ROM estn protegidos por Derechos de Autor.

El programa BIOS de una computadora es un firmware cuyo propsito es activar una mquina desde su encendido y preparar el entorno para la instalacin de un Sistema Operativo complejo, as como responder a otros eventos externos (botones de pulsacin humana) y al intercambio de rdenes entre distintos componentes de la computadora. En un microprocesador el firmware es el que recibe las instrucciones de los programas y las ejecuta en la compleja circuitera del mismo, emitiendo rdenes a otros dispositivos del sistema.

Contenido
[ocultar]

1 Origen del trmino 2 El firmware hoy en da o 2.1 Perifricos de computador 2.1.1 Retos del firmware en los PC o 2.2 Reproductores de msica porttiles o 2.3 Telfonos celulares o 2.4 Automviles o 2.5 Definicin del IEEE 3 Ejemplos 4 Hackeando el firmware 5 Referencias 6 Vase tambin

[editar] Origen del trmino


El trmino "firmware" fue acuado por Ascher Opler en un artculo de Datamation publicado en 1967.1 Originalmente, se refera al microcdigo - contenido en un almacenamiento de control escribible (una rea pequea especializada de memoria RAM), que defina e implementaba el conjunto de instrucciones del computador. Si fuera necesario, el firmware poda ser recargado para especializar o para modificar las instrucciones que podra ejecutar la Unidad Central de Procesamiento (CPU). Segn el uso original, el firmware contrastaba tanto con el soporte fsico (la CPU en s misma) como con el software (las instrucciones normales que se ejecutan en una CPU). El firmware no estaba compuesto de instrucciones de mquina de la CPU, sino del microcdigo de nivel inferior implicado en la implementacin de las instrucciones de mquina que ira a ejecutar la CPU. El firmware exista en el lmite o frontera entre el hardware y el software, por ello el trmino de firmware (que significa "software firme, fijo, o slido"). Posteriormente, el trmino fue ensanchado para incluir cualquier tipo de microcdigo, ya fuera en RAM o ROM. An ms adelante, el trmino fue ensanchado otra vez ms, en el uso popular, para denotar cualquier cosa residente en ROM, incluyendo las instrucciones de mquina del procesador para el BIOS, los cargadores de arranque, o aplicaciones especializadas.

Hasta mediados de los aos 1990 el procedimiento tpico para actualizar un firmware a una nueva versin era reemplazar el medio de almacenamiento que contena el firmware, usualmente un chip de memoria ROM enchufado en un socket. Hoy en da este procedimiento no es habitual ya que los fabricantes han aadido una nueva funcionalidad que permite grabar las nuevas instrucciones en la misma memoria, haciendo de la actualizacin un proceso mucho ms cmodo y dinmico. Aun as el proceso de actualizacin de un firmware hay que realizarlo con mucho cuidado, ya que al ser un componente vital cualquier fallo puede dejar al equipo inservible. Por ejemplo, un fallo de alimentacin a mitad del proceso de actualizacin evitara la carga completa del cdigo que gobierna el equipo, quiz incluso la carga del cdigo que se encarga de actualizar el firmware, as que no podramos actualizarlo de nuevo y por lo tanto el equipo no funcionara.

[editar] El firmware hoy en da


El firmware ha evolucionado para significar casi cualquier contenido programable de un dispositivo de hardware, no slo cdigo de mquina para un procesador, sino tambin configuraciones y datos para los circuitos integrados para aplicaciones especficas (ASICs), dispositivos de lgica programable, etc.
[editar] Perifricos de computador

La mayora de los perifricos del computador son de hecho computadores de propsito especial. Mientras que los dispositivos externos tienen el firmware almacenado internamente, las modernas tarjetas de los perifricos de computadores tpicamente tienen grandes partes de firmware que es cargado en el arranque por el sistema huesped, pues esto es ms flexible. Dicho hardware por lo tanto puede no funcionar completamente hasta que el computador huesped le haya cargado el firmware indispensable, a menudo por medio del driver de dispositivo especfico (o, ms exactamente, por medio de un subsistema dentro del paquete del driver de dispositivo). Los modernos drivers de dispositivo tambin pueden exponer una interface directa de usuario para la configuracin adems de las llamadas/interfaces del sistema operativo o de las Interfaces de programacin de aplicaciones (APIs). [editar] Retos del firmware en los PC En algn sentido, los varios componentes del firmware son tan importantes como el sistema operativo en un computador. Sin embargo, a diferencia de la mayora de los sistemas operativos modernos, el firmware tiene raramente un mecanismo automtico bien desarrollado para actualizarse a s mismo para corregir los problemas de funcionalidad que son detectados despus de que la unidad es despachada. El BIOS es bastante fcil de actualizar en una PC moderna; los dispositivos como las tarjetas video o los mdems confan en el firmware cargado dinmicamente por un driver de dispositivo y a menudo pueden as ser actualizados transparentemente a travs de los mecanismos de la actualizacin del sistema operativo. En contraste, el firmware en dispositivos de almacenamiento es raramente actualizado; no estn estandarizados los mecanismos para detectar las versiones del firmware y actualizarlas. Estos dispositivos por lo tanto tienden a tener un ndice ms alto de problemas de

funcionalidad, comparado a otras partes de un moderno sistema de computacin.[cita requerida]


[editar] Reproductores de msica porttiles

Algunas compaas usan actualizaciones del firmware para agregar nuevos formatos de archivos de reproduccin de sonido (codecs); el iriver agreg el formato ogg de esta manera, por ejemplo. Otras caractersticas que pueden cambiar con las actualizaciones del firmware son el GUI e incluso la vida de la batera. La mayora de los reproductores de msica modernos soportan las actualizaciones del firmware.
[editar] Telfonos celulares

La mayora de los telfonos celulares tienen una capacidad de firmware actualizable por muchas de las mismas razones que arriba, pero algunos incluso pueden ser actualizados para mejorar la recepcin o la calidad de sonido.
[editar] Automviles

Desde 1996 la mayora de los automviles han empleado una computadora a bordo y varios sensores para detectar problemas mecnicos. Los vehculos modernos tambin emplean sistemas controlados por computador ABS, y sistemas de control de transmisin operados por computadora. El conductor puede tambin recibir informacin "in-dash" mientras conduce de esta manera, como por ejemplo lecturas en tiempo real de la economa del combustible y de la presin del neumtico. La mayora del firmware del vehculo puede ser actualizado en un distribuidor local autorizado.
[editar] Definicin del IEEE

El glosario estndar de terminologa del software del Institute of Electrical and Electronics Engineers (IEEE), Std 610.12-1990, define el firmware como sigue:
"La combinacin de instrucciones de un dispositivo de hardware e instrucciones y datos de computadora que residen como software de solo lectura en ese dispositivo". Notas: (1) este trmino es a veces usado para referirse solamente al dispositivo de hardware o solamente a las instrucciones o datos de computadora, pero estos significados estn desaprobados. (2) la confusin rodeando este trmino ha llevado a alguno a sugerir que ste debe ser totalmente evitado.

[editar] Ejemplos
Ejemplos de firmware incluyen:

Sistemas de temporizacin y control para las lavadoras

El BIOS encontrado en computadores personales compatibles con el IBM PC; El cdigo de plataforma encontrado en los sistemas Itanium, las mquinas Mac OS X basadas en Intel, y muchos tarjetas de escritorio de Intel tienen firmware EFI; Open Firmware, usado en computadores de Sun Microsystems, Apple Computer, y de Genesi; ARCS, usado en computadores de Silicon Graphics; Kickstart usado en la lnea de computadoras Amiga. Este es un ejemplo nico de un firmware que mezclaba las capacidades del BIOS (POST, inicio del hardware + auto configuracin plug and play de perifricos, etc.), del kernel en s mismo del AmigaOS y de partes del cdigo usadas en el sistema operativo (como primitivas y bibliotecas de la interface grfica) RTAS (Run Time Abstraction Services), usado en computadoras de IBM; Chips de EPROM usados en la serie Eventide H-3000 de procesadores digitales de msica. El Common Firmware Environment (CFE) Controlando los atributos del sonido y video tanto como la lista de canales en los televisores modernos

[editar] Hackeando el firmware


A veces una nueva o modificada versin no oficial de firmware es creada por terceros para proporcionar nuevas caractersticas o para abrir una funcionalidad oculta. Los ejemplos incluyen Rockbox para los reproductores de audio digital, CHDK2 y Magic Lantern2 3 para las cmaras digitales de Canon, y OpenWRT para los enrutadores inalmbricos,2 el firmware de regin libre para unidades de DVD, que no son de regin libre con el firmware oficial, as como muchos proyectos de homebrew para las consolas de juego. stos pueden a menudo abrir funcionalidad computacional en dispositivos previamente limitados (ej., ejecutar Doom en iPods). La mayora de los hacks de firmware son libres y tambin de cdigo abierto. Estos hacks usualmente utilizan la facilidad de actualizacin del firmware en muchos dispositivos para instalarse o ejecutarse en ellos. Algunos, sin embargo, deben recurrir a exploits para funcionar, porque el fabricante ha intentado bloquear el hardware para evitar que utilicen cdigo no autorizado.

Lenguaje ensamblador
De Wikipedia, la enciclopedia libre Saltar a navegacin, bsqueda Para otros usos de este trmino, vase Ensamblador (desambiguacin). Tambin ver: Ensamblador

Lenguaje de mquina del Intel 8088. El cdigo de mquina en hexadecimal se resalta en rojo, el equivalente en lenguaje assembler en magenta, y las direcciones de memoria donde se encuentra el cdigo, en azul. Abajo se ve un texto en hexadecimal y ASCII.

El lenguaje ensamblador, o assembler (assembly language en ingls ) es un lenguaje de programacin de bajo nivel para los computadores, microprocesadores, microcontroladores, y otros circuitos integrados programables. Implementa una representacin simblica de los cdigos de mquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura legible por un programador. Esta representacin es usualmente definida por el fabricante de hardware, y est basada en los mnemnicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria, y otras caractersticas del lenguaje. Un lenguaje ensamblador es por lo tanto especfico a cierta arquitectura de computador fsica (o virtual). Esto est en contraste con la mayora de los lenguajes de programacin de alto nivel, que, idealmente son portables. Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al cdigo de mquina del computador objetivo. El ensamblador realiza una traduccin ms o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemnicas a las instrucciones y datos de mquina. Esto est en contraste con los lenguajes de alto nivel, en los cuales una sola declaracin generalmente da lugar a muchas instrucciones de mquina. Muchos sofisticados ensambladores ofrecen mecanismos adicionales para facilitar el desarrollo del programa, controlar el proceso de ensamblaje, y la ayuda de depuracin. Particularmente, la mayora de los ensambladores modernos incluyen una facilidad de macro (descrita ms abajo), y son llamados macro ensambladores. Fue usado principalmente en los inicios del desarrollo de software, cuando an no se contaba con potentes lenguajes de alto nivel y los recursos eran limitados. Actualmente se utiliza con frecuencia en ambientes acadmicos y de investigacin, especialmente cuando se requiere la manipulacin directa de hardware, altos rendimientos, o un uso de recursos controlado y reducido. Muchos dispositivos programables (como los microcontroladores) an cuentan con el ensamblador como la nica manera de ser manipulados.

Contenido
[ocultar]

1 Caractersticas 2 Programa ensamblador o 2.1 Nmero de pasos o 2.2 Ensambladores de alto nivel o 2.3 Uso del trmino

3 Lenguaje o 3.1 Instrucciones de CPU o 3.2 Ensamblado o 3.3 Ejemplo 4 Diseo del lenguaje o 4.1 Elementos bsicos 4.1.1 Mnemnicos de opcode y mnemnicos extendidos 4.1.2 Secciones de datos 4.1.3 Directivas del ensamblador o 4.2 Macros o 4.3 Soporte para programacin estructurada 5 Uso del lenguaje ensamblador o 5.1 Perspectiva histrica o 5.2 Uso actual o 5.3 Aplicaciones tpicas 6 Detalles adicionales 7 Ejemplos de lenguaje ensamblador o 7.1 Ejemplo para la arquitectura x86 o 7.2 Ejemplo para el computador virtual (POCA) o 7.3 Ejemplo para el C Intel 8051 o 7.4 Ejemplo para el Microchip PIC16F84 8 Referencias 9 Lectura adicional 10 Vase tambin 11 Enlaces externos

[editar] Caractersticas

El cdigo escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su estructura se acerca al lenguaje mquina, es decir, es un lenguaje de bajo nivel. El lenguaje ensamblador es difcilmente portable, es decir, un cdigo escrito para un microprocesador, puede necesitar ser modificado, para poder ser usado en otra mquina distinta. Al cambiar a una mquina con arquitectura diferente, generalmente es necesario reescribirlo completamente. Los programas hechos, por un programador experto, en lenguaje ensamblador, son generalmente mucho ms rpidos y consumen menos recursos del sistema (memoria RAM y ROM.) que el programa equivalente compilado desde un lenguaje de alto nivel. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan ms rpidamente y ocupan menos espacio que con lenguajes de alto nivel. Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de cdigo difciles y/o muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no estn disponibles en los lenguajes de alto nivel. Tambin se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecucin.

[editar] Programa ensamblador


Artculo principal: Ensamblador

Tpicamente, un programa ensamblador (assembler en ingls) moderno crea cdigo objeto traduciendo instrucciones mnemnicas de lenguaje ensamblador en opcodes, y resolviendo los nombres simblicos para las localizaciones de memoria y otras entidades.1 El uso de referencias simblicas es una caracterstica clave del lenguaje ensamblador, evitando tediosos clculos y actualizaciones manuales de las direcciones despus de cada modificacin del programa. La mayora de los ensambladores tambin incluyen facilidades de macros para realizar sustitucin textual - ej. generar cortas secuencias de instrucciones como expansin en lnea en vez de llamar a subrutinas. Los ensambladores son generalmente ms simples de escribir que los compiladores para los lenguajes de alto nivel, y han estado disponibles desde los aos 1950. Los ensambladores modernos, especialmente para las arquitecturas basadas en RISC, tales como MIPS, Sun SPARC, y HP PA-RISC, as como tambin para el x86 (-64), optimizan la planificacin de instrucciones para explotar la segmentacin del CPU eficientemente. En los compiladores para lenguajes de alto nivel, son el ltimo paso antes de generar el cdigo ejecutable.
[editar] Nmero de pasos

Hay dos tipos de ensambladores basados en cuntos pasos a travs de la fuente son necesarios para producir el programa ejecutable.

Los ensambladores de un solo paso pasan a travs del cdigo fuente una vez y asumen que todos los smbolos sern definidos antes de cualquier instruccin que los refiera. Los ensambladores del dos pasos crean una tabla con todos los smbolos y sus valores en el primer paso, despus usan la tabla en un segundo paso para generar cdigo. El ensamblador debe por lo menos poder determinar la longitud de cada instruccin en el primer paso para que puedan ser calculadas las direcciones de los smbolos.

La ventaja de un ensamblador de un solo paso es la velocidad, que no es tan importante como lo fue en un momento dados los avances en velocidad y capacidades del computador. La ventaja del ensamblador de dos pasos es que los smbolos pueden ser definidos dondequiera en el cdigo fuente del programa. Esto permite a los programas ser definidos de maneras ms lgicas y ms significativas, haciendo los programas de ensamblador de dos paso ms fciles leer y mantener.2
[editar] Ensambladores de alto nivel

Los ms sofisticados ensambladores de alto nivel proporcionan abstracciones del lenguaje tales como:

Estructuras de control avanzadas Declaraciones e invocaciones de procedimientos/funciones de alto nivel

Tipos de datos abstractos de alto nivel, incluyendo las estructuras/records, uniones, clases, y conjuntos Procesamiento de macros sofisticado (aunque est disponible en los ensambladores ordinarios desde finales 1960 para el IBM/360, entre otras mquinas) Caractersticas de programacin orientada a objetos

[editar] Uso del trmino

Note que, en el uso profesional normal, el trmino ensamblador es frecuentemente usado tanto para referirse al lenguaje ensamblador como tambin al programa ensamblador (que convierte el cdigo fuente escrito en el lenguaje ensamblador a cdigo objeto que luego ser enlazado para producir lenguaje de mquina). Las dos expresiones siguientes utilizan el trmino "ensamblador":

"El CP/CMS fue escrito en ensamblador del IBM S/360" "El ASM-H fue un ensamblador del S/370 ampliamente usado"

La primera se refiere al lenguaje y la segundo se refiere al programa.

[editar] Lenguaje
El lenguaje ensamblador refleja directamente la arquitectura y las instrucciones en lenguaje de mquina de la CPU, y pueden ser muy diferentes de una arquitectura de CPU a otra. Cada arquitectura de microprocesador tiene su propio lenguaje de mquina, y en consecuencia su propio lenguaje ensamblador ya que este se encuentra muy ligado al la estructura del hardware para el cual se programa. Los microprocesadores difieren en el tipo y nmero de operaciones que soportan; tambin pueden tener diferente cantidad de registros, y distinta representacin de los tipos de datos en memoria. Aunque la mayora de los microprocesadores son capaces de cumplir esencialmente las mismas funciones, la forma en que lo hacen difiere y los respectivos lenguajes ensamblador reflejan tal diferencia.
[editar] Instrucciones de CPU

La mayora de los CPU tienen ms o menos los mismos grupos de instrucciones, aunque no necesariamente tienen todas las instrucciones de cada grupo. Las operaciones que se pueden realizar varan de un CPU a otro. Un CPU particular puede tener instrucciones que no tenga otro y viceversa. Los primeros microprocesadores de 8 bits no tenan operaciones para multiplicar o dividir nmeros, por ejemplo, y haba que hacer subrutinas para realizar esas operaciones. Otros CPU puede que no tengan operaciones de punto flotante y habra que hacer o conseguir bibliotecas que realicen esas operaciones. Las instrucciones del CPU pueden agruparse, de acuerdo a su funcionalidad, en: Operaciones con enteros: (de 8, 16, 32 y 64 bits dependiendo de la arquitectura del CPU) Estas son operaciones realizadas por la Unidad aritmtico lgica del CPU

Operaciones aritmticas. Como suma, resta, multiplicacin, divisin, mdulo, cambio de signo Operaciones booleanas. Operaciones lgicas bit a bit como AND, OR, XOR, NOT Operaciones de bits. Como desplazamiento y rotaciones de bits (hacia la derecha o hacia la izquierda, a travs del bit del acarreo o sin l) Comparaciones

Operaciones de mover datos:


Entre los registros y la memoria: Aunque la instruccin se llama "mover", en el CPU, "mover datos" significa en realidad copiar datos, desde un origen a un destino, sin que el dato desaparezca del origen. Se pueden mover valores:

desde un registro a otro desde un registro a un lugar de la memoria desde un lugar de la memoria a un registro desde un lugar a otro de la memoria un valor inmediato a un registro un valor inmediato a un lugar de memoria

Operaciones de stack:

PUSH (escribe datos hacia el tope del stack) POP (lee datos desde el tope del stack)

Operaciones de entrada/salida: Son operaciones que mueven datos de un registro, desde y hacia un puerto; o de la memoria, desde y hacia un puerto

INPUT Lectura desde un puerto de entrada OUTPUT Escritura hacia un puerto de salida

Operaciones para el control del flujo del programa:


Llamadas y retornos de subrutinas Llamadas y retornos de interrupciones Saltos condicionales de acuerdo al resultado de la comparaciones Saltos incondicionales

Operaciones con nmeros reales: El estndar para las operaciones con nmeros reales en los CPU est definido por el IEEE 754. Un CPU puede tener operaciones de punto flotante con nmeros reales mediante el coprocesador numrico (si lo hay), como las siguientes:

Operaciones aritmticas. Suma, resta, multiplicacin, divisin, cambio de signo, valor absoluto, parte entera Operaciones trascendentales o Operaciones trigonomtricas. Seno, coseno, tangente, arcotangente o Operaciones con logaritmos, potencias y races Otras

El lenguaje ensamblador tiene mnemnicos para cada una de las instrucciones del CPU en adicin a otros mnemnicos a ser procesados por el programa ensamblador (como por ejemplo macros y otras sentencias en tiempo de ensamblado).
[editar] Ensamblado

La transformacin del lenguaje ensamblador en cdigo mquina la realiza un programa ensamblador, y la traduccin inversa la puede efectuar un desensamblador. A diferencia de los lenguajes de alto nivel, aqu hay usualmente una correspondencia 1 a 1 entre las instrucciones simples del ensamblador y el lenguaje de mquina. Sin embargo, en algunos casos, un ensamblador puede proveer "pseudo instrucciones" que se expanden en un cdigo de mquina ms extenso a fin de proveer la funcionalidad necesaria y simplificar la programacin. Por ejemplo, para un cdigo mquina condicional como "si X mayor o igual que", un ensamblador puede utilizar una pseudoinstruccin al grupo "haga si menor que", y "si = 0" sobre el resultado de la condicin anterior. Los Ensambladores ms completos tambin proveen un rico lenguaje de macros que se utiliza para generar cdigo ms complejo y secuencias de datos. Para el mismo procesador y el mismo conjunto de instrucciones de CPU, diferentes programas ensambladores pueden tener, cada uno de ellos, variaciones y diferencias en el conjunto de mnemnicos o en la sintaxis de su lenguaje ensamblador. Por ejemplo, en un lenguaje ensamblador para la arquitectura x86, se puede expresar la instruccin para mover 5 al registro AL de la siguiente manera: MOV AL, 5, mientras que para otro ensamblador para la misma arquitectura se expresara al revs: MOV 5, AL. Ambos lenguajes ensambladores haran exactamente lo mismo, solo que est expresado de manera diferente. El primero usa la sintaxis de Intel, mientras que el segundo usa la sintaxis de AT&T El uso del ensamblador no resuelve definitivamente el problema de cmo programar un sistema basado en microprocesador de modo sencillo ya que para hacer un uso eficiente del mismo, hay que conocer a fondo el microprocesador, los registros de trabajo de que dispone, la estructura de la memoria, y muchas cosas ms referentes a su estructura bsica de funcionamiento.
[editar] Ejemplo

Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden al flujo de rdenes ejecutables por un microprocesador. Por ejemplo, en el lenguaje ensamblador para un procesador x86: La sentencia

MOV AL, 061h

Asigna el valor hexadecimal 61 (97 decimal) al registro "AL". El programa ensamblador lee la sentencia de arriba y produce su equivalente binario en lenguaje de mquina

Binario: 10110000 01100001 (hexadecimal: B061)

El mnemnico MOV es un cdigo de operacin u "opcode". El opcode es seguido por una lista de argumentos o parmetros, completando una tpica instruccin de ensamblador. En el ejemplo, AL es un registro de 8 bits del procesador, al cual se le asignar el valor hexadecimal 61 especificado. El cdigo de mquina generado por el ensamblador consiste de 2 bytes. El primer byte contiene empaquetado la instruccin MOV y el cdigo del registro hacia donde se va a mover el dato:
10110 000 01100001 | | | | | +---- Nmero 61h en binario | | | +--- Registro AL +-------- Intruccin MOV

En el segundo byte se especifica el nmero 61h, escrito en binario como 01100001, que se asignar al registro AL, quedando la sentencia ejecutable como:
10110000 01100001

La cual puede ser entendida y ejecutada directamente por el procesador.

[editar] Diseo del lenguaje


[editar] 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

[editar] 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 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. LD HL, BC
3

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. [editar] 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 como pseudo-ops. [editar] Directivas del ensamblador Los directivas del ensamblador, tambin llamadas los pseudo opcodes, pseudooperaciones o pseudo-ops, son instrucciones que son ejecutadas por un ensamblador en el tiempo de ensamblado, no por un CPU en el tiempo de ejecucin. Pueden hacer al ensamblado del programa dependiente de parmetros entrados por un programador, de modo que un programa pueda ser ensamblado de diferentes maneras, quizs para diversos aplicaciones. Tambin pueden ser usadas para manipular la presentacin de un programa para hacerlo ms fcil leer y mantener. Por ejemplo, las directivas pudieran ser usadas para reservar reas de almacenamiento y opcionalmente su para asignar su contenido inicial. Los nombres de las directivas a menudo comienzan con un punto para distinguirlas de las instrucciones de mquina. Los ensambladores simblicos le permiten a los programadores asociar nombres arbitrarios (etiquetas o smbolos) a posiciones de memoria. Usualmente, cada constante y variable tiene un nombre para que las instrucciones pueden referir a esas ubicaciones por nombre, as promoviendo el cdigo autodocumentado. En el cdigo ejecutable, el nombre de cada subprograma es asociado a su punto de entrada, as que cualquier llamada a un subprograma puede usar su nombre. Dentro de subprogramas, a los destinos GOTO se le dan etiquetas. Algunos ensambladores soportan smbolos locales que son lxicamente distintos de los smbolos normales (ej, el uso de "10$" como un destino GOTO). La mayoraPlantilla:Dubious de los ensambladores proporcionan un manejo flexible de smbolos, permitiendo a los programadores manejar diversos espacios de nombres, calcular automticamente offsets dentro de estructuras de datos, y asignar etiquetas que refieren a valores literales o al resultado de clculos simples realizados por el ensamblador. Las etiquetas tambin pueden ser usadas para inicializar constantes y variables con direcciones relocalizables. Los lenguajes ensambladores, como la mayora de los otros lenguajes de computador, permiten que comentarios sean aadidos al cdigo fuente, que son ignorados por el programa ensamblador. El buen uso de los comentarios es an ms importante con cdigo ensamblador que con lenguajes de alto nivel, pues el significado y el propsito de una secuencia de instrucciones es ms duro de descifrar a partir del cdigo en s mismo. El uso sabio de estas facilidades puede simplificar grandemente los problemas de codificar y mantener el cdigo de bajo nivel. El cdigo fuente de lenguaje ensamblador crudo generado por compiladores o desensambladores - cdigo sin ningn comentario, ni smbolos con algn sentido, ni definiciones de datos - es muy difcil de leer cuando deben hacerse cambios.

[editar] Macros

Muchos ensambladores soportan macros predefinidos, y otras soportan macros definidos (y repetidamente redefinibles) por el programador que implican secuencias de lneas del texto en las cuales las variables y las constantes estn empotradas. Esta secuencia de lneas de texto puede incluir opcodes o directivas. Una vez un macro ha sido definido, su nombre puede ser usado en lugar de un mnemnico. Cuando el ensamblador procesa tal sentencia, reemplaza la sentencia por las lneas del texto asociadas a ese macro, entonces las procesa como si hubieran existido en el archivo del cdigo fuente original (incluyendo, en algunos ensambladores, la expansin de cualquier macro que exista en el texto de reemplazo). Puesto que las macros pueden tener nombres "cortos" pero se expanden a varias o de hecho muchas lneas de cdigo, pueden ser usados para hacer que los programas en lenguaje ensamblador parezcan ser mucho ms cortos, requiriendo menos lneas de cdigo fuente, como sucede con los lenguajes de alto nivel. Tambin pueden ser usados para aadir niveles de estructura ms altos a los programas ensamblador, opcionalmente introducen cdigo de depuracin empotrado va parmetros y otras caractersticas similares. Muchos ensambladores tienen macros incorporados (o predefinidos) para las llamadas de sistema y otras secuencias especiales de cdigo, tales como la generacin y el almacenamiento de los datos realizados a travs de avanzadas operaciones bitwise y booleanas usadas en juegos, software de seguridad, gestin de datos, y criptografa. Los macro ensambladores a menudo permiten a los macros tomar parmetros. Algunos ensambladores incluyen lenguajes macro muy sofisticados, incorporando elementos de lenguajes de alto nivel tales como parmetros opcionales, variables simblicas, condiciones, manipulaciones de strings operaciones aritmticas, todos usables durante la ejecucin de un macro dado, y permitiendo a los macros guardar el contexto o intercambiar informacin. As un macro puede generar un gran nmero de instrucciones o definiciones de datos en lenguaje ensamblador, basadas en los argumentos del macro. Esto pudiera ser usado para generar, por ejemplo, estructuras de datos de estilo de records o bucles "desenrrollados", o podra generar algoritmos enteros basados en parmetros complejos. Una organizacin, usando lenguaje ensamblador, que ha sido fuertemente extendido usando tal suite de macros, puede ser considerada que se est trabajando en un lenguaje de alto nivel, puesto que tales programadores no estn trabajando con los elementos conceptuales de ms bajo nivel del computador. Las macros fueron usados para adaptar sistemas de software de gran escala para clientes especficos en la era del mainframe, y tambin fueron usados por el personal del cliente para satisfacer las necesidades de sus patrones haciendo versiones especficas de los sistemas operativos del fabricante. Esto fue hecho, por ejemplo, por los programadores de sistema que trabajaban con el Conversational Monitor System / Virtual Machine (CMS/VM) de IBM y con los add-ons "real time transaction processing" de IBM, CICS, Customer Information Control System, y ACP/TPF, el airline/financial system que comenz en los aos 1970 y todava corre con muchos sistemas de reservaciones computarizados (CRS) y sistemas de tarjeta de crdito de hoy.

Tambin es posible usar solamente las habilidades de procesamiento de macros de un ensamblador para generar cdigo escrito en lenguajes completamente diferentes, por ejemplo, para generar una versin de un programa en COBOL usando un programa macro ensamblador puro conteniendo lneas de cdigo COBOL dentro de operadores de tiempo ensamblaje dando instrucciones al ensamblador para generar cdigo arbitrario. Esto era porque, como en los aos 1970 fue observado, el concepto de "procesamiento de macro" es independiente del concepto de "ensamblaje", siendo el anterior, en trminos modernos, ms un procesamiento de textos, que una generacin de cdigo objeto. El concepto de procesamiento de macro apareci, y aparece, en el lenguaje de programacin C, que soporta "instrucciones de preprocesador" de fijar variables, y hace pruebas condicionales en sus valores. Observe que a diferencia de ciertos macroprocesadores previos dentro de los ensambladores, el preprocesador de C no es Turing-completo porque careca la capacidad de bucle o "go to", esto ltimo permitiendo a los programas hacer bucles. A pesar del poder del procesamiento macro, ste dej de usarse en muchos lenguajes de alto nivel (una importante excepcin es C/C++) mientras que segua siendo perenne para los ensambladores. Esto era porque muchos programadores estaban bastante confundidos por la sustitucin de parmetros macro y no distinguan la diferencia entre procesamiento macro, el ensamblaje y la ejecucin.Plantilla:Dubious La sustitucin de parmetros macro es estrictamente por nombre: en el tiempo de procesamiento macro, el valor de un parmetro es sustituido textualmente por su nombre. La clase ms famosa de bugs resultantes era el uso de un parmetro que en s mismo era una expresin y no un nombre primario cuando el escritor macro esperaba un nombre. En el macro:
foo: macro a load a*b

la intencin era que la rutina que llama proporcionara el nombre de una variable, y la variable o constante "global" b sera usada para multiplicar a "a". Si foo es llamado con el parmetro a-c, ocurre la expansin macro load a-c*b. Para evitar cualquier posible ambigedad, los usuarios de macro procesadores pueden encerrar en parntesis los parmetros formales dentro de las definiciones de macros, o las rutinas que llaman pueden envolver en parntesis los parmetos de entrada.4 As, el macro correcto, con los parntesis, sera:
foo: macro a load (a)*b

y su expansin, dara como resultado: load (a-c)*b El PL/I y el C/C++ ofrecen macros, pero la esta facilidad solo puede manipular texto. Por otra parte, los lenguajes homoicnicos, tales como Lisp, Prolog, y Forth, retienen el poder de los macros de lenguaje ensamblador porque pueden manipular su propio cdigo como datos.

[editar] Soporte para programacin estructurada

Algunos ensambladores han incorporado elementos de programacin estructurada para codificar el flujo de la ejecucin. El ejemplo ms temprano de este acercamiento estaba en el Concept-14 macro set, originalmente propuesto por el Dr. H.D. Mills (marzo de 1970), e implementado por Marvin Kessler en la Federal Systems Division de IBM, que extendi el macro ensamblador del S/360 con bloques de control de flujo IF/ELSE/ENDIF y similares.5 Esto era una manera de reducir o eliminar el uso de operaciones GOTO en el cdigo en lenguaje ensamblador, uno de los principales factores que causaban cdigo espagueti en el lenguaje ensamblador. Este acercamiento fue ampliamente aceptado a principios de los aos 1980 (los ltimos das del uso de lenguaje ensamblador en gran escala). Un curioso diseo fue A-natural, un ensamblador "orientado a la corriente" (streamoriented) para los procesadores 8080/Z80[cita requerida] de Whitesmiths Ltd. (desarrolladores del sistema operativo Idris, similar al Unix), y lo que fue reportado como el primer compilador C comercial). El lenguaje fue clasificado como un ensamblador, porque trabajaba con elementos de mquina crudos tales como opcodes, registros, y referencias de memoria; pero incorporaba una sintaxis de expresin para indicar el orden de ejecucin. Los parntesis y otros smbolos especiales, junto con construcciones de programacin estructurada orientadas a bloques, controlaban la secuencia de las instrucciones generadas. A-natural fue construido como el lenguaje objeto de un compilador C, en vez de la codificacin manual, pero su sintaxis lgica gan algunos seguidores. Ha habido poca demanda aparente para ensambladores ms sofisticados debido a la declinacin del desarrollo de lenguaje ensamblador de larga escala.6 A pesar de eso, todava se estn desarrollando y aplicando en casos donde las limitaciones de recursos o las particularidades en la arquitectura de sistema objetivo previenen el efectivo uso de lenguajes de alto nivel.7

[editar] Uso del lenguaje ensamblador


[editar] Perspectiva histrica

Los lenguajes ensambladores fueron primero desarrollados en los aos 1950, cuando fueron referidos como lenguajes de programacin de segunda generacin. Por ejemplo, el SOAP (Symbolic Optimal Assembly Program) era un lenguaje ensamblador de 1957 para el computador IBM 650. Los lenguajes ensambladores eliminaron mucha de la propensin a errores y del consumo de tiempo de la programacin de los lenguajes de primera generacin que se necesitaba con los primeros computadores, liberando a los programadores del tedio tal como recordar cdigos numricos y clculo de direcciones. Una vez fueron ampliamente usados para todo tipo de programacin. Sin embargo, por los aos 1980 (1990 en los microcomputadores), su uso haba sido en gran parte suplantado por los lenguajes de alto nivel,[cita requerida] en la bsqueda de una mejorada productividad en programacin. Hoy en da, aunque el lenguaje ensamblador es casi siempre manejado y generado por los compiladores, todava se usa para la manipulacin directa del hardware, acceso a instrucciones especializadas del procesador, o para resolver problemas de desempeo crtio. Los usos tpicos son drivers de dispositivo, sistemas embebidos de bajo nivel, y sistemas de tiempo real.

Histricamente, un gran nmero de programas han sido escritos enteramente en lenguaje ensamblador. Los sistemas operativos fueron casi exclusivamente escritos en lenguaje ensamblador hasta la aceptacin mplia del lenguaje de programacin C en los aos 1970 y principios de los 1980. Tambin, muchas aplicaciones comerciales fueron escritas en lenguaje ensamblador, incluyendo una gran cantidad del software escrito por grandes corporaciones para mainframes de IBM. Los lenguajes COBOL y FORTRAN eventualmente desplazaron mucho de este trabajo, aunque un nmero de organizaciones grandes conservaran las infraestructuras de aplicaciones en lenguaje ensamblador hasta bien entrados los aos 1990. La mayora de los primeros microcomputadores confiaron en el lenguaje ensamblador codificado a mano, incluyendo la mayora de los sistemas operativos y de las aplicaciones grandes. Esto era porque estos sistemas tenan limitaciones severas de recursos, impusieron idiosincrticas arquitecturas de memoria y de pantalla, y proporcionaron servicios de sistema limitados y con errores. Quizs ms importante era la falta de compiladores de primera clase de lenguajes de alto nivel adecuados para el uso en el microcomputador. Un factor psicolgico tambin pudo haber jugado un papel: la primera generacin de programadores de los microcomputadores conserv una actitud de aficionado de "alambres y alicates". En un contexto ms comercial, las ms grandes razones para usar el lenguaje ensamblador era hacer programas con mnimo tamao, mnima sobrecarga, mayor velocidad y confiabilidad. Los tpicos ejemplos de programas grandes en lenguaje ensamblador de ese tiempo son los sistemas operativos IBM PC DOS y aplicaciones tempranas tales como la hoja de clculo Lotus 1-2-3, y casi todos los juegos populares para la familia Atari 800 de computadores personales. Incluso en los aos 1990, la mayora de los videojuegos de cnsola fueron escritos en ensamblador, incluyendo la mayora de los juegos para la Mega Drive/Genesis y el Super Nintendo Entertainment System.[cita requerida] Segn algunos insiders de la industria, el lenguaje ensamblador era el mejor lenguaje de programacin a usar para obtener el mejor desempeo del Sega Saturn, una cnsola para la cual era notoriamente desafiante desarrollar y programar juegos.8 El popular juego de arcade NBA Jam (1993) es otro ejemplo. El ensamblador ha sido por largo trecho, el lenguaje de desarrollo primario en los computadores hogareos Commodore 64, Atari ST, as como el ZX Spectrum. Esto fue as en gran parte porque los dialectos del BASIC en estos sistemas ofrecieron insuficiente velocidad de ejecucin, as como insuficientes caractersticas para aprovechar completamente el hardware disponible. Algunos sistemas, ms notablemente el Amiga, incluso tienen IDEs con caractersticas de depuracin y macros altamente avanzados, tales como el freeware ASM-One assembler, comparable a las del Microsoft Visual Studio (el ASM-Uno precede al Microsoft Visual Studio). El ensamblador para el VIC-20 fue escrito por Don French y publicado por French Silk. Con 1639 bytes de longitud, su autor cree que es el ms pequeo ensamblador simblico jams escrito. El ensamblador soportaba el direccionamiento simblico usual y la definicin de cadenas de caracteres o cadenas hexadecimales. Tambin permita expresiones de direcciones que podan combinarse con las operaciones de adicin, substraccin, multiplicacin, divisin, AND lgico, OR lgico, y exponenciacin.9

[editar] Uso actual

Han habido siempre debates sobre la utilidad y el desempeo del lenguaje ensamblador relativo a lenguajes de alto nivel. El lenguaje ensamblador tiene nichos especficos donde es importante; ver abajo. Pero, en general, los modernos compiladores de optimizacin[cita requerida] para traducir lenguajes de alto nivel en cdigo que puede correr tan rpidamente como el lenguaje ensamblador escrito a mano, a pesar de los contraejemplos que pueden ser encontrados.10 11 12 La complejidad de los procesadores modernos y del subsistema de memoria hace la optimizacin efectiva cada vez ms difcil para los compiladores, as como para los programadores en ensamblador.13 14 Adicionalmente, y para la consternacin de los amantes de la eficiencia, el desempeo cada vez mayor del procesador ha significado que la mayora de los CPU estn desocupados la mayor parte del tiempo, con retardos causados por embotellamientos predecibles tales como operaciones de entrada/salida y paginacin de memoria. Esto ha hecho la velocidad de ejecucin cruda del cdigo un no-problema para muchos programadores. 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 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 autombiles, 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 vectorizadas 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 lineal con BLAS10 15 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 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

Sin embargo, el lenguaje ensamblador es todava enseado en la mayora de los programas de ciencias de la computacin e ingeniera electrnica. Aunque hoy en da, pocos programadores trabajan regularmente con el lenguaje ensamblador como una herramienta, los conceptos fundamentales continan siendo muy importantes. Tales tpicos fundamentales, como aritmtica binaria, asignacin de memoria, procesamiento del stack, codificacin de conjunto de caracteres, procesamiento de interrupciones, y diseo de compiladores, seran duros de estudiar en detalle sin la comprensin de cmo el computador opera a nivel del hardware. Puesto que el comportamiento del computador es fundamentalmente definido por su conjunto de instrucciones, la manera lgica de aprender tales conceptos es estudiar un lenguaje ensamblador. La mayora de los computadores modernos tienen un conjunto de instrucciones similares. Por lo tanto, estudiar un solo lenguaje ensamblador es suficiente para aprender: i) los conceptos bsicos; ii) reconocer situaciones donde el uso de lenguaje ensamblador puede ser apropiado; y iii) ver cmo el cdigo ejecutable eficiente puede ser creado por los lenguajes de alto nivel18
[editar] Aplicaciones tpicas

El lenguaje ensamblador hard-coded es tpicamente usado en el ROM de arranque del sistema (BIOS en los sistemas compatible IBM PC). Este cdigo de bajo nivel es usado,

entre otras cosas, para inicializar y probar el hardware del sistema antes de cargar el sistema operativo, y est almacenado en el ROM. Una vez que ha tomado lugar un cierto nivel de inicializacin del hardware, la ejecucin se transfiere a otro cdigo, tpicamente escrito en lenguajes de alto nivel; pero el cdigo corriendo inmediatamente despus de que es aplicada la energa usualmente est escrito en lenguaje ensamblador. Lo mismo es cierto para los boot loaders. Muchos compiladores traducen lenguajes de alto nivel a lenguaje ensamblador primero, antes de la compilacin completa, permitiendo que el cdigo en ensamblador sea visto para propsitos de depuracin y optimizacin. Lenguajes de relativo bajo nivel, como C, con frecuencia proveen sintaxis especial para empotrar lenguaje ensamblador en cada plataforma de hardware. El cdigo portable del sistema entonces puede usar estos componentes especficos a un procesador a travs de una interface uniforme. El lenguaje ensamblador tambin es valioso en ingeniera inversa, puesto que muchos programas solamente son distribuidos en una forma de cdigo de mquina. El cdigo de mquina es usualmente fcil de trasladar hacia lenguaje ensamblador para luego ser cuidadosamente examinado en esta forma, pero es muy difcil de trasladar hacia un lenguaje de alto nivel. Herramientas como Interactive Disassembler, hacen uso extenso del desensamblador para tales propsitos. Un nicho que hace uso del lenguaje ensamblador es el demoscene. Ciertas competiciones requieren a los concursantes restringir sus creaciones a un muy pequeo tamao (ej, 256 bytes, 1 KB, 4 KB 64 KB), y el lenguaje ensamblador es el lenguaje de preferencia para alcanzar este objetivo.19 Cuando los recursos son una preocupacin, es una necesidad la codificacin en ensamblador, especialmente en sistemas constreidos por el procesamiento del CPU, como los primeros modelos del Amiga, y el Commodore 64. El cdigo optimizado en ensamblador es escrito "a mano" por los programadores en un intento de minimizar el nmero de ciclos de CPU usados. Las limitaciones del CPU son tan grandes que cada ciclo cuenta. Usar tales mtodos ha habilitado, a sistemas como el Commodore 64, para producir grficos en 3D en tiempo real con efectos avanzados, una hazaa que puede ser considerada improbable o incluso imposible para un sistema con un procesador de 0.99 MHz.[cita requerida]

[editar] Detalles adicionales


Para un determinado computador personal, mainframe, sistema empotrado, y cnsola de juegos, tanto del pasado como del presente, ha sido escrito al menos uno, y posiblemente docenas de ensambladores. Para algunos ejemplos, vea la lista de ensambladores. En los sistemas Unix, el ensamblador es llamado tradicionalmente as, aunque no es un simple cuerpo de cdigo, siendo tpicamente escrito uno nuevo por cada port. Un nmero de variantes de Unix usan el GAS Dentro de los grupos de procesadores, cada ensamblador tiene su propio dialecto. A veces, algunos ensambladores pueden leer el dialecto de otro, por ejemplo, TASM puede leer el viejo cdigo del MASM, pero no al revs. FASM y NASM tienen una sintaxis similar, pero cada uno soporta diferentes macros que pueden ser difcil de

trasladar de uno al otro. Las cosas bsicas son siempre las mismas, pero las caractersticas avanzadas sern diferentes20 Tambin, los lenguajes ensambladores a veces pueden ser portables a travs de diferentes sistemas operativos en el mismo tipo de CPU. Las convenciones de llamadas entre los sistemas operativos con frecuencia difieren ligeramente o en nada. y con cuidado es posible ganar portabilidad en el lenguaje ensamblador, usualmente al enlazar con una biblioteca de lenguaje C que no cambia entre sistemas operativos. Un simulador de conjunto de instrucciones (que idealmente sera escrito en lenguaje ensamblador) puede, en teora, procesar el cdigo objeto/binario de cualquier ensamblador) para lograr la portabilidad incluso a travs de plataformas (con una sobrecargue no mayor que la de un interpretador de bytecode tpico). Esto es esencialmente lo que logra el microcdigo cuando una plataforma de hardware cambia internamente. Por ejemplo, muchas cosas en libc dependen del preprocesador para hacer, al programa antes de compilar, cosas que son especficas del sistema operativo o especficas del C. De hecho, algunas funciones y smbolos ni siquiera estn garantizados que existan fuera del preprocesador. Peor an, el tamao y el orden de los campos de las estructuras, tanto como el tamao de ciertas typedefs como off_t, no estn disponibles en lenguaje ensamblador sin la ayuda de un script de configuracin, y difieren incluso entre versiones de Linux, haciendo imposible portar llamadas de funciones en libc diferentes de los que toman simples enteros o punteros como parmetros. Para manejar estos problemas, el proyecto FASMLIB provee una biblioteca de lenguaje ensamblador portable para las plataformas Win32 y Linux, pero todava est muy incompleta.21 Algunos lenguajes de muy alto nivel, como C y Borland Pascal, soportan ensamblado en lnea, donde relativamente secciones cortas de cdigo en ensamblador puede ser empotradas dentro del cdigo del lenguaje de alto nivel. El lenguaje Forth comnmente contiene un ensamblador usado para codificar palabras. La mayora de la gente usa un emulador para depurar sus programas en lenguaje ensamblador.

[editar] Ejemplos de lenguaje ensamblador


[editar] Ejemplo para la arquitectura x86

El siguiente es un ejemplo del programa clsico Hola mundo escrito para la arquitectura de procesador x86 (bajo el sistema operativo DOS).
; --------------------------------------------; Programa que imprime un string en la pantalla ; --------------------------------------------.model small ; modelo de memoria .stack ; segmento del stack .data ; segmento de datos Cadena1 DB 'Hola Mundo.$' ; string a imprimir (finalizado en $) .code ; segmento del cdigo ; ---------------------------------------------

; Inicio del programa ; --------------------------------------------programa: MOV AX, @data ; carga en AX la direccin del segmento de datos MOV DS, AX ; mueve la direccin al registro de segmento por medio de AX MOV DX, offset Cadena1 ; mueve a DX la direccin del string a imprimir MOV AH, 9 ; AH = cdigo de la funcin del MS DOS para imprimir un string en la pantalla INT 21h ; llamada al MS DOS para imprimir un string en la pantalla INT 20h ; llamada al MS DOS para finalizar el programa end programa

[editar] Ejemplo para el computador virtual (POCA)

Una seleccin de instrucciones para una computadora virtual22 ) con las correspondientes direcciones de memoria en las que se ubicarn las instrucciones. Estas direcciones NO son estticas. Cada instruccin se acompaa del cdigo en lenguaje ensamblador generado (cdigo objeto) que coincide con la arquitectura de computador virtual, o conjunto de instrucciones ISA.
Cdigo mquina23

Dir.

Etiqueta

Instruccin

.begin

.org 2048

a_start

.equ 3000

2048

ld length,%

2064

be done

00000010 10000000 00000000 00000110

2068

addcc %r1,-4,%r1

10000010 10000000 01111111 11111100

2072

addcc %r1,%r2,%r4 10001000 10000000 01000000 00000010

2076

ld %r4,%r5

11001010 00000001 00000000 00000000

2080

ba loop

00010000 10111111 11111111 11111011

2084

addcc %r3,%r5,%r3 10000110 10000000 11000000 00000101

2088 done:

jmpl %r15+4,%r0

10000001 11000011 11100000 00000100

2092 length:

20

00000000 00000000 00000000 00010100

2096 address: a_start

00000000 00000000 00001011 10111000

.org a_start

3000

a:</tt

[editar] Ejemplo para el C Intel 8051

Cdigo en lenguaje ensamblador para C Intel 80C51:


ORG 8030H SETB TR0 JNB uSEG,T05SEG CLR TR0 CPL uSEG MOV R1,DPL MOV R2,DPH CJNE R2,#07H,T05SEG CJNE R1,#78H,T05SEG MOV DPTR,#0000H RET

T05SEG: ;esta subrutina es utilizada ;para realizar una cuenta de ;0,5 segundos mediante la ;interrupcin del timer 0.

[editar] Ejemplo para el Microchip PIC16F84

Cdigo en lenguaje ensamblador para el microcontrolador 16F84 de Microchip:


ORG Inicio 0 STATUS,RP0 PORTB 0xFF PORTA STATUS,RP0 PORTA,W

bsf clrf movlw movwf bcf Principal movf

movwf movf btfsc goto sublw btfss END

Contador Contador,F STATUS,Z PuntoDecimal d'9' STATUS,C

Ncleo (informtica)
De Wikipedia, la enciclopedia libre Saltar a navegacin, bsqueda Para otros usos de este trmino, vase Ncleo.

En informtica, un ncleo o kernel (de la raz germnica Kern) es un software que acta de sistema operativo.1 2 Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma ms bsica, es el encargado de gestionar recursos, a travs de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, tambin se encarga de decidir qu programa podr hacer uso de un dispositivo de hardware y durante cunto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los ncleos suelen implementar una serie de abstracciones del hardware. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso al programador.

Contenido
[ocultar]

1 Tcnica 2 Generalidades o 2.1 Funciones generalmente ejercidas por un ncleo o 2.2 Unix 3 Tipos de ncleo o 3.1 Microncleos o 3.2 Ncleos monolticos en contraposicin a microncleos o 3.3 Ncleos hbridos (microncleos modificados) o 3.4 Exoncleos 4 Referencias 5 Vase tambin 6 Enlaces externos

[editar] Tcnica

Cuando se aplica voltaje al procesador de un dispositivo electrnico, ste ejecuta un reducido cdigo en lenguaje ensamblador localizado en una direccin concreta en la memoria ROM (direccin de reset) y conocido como reset code, que a su vez ejecuta una rutina con la que se inicializa el hardware que acompaa al procesador. Tambin en esta fase suele inicializarse el controlador de las interrupciones. Finalizada esta fase se ejecuta el cdigo de arranque (startup code), tambin cdigo en lenguaje ensamblador, cuya tarea ms importante es ejecutar el programa principal (main()) del software de la aplicacin.3

[editar] Generalidades

Una visin tpica de la arquitectura de computadores como una serie de capas de abstraccin: hardware, firmware, lenguaje de mquina, ncleo, software de sistema y aplicaciones4

En informtica, el ncleo es el programa informtico que se asegura de:


La comunicacin entre los programas que solicitan recursos y el hardware. Gestin de los distintos programas informticos (tareas) de una mquina. Gestin del hardware (memoria, procesador, perifrico, forma de almacenamiento, etc.)

La mayora de las interfaces de usuario se construyen en torno al concepto de ncleo. La existencia de un ncleo, es decir, de un nico programa responsable de la comunicacin entre el hardware y el programa informtico, resulta de compromisos complejos referentes a cuestiones de resultados, seguridad y arquitectura de los procesadores. El ncleo tiene grandes poderes sobre la utilizacin de los recursos materiales (hardware), en particular, de la memoria.

[editar] Funciones generalmente ejercidas por un ncleo

Los ncleos tienen como funciones bsicas garantizar la carga y la ejecucin de los procesos, las entradas/salidas y proponer una interfaz entre el espacio ncleo y los programas del espacio del usuario. Aparte de las funcionalidades bsicas, el conjunto de las funciones de los puntos siguientes (incluidos los pilotos materiales, las funciones de redes y sistemas de ficheros o los servicios) necesariamente no son proporcionados por un ncleo de sistema de explotacin. Pueden establecerse estas funciones del sistema de explotacin tanto en el espacio usuario como en el propio ncleo. Su implantacin en el ncleo se hace en el nico objetivo de mejorar los resultados. En efecto, segn la concepcin del ncleo, la misma funcin llamada desde el espacio usuario o el espacio ncleo tiene un coste temporal obviamente diferente. Si esta llamada de funcin es frecuente, puede resultar til integrar estas funciones al ncleo para mejorar los resultados.
[editar] Unix

Un ncleo Unix es un programa escrito casi en su totalidad en lenguaje C, con excepcin de una parte del manejo de interrupciones, expresada en el lenguaje ensamblador del procesador en el que opera. Las funciones del ncleo son permitir la existencia de un ambiente en el que sea posible atender a varios usuarios y mltiples tareas en forma concurrente, repartiendo al procesador entre todos ellos, e intentando mantener en grado ptimo la atencin individual. El ncleo opera como asignador de recursos para cualquier proceso que necesite hacer uso de las facilidades de cmputo.

Creacin de procesos, asignacin de tiempos de atencin y sincronizacin. Asignacin de la atencin del procesador a los procesos que lo requieren. Administracin de espacio en el sistema de archivos, que incluye: acceso, proteccin y administracin de usuarios; comunicacin entre usuarios y entre procesos, y manipulacin de E/S y administracin de perifricos. Supervisin de la transmisin de datos entre la memoria principal y los dispositivos perifricos.

Reside siempre en la memoria principal y tiene el control sobre la computadora, por lo que ningn otro proceso puede interrumpirlo; slo pueden llamarlo para que proporcione algn servicio de los ya mencionados. Un proceso llama al ncleo mediante mdulos especiales conocidos como llamadas al sistema. Consta de dos partes principales: la seccin de control de procesos y la de control de dispositivos. La primera asigna recursos, programas, procesos y atiende sus requerimientos de servicio; la segunda, supervisa la transferencia de datos entre la memoria principal y los dispositivos del ordenador. En trminos generales, cada vez que algn usuario oprime una tecla de una terminal, o que se debe leer o escribir informacin del disco magntico, se interrumpe al procesador central y el ncleo se encarga de efectuar la operacin de transferencia.

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

[editar] Tipos de ncleo

No necesariamente se necesita un ncleo para usar una computadora. Los programas pueden cargarse y ejecutarse directamente en una computadora vaca, siempre que sus autores quieran desarrollarlos sin usar ninguna abstraccin (informatica) del hardware ni ninguna ayuda del sistema operativo. sta era la forma normal de usar muchas de las primeras computadoras: para usar distintos programas se tena que reiniciar y reconfigurar la computadora cada vez. Con el tiempo, se empez a dejar en memoria (an entre distintas ejecuciones) pequeos programas auxiliares, como el cargador y el depurador, o se cargaban desde memoria de slo lectura. A medida que se fueron desarrollando, se convirtieron en los fundamentos de lo que llegaran a ser los primeros ncleos de sistema operativo. Hay cuatro grandes tipos de ncleos:

Los ncleos monolticos facilitan abstracciones del hardware subyacente realmente potentes y variadas. Los microncleos (en ingls microkernel) proporcionan un pequeo conjunto de abstracciones simples del hardware, y usan las aplicaciones llamadas servidores para ofrecer mayor funcionalidad.5 Los ncleos hbridos (microncleos modificados) son muy parecidos a los microncleos puros, excepto porque incluyen cdigo adicional en el espacio de ncleo para que se ejecute ms rpidamente. Los exoncleos no facilitan ninguna abstraccin, pero permiten el uso de bibliotecas que proporcionan mayor funcionalidad gracias al acceso directo o casi directo al hardware.

[editar] Microncleos

Esquema del funcionamiento de un microncleo.


Artculo principal: Microncleo

El enfoque microncleo consiste en definir una abstraccin muy simple sobre el hardware, con un conjunto de primitivas o llamadas al sistema que implementan servicios del sistema operativo mnimos, como la gestin de hilos, el espacio de direccionamiento y la comunicacin entre procesos. El objetivo principal es la separacin de la implementacin de los servicios bsicos y de la poltica de funcionamiento del sistema. Por ejemplo, el proceso de bloqueo de E/S se

puede implementar con un servidor en espacio de usuario ejecutndose encima del microncleo. Estos servidores de usuario, utilizados para gestionar las partes de alto nivel del sistema, son muy modulares y simplifican la estructura y diseo del ncleo. Si falla uno de estos servidores, no se colgar el sistema entero, y se podr reiniciar este mdulo independientemente del resto. Sin embargo, la existencia de diferentes mdulos independientes origina retardos en la comunicacin debido a la copia de variables que se realiza en la comunicacin entre mdulos. Algunos ejemplos de microncleos:

AIX La familia de microncleos L4 El microncleo Mach, usado en GNU Hurd y en Mac OS X BeOS Minix MorphOS QNX RadiOS VSTa Hurd

[editar] Ncleos monolticos en contraposicin a microncleos Artculos principales: Ncleo monoltico y Microncleo

Frecuentemente se prefieren los ncleos monolticos frente a los microncleos debido al menor nivel de complejidad que comporta el tratar con todo el cdigo de control del sistema en un solo espacio de direccionamiento. Por ejemplo, XNU, el ncleo de Mac OS X, est basado en el ncleo Mach 3.0 y en FreeBSD, en el mismo espacio de direccionamiento para disminuir la latencia que comporta el diseo de microncleo convencional. A principios de los aos 90, los ncleos monolticos se consideraban obsoletos. El diseo de Linux como un ncleo monoltico en lugar de como un microncleo fue el tema de una famosa disputa6 entre Linus Torvalds y Andrew Tanenbaum. Los argumentos de ambas partes en esta discusin presentan algunas motivaciones interesantes. Los ncleos monolticos suelen ser ms fciles de disear correctamente, y por lo tanto pueden crecer ms rpidamente que un sistema basado en microncleo, pero hay casos de xito en ambos bandos. Los microncleos suelen usarse en robtica embebida o computadoras mdicas, ya que la mayora de los componentes del sistema operativo residen en su propio espacio de memoria privado y protegido. Esto no sera posible con los ncleos monolticos, ni siquiera con los modernos que permiten cargar mdulos del ncleo. Aunque Mach es el microncleo generalista ms conocido, se han desarrollado otros microncleos con propsitos ms especficos. L3 fue creado para demostrar que los microncleos no son necesariamente lentos. La familia de microncleos L4 es la descendiente de L3, y una de sus ltimas implementaciones, llamada Pistachio, permite

ejecutar Linux simultneamente con otros procesos, en espacios de direccionamiento separados. QNX es un sistema operativo que ha estado disponible desde principios de los aos 80, y tiene un diseo de microncleo muy minimalista. Este sistema ha conseguido llegar a las metas del paradigma del microncleo con mucho ms xito que Mach. Se usa en situaciones en que no se puede permitir que haya fallos de software, lo que incluye desde brazos robticos en naves espaciales, hasta mquinas que pulen cristal donde un pequeo error podra costar mucho dinero. Mucha gente cree que como Mach bsicamente fall en el intento de resolver el conjunto de problemas que los microncleos intentaban subsanar, toda la tecnologa de microncleos es intil. Los partidarios de Mach afirman que sta es una actitud estrecha de miras que ha llegado a ser lo suficientemente popular para que mucha gente la acepte como verdad.
[editar] Ncleos hbridos (microncleos modificados) Artculo principal: Ncleo hbrido

Los ncleos hbridos fundamentalmente son microncleos que tienen algo de cdigo no esencial en espacio de ncleo para que ste se ejecute ms rpido de lo que lo hara si estuviera en espacio de usuario. ste fue un compromiso que muchos desarrolladores de los primeros sistemas operativos con arquitectura basada en microncleo adoptaron antes que se demostrara que los microncleos pueden tener muy buen rendimiento. La mayora de sistemas operativos modernos pertenecen a esta categora, siendo el ms popular Microsoft Windows. XNU, el ncleo de Mac OS X, tambin es un microncleo modificado, debido a la inclusin de cdigo del ncleo de FreeBSD en el ncleo basado en Mach. DragonFlyBSD es el primer sistema BSD que adopta una arquitectura de ncleo hbrido sin basarse en Mach. Algunos ejemplos de ncleos hbridos:

Microsoft Windows NT, usado en todos los sistemas que usan el cdigo base de Windows NT XNU (usado en Mac OS X) DragonFlyBSD ReactOS

Hay gente que confunde el trmino ncleo hbrido con los ncleos monolticos que pueden cargar mdulos despus del arranque, lo que es un error. Hbrido implica que el ncleo en cuestin usa conceptos de arquitectura o mecanismos tanto del diseo monoltico como del microncleo, especficamente el paso de mensajes y la migracin de cdigo no esencial hacia el espacio de usuario, pero manteniendo cierto cdigo no esencial en el propio ncleo por razones de rendimiento.
[editar] Exoncleos Artculo principal: Exoncleo

Esquema bsico de la interaccin entre un Exoncleo (Exokernel) con el Software a travs de bibliotecas.

Los exoncleos, tambin conocidos como sistemas operativos verticalmente estructurados, representan una aproximacin radicalmente nueva al diseo de sistemas operativos. La idea subyacente es permitir que el desarrollador tome todas las decisiones relativas al rendimiento del hardware. Los exoncleos son extremadamente pequeos, ya que limitan expresamente su funcionalidad a la proteccin y el multiplexado de los recursos. Se llaman as porque toda la funcionalidad deja de estar residente en memoria y pasa a estar fuera, en bibliotecas dinmicas. Los diseos de ncleos clsicos (tanto el monoltico como el microncleo) abstraen el hardware, escondiendo los recursos bajo una capa de abstraccin del hardware, o detrs de los controladores de dispositivo. En los sistemas clsicos, si se asigna memoria fsica, nadie puede estar seguro de cul es su localizacin real, por ejemplo. La finalidad de un exoncleo es permitir a una aplicacin que solicite una regin especfica de la memoria, un bloque de disco concreto, etc., y simplemente asegurarse que los recursos pedidos estn disponibles, y que el programa tiene derecho a acceder a ellos. Debido a que el exoncleo slo proporciona una interfaz al hardware de muy bajo nivel, careciendo de todas las funcionalidades de alto nivel de otros sistemas operativos, ste es complementado por una biblioteca de sistema operativo. Esta biblioteca se comunica con el exoncleo subyacente, y facilita a los programadores de aplicaciones las funcionalidades que son comunes en otros sistemas operativos. Algunas de las implicaciones tericas de un sistema exoncleo son que es posible tener distintos tipos de sistemas operativos (p.e. Windows, Unix) ejecutndose en un solo exoncleo, y que los desarrolladores pueden elegir prescindir de o incrementar funcionalidades por motivos de rendimiento. Actualmente, los diseos exoncleo estn fundamentalmente en fase de estudio y no se usan en ningn sistema popular. Un concepto de sistema operativo es Nemesis, creado por la Universidad de Cambridge, la Universidad de Glasgow, Citrix Systems y el Instituto Sueco de Informtica. El MIT tambin ha diseado algunos sistemas basados en exoncleos. Los exoncleos se manejan en diferente estructura dado que tambin cumplen funciones distintas

Sistema operativo
De Wikipedia, la enciclopedia libre Saltar a navegacin, bsqueda

Interaccin entre el SO con el resto de las partes.

Estimacin del uso de sistemas operativos segn una muestra de computadoras con acceso a Internet en Noviembre de 2009 (Fuente: W3counter).

Un sistema operativo (SO) es el programa o conjunto de programas que efectan la gestin de los procesos bsicos de un sistema informtico, y permite la normal ejecucin del resto de las operaciones.1 Ntese que es un error comn muy extendido denominar al conjunto completo de herramientas sistema operativo, es decir, la inclusin en el mismo trmino de programas como el explorador de ficheros, el navegador y todo tipo de herramientas que permiten la interaccin con el sistema operativo, tambin llamado ncleo o kernel. Uno de los ms prominentes ejemplos de esta diferencia, es el ncleo Linux, que es el ncleo del sistema operativo GNU, del cual existen las llamadas distribuciones GNU. Este error de

precisin, se debe a la modernizacin de la informtica llevada a cabo a finales de los 80, cuando la filosofa de estructura bsica de funcionamiento de los grandes computadores2 se redise a fin de llevarla a los hogares y facilitar su uso, cambiando el concepto de computador multiusuario, (muchos usuarios al mismo tiempo) por un sistema monousuario (nicamente un usuario al mismo tiempo) ms sencillo de gestionar.3 (Vase AmigaOS, beOS o MacOS como los pioneros4 de dicha modernizacin, cuando los Amiga, fueron bautizados con el sobrenombre de Video Toasters5 por su capacidad para la Edicin de vdeo en entorno multitarea round robin, con gestin de miles de colores e interfaces intuitivos para diseo en 3D. Uno de los propsitos del sistema operativo que gestiona el ncleo intermediario consiste en gestionar los recursos de localizacin y proteccin de acceso del hardware, hecho que alivia a los programadores de aplicaciones de tener que tratar con estos detalles. Se encuentran en la mayora de los aparatos electrnicos que utilizan microprocesadores para funcionar. (telfonos mviles, reproductores de DVD, computadoras, radios, etc.).

Contenido
[ocultar]

1 Perspectiva histrica o 1.1 Problemas de explotacin y soluciones iniciales o 1.2 Monitores residentes o 1.3 Sistemas con almacenamiento temporal de E/S o 1.4 Spoolers 2 Perspectiva histrica o 2.1 Sistemas operativos multiprogramados 3 Llamadas al sistema operativo o 3.1 Modos de ejecucin en un CPU o 3.2 Llamadas al sistema o 3.3 Bibliotecas de interfaz de llamadas al sistema 4 Interrupciones y excepciones o 4.1 Tratamiento de las interrupciones o 4.2 Importancia de las interrupciones o 4.3 Excepciones 4.3.1 Clases de excepciones 4.3.2 Importancia de las excepciones 5 Componentes de un sistema operativo o 5.1 Gestin de procesos o 5.2 Gestin de la memoria principal o 5.3 Gestin del almacenamiento secundario o 5.4 El sistema de E/S o 5.5 Sistema de archivos o 5.6 Sistemas de proteccin o 5.7 Sistema de comunicaciones o 5.8 Programas de sistema o 5.9 Gestor de recursos 6 Clasificacin o 6.1 Administracin de tareas

6.2 Administracin de usuarios 6.3 Manejo de recursos 7 Vase tambin 8 Referencias 9 Bibliografa 10 Enlaces externos

o o

[editar] Perspectiva histrica


Los primeros sistemas (1945-1960) eran grandes mquinas operadas desde la consola maestra por los programadores. Durante la dcada siguiente (1950-1960) se llevaron a cabo avances en el hardware: lectoras de tarjetas, impresoras, cintas magnticas, etc. Esto a su vez provoc un avance en el software: compiladores, ensambladores, cargadores, manejadores de dispositivos, etc. A finales de los aos 80, una computadora Commodore Amiga equipada con una aceleradora Video Toaster era capaz de producir efectos comparados a sistemas dedicados que costaban el triple. Un Video Toaster junto a Lightwave ayud a producir muchos programas de televisin y pelculas, entre las que se incluyen Babylon 5, Seaquest DSV y Terminator II.6
[editar] Problemas de explotacin y soluciones iniciales

El problema principal de los primeros sistemas era la baja utilizacin de los mismos, la primera solucin fue poner un operador profesional que lo manejase, con lo que se eliminaron las hojas de reserva, se ahorr tiempo y se aument la velocidad. Para ello, los trabajos se agrupaban de forma manual en lotes mediante lo que se conoce como procesamiento por lotes (batch) sin automatizar.
[editar] Monitores residentes

Fichas en lenguaje de procesamiento por lotes, con programa y datos, para ejecucin secuencial.

Segn fue avanzando la complejidad de los programas, fue necesario implementar soluciones que automatizaran la organizacin de tareas sin necesidad de un operador.

Debido a ello se crearon los monitores residentes: programas que residan en memoria y que gestionaban la ejecucin de una cola de trabajos. Un monitor residente estaba compuesto por un cargador, un Intrprete de comandos y un Controlador (drivers) para el manejo de entrada/salida.
[editar] Sistemas con almacenamiento temporal de E/S

Los avances en el hardware crearon el soporte de interrupciones y posteriormente se llev a cabo un intento de solucin ms avanzado: solapar la E/S de un trabajo con sus propios clculos, por lo que se cre el sistema de buffers con el siguiente funcionamiento:

Un programa escribe su salida en un rea de memoria (buffer 1). El monitor residente inicia la salida desde el buffer y el programa de aplicacin calcula depositando la salida en el buffer 2. La salida desde el buffer 1 termina y el nuevo clculo tambin. Se inicia la salida desde el buffer 2 y otro nuevo clculo dirige su salida al buffer 1. El proceso se puede repetir de nuevo.

Los problemas surgen si hay muchas ms operaciones de clculo que de E/S (limitado por la CPU) o si por el contrario hay muchas ms operaciones de E/S que clculo (limitado por la E/S).
[editar] Spoolers

[editar] Perspectiva histrica


Los primeros sistemas (1945-1950) eran grandes mquinas operadas desde la consola maestra por los programadores. Durante la dcada siguiente (1950-1960) se llevaron a cabo avances en el hardware: lectoras de tarjetas, impresoras, cintas magnticas, etc. Esto a su vez provoc un avance en el software: compiladores, ensambladores, cargadores, manejadores de dispositivos, etc. Hace aparicin el disco magntico con lo que surgen nuevas soluciones a los problemas de rendimiento. Se eliminan las cintas magnticas para el volcado previo de los datos de dispositivos lentos y se sustituyen por discos (un disco puede simular varias cintas). Debido al solapamiento del clculo de un trabajo con la E/S de otro trabajo se crean tablas en el disco para diferentes tareas, lo que se conoce como Spool (Simultaneous Peripherial Operation On-Line).
[editar] Sistemas operativos multiprogramados

Surge un nuevo avance en el hardware: el hardware con proteccin de memoria. Lo que ofrece nuevas soluciones a los problemas de rendimiento:

Se solapa el clculo de unos trabajos con la entrada/salida de otros trabajos. Se pueden mantener en memoria varios programas. Se asigna el uso de la CPU a los diferentes programas en memoria.

Debido a los cambios anteriores, se producen cambios en el monitor residente, con lo que ste debe abordar nuevas tareas, naciendo lo que se denomina como Sistemas Operativos multiprogramados, los cuales cumplen con las siguientes funciones:

Administrar la memoria. Gestionar el uso de la CPU (planificacin). Administrar el uso de los dispositivos de E/S.

Cuando desempea esas tareas, el monitor residente se transforma en un sistema operativo multiprogramado.

[editar] Llamadas al sistema operativo


Definicin breve: llamadas que ejecutan los programas de aplicacin para pedir algn servicio al SO. Cada SO implementa un conjunto propio de llamadas al sistema. Ese conjunto de llamadas es la interfaz del SO frente a las aplicaciones. Constituyen el lenguaje que deben usar las aplicaciones para comunicarse con el SO. Por ello si cambiamos de SO, y abrimos un programa diseado para trabajar sobre el anterior, en general el programa no funcionar, a no ser que el nuevo SO tenga la misma interfaz. Para ello:

Las llamadas correspondientes deben tener el mismo formato. Cada llamada al nuevo SO tiene que dar los mismos resultados que la correspondiente del anterior.

[editar] Modos de ejecucin en un CPU

Las aplicaciones no deben poder usar todas las instrucciones de la CPU. No obstante el Sistema Operativo, tiene que poder utilizar todo el juego de instrucciones del CPU. Por ello, una CPU debe tener (al menos) dos modos de operacin diferentes:

Modo usuario: el CPU podr ejecutar slo las instrucciones del juego restringido de las aplicaciones. Modo supervisor: la CPU debe poder ejecutar el juego completo de instrucciones.

[editar] Llamadas al sistema

Una aplicacin, normalmente no sabe dnde est situada la rutina de servicio de la llamada. Por lo que si sta se codifica como una llamada de funcin, cualquier cambio en el SO hara que hubiera que reconstruir la aplicacin. Pero lo ms importante es que una llamada de funcin no cambia el modo de ejecucin de la CPU. Con lo que hay que conseguir llamar a la rutina de servicio, sin tener que conocer su ubicacin, y hacer que se fuerce un cambio de modo de operacin de la CPU en la llamada (y la recuperacin del modo anterior en el retorno). Esto se hace utilizando instrucciones mquina diseadas especficamente para este cometido, distintas de las que se usan para las llamadas de funcin.

[editar] Bibliotecas de interfaz de llamadas al sistema

Las llamadas al sistema no siempre tienen una expresin sencilla en los lenguajes de alto nivel, por ello se crean las bibliotecas de interfaz, que son bibliotecas de funciones que pueden usarse para efectuar llamadas al sistema. Las hay para distintos lenguajes de programacin. La aplicacin llama a una funcin de la biblioteca de interfaz (mediante una llamada normal) y esa funcin es la que realmente hace la llamada al sistema.

[editar] Interrupciones y excepciones


El SO ocupa una posicin intermedia entre los programas de aplicacin y el hardware. No se limita a utilizar el hardware a peticin de las aplicaciones ya que hay situaciones en las que es el hardware el que necesita que se ejecute cdigo del SO. En tales situaciones el hardware debe poder llamar al sistema, pudiendo deberse estas llamadas a dos condiciones:

Algn dispositivo de E/S necesita atencin. Se ha producido una situacin de error al intentar ejecutar una instruccin del programa (normalmente de la aplicacin).

En ambos casos, la accin realizada no est ordenada por el programa de aplicacin, es decir, no figura en el programa. Segn los dos casos anteriores tenemos las interrupciones y la excepciones:

Interrupcin: seal que enva un dispositivo de E/S a la CPU para indicar que la operacin de la que se estaba ocupando, ya ha terminado. Excepcin: una situacin de error detectada por la CPU mientras ejecutaba una instruccin, que requiere tratamiento por parte del SO.

[editar] Tratamiento de las interrupciones

Una interrupcin se trata en todo caso, despus de terminar la ejecucin de la instruccin en curso. El tratamiento depende de cul sea el dispositivo de E/S que ha causado la interrupcin, ante la cual debe poder identificar el dispositivo que la ha causado. La ventaja de este procedimiento es que no se tiene que perder tiempo ejecutando continuamente rutinas para consultar el estado del perifrico. El inconveniente es que el dispositivo debe tener los circuitos electrnicos necesarios para acceder al sistema de interrupciones del computador.
[editar] Importancia de las interrupciones

El mecanismo de tratamiento de las interrupciones permite al SO utilizar la CPU en servicio de una aplicacin, mientras otra permanece a la espera de que concluya una operacin en un dispositivo de E/S.

El hardware se encarga de avisar al SO cuando el dispositivo de E/S ha terminado y el SO puede intervenir entonces, si es conveniente, para hacer que el programa que estaba esperando por el dispositivo, se contine ejecutando. En ciertos intervalos de tiempo puede convenir no aceptar seales de interrupcin. Por ello las interrupciones pueden inhibirse por programa (aunque esto no deben poder hacerlo las mismas). Un ejemplo de sincronismo por interrupcin es el almacenamiento de caracteres introducidos mediante el teclado. Cuando se introduce un carcter, se codifica en el registro de datos del dispositivo y adems se activa un bit del registro de estado quien crea una interrupcin en el hardware. El procesador deja temporalmente la tarea que estaba completando y ejecuta la rutina de atencin a la interrupcin correspondiente. El teclado almacena el carcter en el vector de memoria intermedia ( tambin llamado buffer) asociada al teclado y despierta el proceso que haba en el estado de espera de la operacin de entrada/salida.
[editar] Excepciones

Cuando la CPU intenta ejecutar una instruccin incorrectamente construida, la unidad de control lanza una excepcin para permitir al SO ejecutar el tratamiento adecuado. Al contrario que en una interrupcin, la instruccin en curso es abortada. Las excepciones al igual que las interrupciones deben estar identificadas. [editar] Clases de excepciones Las instrucciones de un programa pueden estar mal construidas por diversas razones:

El cdigo de operacin puede ser incorrecto. Se intenta realizar alguna operacin no definida, como dividir por cero. La instruccin puede no estar permitida en el modo de ejecucin actual. La direccin de algn operando puede ser incorrecta o se intenta violar alguno de sus permisos de uso.

[editar] Importancia de las excepciones El mecanismo de tratamiento de las excepciones es esencial para impedir, junto a los modos de ejecucin de la CPU y los mecanismos de proteccin de la memoria, que las aplicaciones realicen operaciones que no les estn permitidas. En cualquier caso, el tratamiento especfico de una excepcin lo realiza el SO. Como en el caso de las interrupciones, el hardware se limita a dejar el control al SO, y ste es el que trata la situacin como convenga. Es bastante frecuente que el tratamiento de una excepcin no retorne al programa que se estaba ejecutando cuando se produjo la excepcin, sino que el SO aborte la ejecucin de ese programa. Este factor depende de la pericia del programador para controlar la excepcin adecuadamente.

[editar] Componentes de un sistema operativo

Componentes del Sistema Operativo. [editar] Gestin de procesos

Un proceso es simplemente, un programa en ejecucin que necesita recursos para realizar su tarea: tiempo de CPU, memoria, archivos y dispositivos de E/S. El SO es el responsable de:

Crear y destruir los procesos. Parar y reanudar los procesos. Ofrecer mecanismos para que se comuniquen y sincronicen.

La gestin de procesos podra ser similar al trabajo de oficina. Se puede tener una lista de tareas a realizar y a estas fijarles prioridades alta, media, baja por ejemplo. Debemos comenzar haciendo las tareas de prioridad alta primero y cuando se terminen seguir con las de prioridad media y despus las de baja. Una vez realizada la tarea se tacha. Esto puede traer un problema que las tareas de baja prioridad pueden que nunca lleguen a ejecutarse. y permanezcan en la lista para siempre. Para solucionar esto, se puede asignar alta prioridad a las tareas ms antiguas.
[editar] Gestin de la memoria principal

La Memoria es una gran tabla de palabras o bytes que se referencian cada una mediante una direccin nica. Este almacn de datos de rpido accesos es compartido por la CPU y los dispositivos de E/S, es voltil y pierde su contenido en los fallos del sistema. El SO es el responsable de:

Conocer qu partes de la memoria estn siendo utilizadas y por quin. Decidir qu procesos se cargarn en memoria cuando haya espacio disponible. Asignar y reclamar espacio de memoria cuando sea necesario.

[editar] Gestin del almacenamiento secundario

Un sistema de almacenamiento secundario es necesario, ya que la memoria principal (almacenamiento primario) es voltil y adems muy pequea para almacenar todos los programas y datos. Tambin es necesario mantener los datos que no convenga mantener en la memoria principal. El SO se encarga de:

Planificar los discos. Gestionar el espacio libre.

Asignar el almacenamiento. Verificar que los datos se guarden en orden

[editar] El sistema de E/S

Consiste en un sistema de almacenamiento temporal (cach), una interfaz de manejadores de dispositivos y otra para dispositivos concretos. El sistema operativo debe gestionar el almacenamiento temporal de E/S y servir las interrupciones de los dispositivos de E/S.
[editar] Sistema de archivos

Los archivos son colecciones de informacin relacionada, definidas por sus creadores. stos almacenan programas (en cdigo fuente y objeto) y datos tales como imgenes, textos, informacin de bases de datos, etc. El SO es responsable de:

Construir y eliminar archivos y directorios. Ofrecer funciones para manipular archivos y directorios. Establecer la correspondencia entre archivos y unidades de almacenamiento. Realizar copias de seguridad de archivos.

Existen diferentes Sistemas de Archivos, es decir, existen diferentes formas de organizar la informacin que se almacena en las memorias (normalmente discos) de los ordenadores. Por ejemplo, existen los sistemas de archivos FAT, FAT32, EXT3, NTFS, XFS, etc. Desde el punto de vista del usuario estas diferencias pueden parecer insignificantes a primera vista, sin embargo, existen diferencias muy importantes. Por ejemplo, los sistemas de ficheros FAT32 y NTFS, que se utilizan fundamentalmente en sistemas operativos de Microsoft, tienen una gran diferencia para un usuario que utilice una base de datos con bastante informacin ya que el tamao mximo de un fichero con un Sistema de Archivos FAT32 est limitado a 4 gigabytes, sin embargo, en un sistema NTFS el tamao es considerablemente mayor.
[editar] Sistemas de proteccin

Mecanismo que controla el acceso de los programas o los usuarios a los recursos del sistema. El SO se encarga de:

Distinguir entre uso autorizado y no autorizado. Especificar los controles de seguridad a realizar. Forzar el uso de estos mecanismos de proteccin.

[editar] Sistema de comunicaciones

Para mantener las comunicaciones con otros sistemas es necesario poder controlar el envo y recepcin de informacin a travs de las interfaces de red. Tambin hay que crear y mantener puntos de comunicacin que sirvan a las aplicaciones para enviar y recibir informacin, y crear y mantener conexiones virtuales entre aplicaciones que estn ejecutndose localmente y otras que lo hacen remotamente.

[editar] Programas de sistema

Son aplicaciones de utilidad que se suministran con el SO pero no forman parte de l. Ofrecen un entorno til para el desarrollo y ejecucin de programas, siendo algunas de las tareas que realizan:

Manipulacin y modificacin de archivos. Informacin del estado del sistema. Soporte a lenguajes de programacin. Comunicaciones.

[editar] Gestor de recursos

Como gestor de recursos, el Sistema Operativo administra:


La CPU (Unidad Central de Proceso, donde est alojado el microprocesador). Los dispositivos de E/S (entrada y salida) La memoria principal (o de acceso directo). Los discos (o memoria secundaria). Los procesos (o programas en ejecucin). y en general todos los recursos del sistema.

[editar] Clasificacin
[editar] Administracin de tareas

Monotarea: Solamente puede ejecutar un proceso (aparte de los procesos del propio S.O.) en un momento dado. Una vez que empieza a ejecutar un proceso, continuar hacindolo hasta su finalizacin y/o interrupcin. Multitarea: Es capaz de ejecutar varios procesos al mismo tiempo. Este tipo de S.O. normalmente asigna los recursos disponibles (CPU, memoria, perifricos) de forma alternada a los procesos que los solicitan, de manera que el usuario percibe que todos funcionan a la vez, de forma concurrente.

[editar] Administracin de usuarios


Monousuario: Si slo permite ejecutar los programas de un usuario al mismo tiempo. Multiusuario: Si permite que varios usuarios ejecuten simultneamente sus programas, accediendo a la vez a los recursos de la computadora. Normalmente estos sistemas operativos utilizan mtodos de proteccin de datos, de manera que un programa no pueda usar o cambiar los datos de otro usuario.

[editar] Manejo de recursos


Centralizado: Si permite usar los recursos de una sola computadora. Distribuido: Si permite utilizar los recursos (memoria, CPU, disco, perifricos... ) de ms de una computadora al mismo tiempo.

[editar] Vase tambin

Anexo:Sistemas operativos Comparacin de sistemas operativos Cronologa de los sistemas operativos Historia y evolucin de los sistemas operativos. Sistema operativo de red Software de sistema

Proceso (informtica)
De Wikipedia, la enciclopedia libre Saltar a navegacin, bsqueda Este artculo se refiere al proceso informtico.

Un proceso es un programa en ejecucin. Los procesos son gestionados por el sistema operativo y estn formados por:

Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador. Su estado de ejecucin en un momento dado, esto es, los valores de los registros de la CPU para dicho programa. Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos. Otra informacin que permite al sistema operativo su planificacin.

Esta definicin vara ligeramente en el caso de sistemas operativos multihilo, donde un proceso consta de uno o ms hilos, la memoria de trabajo (compartida por todos los hilos) y la informacin de planificacin. Cada hilo consta de instrucciones y estado de ejecucin. Los procesos son creados y destruidos por el sistema operativo, as como tambin este se debe hacer cargo de la comunicacin entre procesos, pero lo hace a peticin de otros procesos. El mecanismo por el cual un proceso crea otro proceso se denomina bifurcacin (fork). Los nuevos procesos pueden ser independientes y no compartir el espacio de memoria con el proceso que los ha creado o ser creados en el mismo espacio de memoria. En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La diferencia estriba en que un proceso solamente puede crear hilos para s mismo y en que dichos hilos comparten toda la memoria reservada para el proceso.

[editar] Mtodo
Dos o ms procesos pueden cooperar mediante seales de forma que uno obliga a detenerse a los otros hasta que reciban una seal para continuar.

Se usa una variable de tipo Semforo para sincronizar los procesos. Si un proceso est esperando una seal, se suspende (Hold) hasta que la seal se enve (SIGNAL).

Se mantiene una cola de procesos en espera en el semforo. La forma de elegir los procesos de la cola en ESPERA es mediante una poltica FIFO (First In First Out) tambin llamada FCFS (First Come First Served), Round Robin, etc.

La sincronizacin explcita entre procesos es un caso particular del estado "bloqueado". En este caso, el suceso que permite desbloquear un proceso no es una operacin de entrada/salida, sino una seal generada a propsito por el programador desde otro proceso.

También podría gustarte