El ordenador, máquina informacionalcv.uoc.edu/moduls/XW02_79049_00373/web/main/materias/m1.pdfEl...

39
El ordenador, máquina informacional Objetivos Al finalizar este primer módulo, el alumno debería ser capaz de: Definir qué se entiende por un computador. Conocer los antecedentes del cálculo mecánico y las necesidades de gestión que constituyen los principales orígenes de la informática. Enumerar las principales características de las diferentes generaciones de ordenadores. Conocer la arquitectura de un ordenador, según el modelo de Von Neumann, definiendo y distinguiendo los principales componentes y su funcionalidad. Describir los principales periféricos de un ordenador. Conocer las principales instrucciones de código máquina y cómo se ejecutan en un ordenador. Efecturar el seguimiento de diferentes algoritmos. Conocer cómo funciona la memoria principal de un ordenador. Conocer dónde se almacenan el programa y los datos. Describir cómo se ejecutan los programas. Definir y distinguir las principales funciones de los sistemas operativos, así como sus tipologías. Plan de trabajo Módulo 1: El ordenador, máquina informacional (1 crédito) Título unidad Objetivos Núcleos de conocimiento Actividades Lecturas / Animaciones Tiempo El ordenador, una máquina informacional Definir qué se entiende por un ordenador. Conocer los antecedentes del cálculo mecánico y las necesidades de gestión que forman los principales Definición y concepto de ordenador. Tipos de ordenadores Antecedentes históricos de la informática Ordenar cronológicamente una serie de acontecimientos significativos. Lectura: "Antecedentes históricos de la informática. Los primeros ordenadores" de Miquel Barceló (del módulo 1 del 3 h

Transcript of El ordenador, máquina informacionalcv.uoc.edu/moduls/XW02_79049_00373/web/main/materias/m1.pdfEl...

  • El ordenador, máquina informacional

    Objetivos

    Al finalizar este primer módulo, el alumno debería ser capaz de:

    Definir qué se entiende por un computador.

    Conocer los antecedentes del cálculo mecánico y las necesidades de gestión que constituyen los principalesorígenes de la informática.

    Enumerar las principales características de las diferentes generaciones de ordenadores.

    Conocer la arquitectura de un ordenador, según el modelo de Von Neumann, definiendo y distinguiendo losprincipales componentes y su funcionalidad.

    Describir los principales periféricos de un ordenador.

    Conocer las principales instrucciones de código máquina y cómo se ejecutan en un ordenador.

    Efecturar el seguimiento de diferentes algoritmos.

    Conocer cómo funciona la memoria principal de un ordenador.

    Conocer dónde se almacenan el programa y los datos.

    Describir cómo se ejecutan los programas.

    Definir y distinguir las principales funciones de los sistemas operativos, así como sus tipologías.

    Plan de trabajo

    Módulo 1: El ordenador, máquina informacional (1 crédito)

    Título unidad Objetivos Núcleos deconocimiento

    Actividades Lecturas /Animaciones

    Tiempo

    El ordenador,una máquinainformacional

    Definir qué seentiende por unordenador.

    Conocer losantecedentesdel cálculomecánico y lasnecesidades degestión queforman losprincipales

    Definición yconcepto deordenador. Tiposde ordenadores

    Antecedenteshistóricos de lainformática

    Ordenarcronológicamente unaserie deacontecimientossignificativos.

    Lectura:"Antecedenteshistóricos de lainformática. Losprimerosordenadores" deMiquel Barceló (delmódulo 1 del

    3 h

  • orígenes de lainformática.

    Enumerar lasprincipalescaracterísticasde las diferentesgeneraciones deordenadores.

    Generaciones deordenadores

    material en papel;pág. 9 a 15).

    La arquitecturade VonNeumann

    Conocer laarquitectura deun ordenador,según el modelode VonNeumann,definiendo ydistinguiendo losprincipalescomponentes ysufuncionalidad.

    Describir losprincipalesperiféricos de unordenador.

    La memoriaprincipal

    La unidadaritmética y lógica

    La unidad decontrol

    La unidad entrada/ salida

    Ejercicio deconsolidación deconocimientos,preguntas sobre eldireccionamiento amemoria,funcionamiento dealguno de losregistros de la UC.

    Gráfica: Unidadesde un ordenador yinteracción entreellas

    Animación de lalectura/escritura a lamemoria principal

    Animación delfuncionamiento deuna ALU

    3 h

    Código máquina Conocer lasprincipalesinstrucciones decódigo máquinay cómo seejecutan en unordenador.

    Hacer elseguimiento dediferentesalgoritmos.

    Morfología de lasinstrucciones

    La pila o stack

    Instruccionesbásicas en códigomáquina

    Ejercicios coninstrucciones lógicas.

    Animaciones:ejecución deinstrucciones

    3.5 h

    Ejecución deprogramas

    Conocer cómofunciona lamemoriaprincipal de unordenador.

    Conocer dóndese almacenan elprograma y losdatos.

    Describir cómose ejecutan losprogramas.

    Cargar elprograma amemoria

    Ejecución de unalgoritmo encódigo máquina

    Código máquinafrente de lenguajede alto nivel

    Verificación delfuncionamiento de lapila.

    Seguimiento dealgoritmos.

    Gráfica: Mapa dememoria yalmacenaje de losdatos y losprogramas

    Animación:Ejecución de unprograma

    4 h

    Sistemasoperativos

    Definir ydistinguir lasprincipalesfunciones de lossistemasoperativos.

    Qué es un sistemaoperativo

    Funciones de lossistemas

    Verificar la certeza ofalsedad deafirmacionesreferentes al tema.

    1,5 h

  • Definir los tiposde sistemasoperativos.

    operativos

    Tipos de sistemasoperativos

    Identificar lascaracterísticasprincipales de un PCde uso doméstico.

    Total15 h

    Introducción

    Iniciamos este primer módulo con un repaso histórico del mundo de las ciencias de la computación desde susinicios hasta llegar a nuestros días. Con ello pretendemos obtener una visión del contexto histórico que nospermita entender el estado actual del arte en las citadas ciencias.

    Uno de los grandes objetivos de este módulo es alcanzar una idea básica pero clara de cómo funciona elordenador, cómo se estructura su arquitectura y cómo se divide el trabajo en cada una de sus partes con lafinalidad de que el conjunto sea capaz de funcionar de una forma rápida y eficiente.

    Una vez que tengamos la visión funcional y arquitectónica de las computadoras entraremos en el reto decomprender su funcionamiento. Ya no nos conformaremos con saber qué parte hace cada función, sino queademás nuestro objetivo será saber cómo la realiza. Así pues, aunque sea en un nivel básico, aprenderemos cómoactúa una computadora para efectuar la ejecución de programas diariamente utilizados por cada uno denosotros.

    Al llegar al último tramo del módulo veremos el ordenador como un conjunto de piezas que unidas funcionan deuna forma ordenada y sincronizada, con capacidad para hacer un trabajo útil. No obstante, para eso es preciso quehaya un "director de orquesta" que dirija de manera acertada todos los integrantes del grupo. En este último tramodel módulo descubriremos a este director de orquesta y describiremos la figura que lleva a cabo dichas funciones:el sistema operativo.

    Ordenador: concepto e historia

    Introducción

    Como se puede deducir de la introducción, el ordenador o computador será nuestro compañero de estudio durantetodo el temario, bien sea como objeto de estudio o haciendo referencia al mismo como herramienta de trabajo.

    Uno de los objetivos perseguidos es que el ordenador no resulte un ente extraño, así que para que empecemos afamiliarizarnos con él se definirán y buscarán sus orígenes a lo largo de su breve historia.

  • Definición y concepto de ordenador

    Desde un punto de vista académico, podemos definir un ordenador como:

    Máquina capaz de efectuar una secuencia de operaciones mediante un programa de tal maneraque se realice un procesamiento sobre un conjunto de datos de entrada, con lo que se obtendríaotro conjunto de datos de salida.

    Ésta es una definición absolutamente genérica, de manera que el uso de un ordenador será de utilidad para uncampo u otro en función del programa que se ejecute. La filosofía es que un ordenador en sí mismo no es capazde hacer ni de resolver nada, por lo que necesita un programa que le indique cómo actuar. Dependiendo de loadecuado que sea el programa que elijamos al fin que perseguimos, más útil nos será el uso de la potencia decálculo que nos ofrecen los ordenadores.

    La potencia de cálculo redundará en que nuestras tareas se harán de una forma más rápida, eficiente y reduciendola probabilidad de error.

    Cuanto más mecánica y repetitiva sea la tarea, más eficiente será el uso del ordenador. Para tareas creativas, elordenador puede ser un instrumento de soporte fundamental, pero difícilmente podrá sustituir la capacidad creativadel usuario.

    Antecedentes históricos de la informática

    A continuación enumeraremos a modo de síntesis algunos de los hitos más significativos de la historia de lacomputación.

    La historia de las máquinas de cálculo que dieron origen a los ordenadores actuales empieza con un instrumentoutilizado por varias civilizaciones siglos antes de Jesucristo: el ábaco.

    Leed los siguientes textos de Miquel Barceló: "Antecedentes históricos de la informática" y "Los primerosordenadores".

    Antecedentes históricos de la informática

    Sales hace derivar la informática, o como mínimo el ordenador, de la necesidad de calcular sin errores (Sales,1980). Comenta cómo esta necesidad ha proporcionado resultados independientes, pero también casi sucesivosen las calculadoras y los calculadores analógicos no electrónicos hasta llegar a los primeros ordenadoreselectrónicos. Sin embargo, pensando en cómo es la informática hoy y en el peso que su utilización en el ámbito dela administración y la gestión de los negocios ha tenido en su desarrollo y difusión, hay que incluir, como otramotivación importante de la informática, la que deriva de este tipo de aplicación. Un ejemplo clásico es eldesarrollo de las tabuladoras y máquinas de proceso de datos administrativos que arrancan del problema delcenso norteamericano de 1890 y la respuesta que dio Hollerit al respecto.

    Las máquinas de calcular

    El nombre inglés de la informática (computer science) pone el acento en la utilización de la técnica informática parael cálculo aritmético, para lo cual el primer precedente histórico de la informática es el ábaco. El antiguo aparato decálculo, en realidad un elemento de ayuda a un calculista humano, parece originario del Antiguo Oriente, donde seempleó hace ya más de cinco mil años. También podrían mencionarse aquí, mucho más recientemente, loslogaritmos (John Napier, 1614) y su utilización en la regla de cálculo.

    Pero la historia moderna y occidental de las máquinas de calcular se hace comenzar, generalmente, con lamáquina Arithmetica o Pascalina diseñada por Blaise Pascal en el año 1642. En realidad existió una calculadoraanterior capaz de realizar multiplicaciones construida por Wilhelm Schickard en Tubinga en el año 1623, pero alhaberse descubierto este hecho en 1957, en muchos sitios se sigue considerando a Pascal como el primereuropeo que fabricó una máquina de contar.

    Leibnitz también diseñó en el año 1694 la calculadora universal, que era capaz de hacer las cuatro operacionesprincipales e, incluso, raíces cuadradas. Uno de los rasgos más importantes de la calculadora de Leibnitz es que,con vistas a simplificar su construcción, el matemático alemán tuvo la idea de utilizar una notación binaria de lascifras en lugar del habitual sistema decimal. De hecho, fue el matemático inglés Georges Boole quien, mucho más

  • tarde, desarrolló con detalle la base de la lógica simbólica y, en especial, los operadores lógicos binarios y suálgebra. En la obra Treatise on Differential Equations de 1859, Boole incluía un resumen del método simbólico ydestacaba las implicaciones que surgían al establecer una analogía entre el álgebra numérica y la que se podíautilizar para representar la lógica y los silogismos. El formulismo utilizado por Boole, la representación de loselementos binarios con ceros y unos, es aún la base de la utilización del sistema binario en los ordenadoresactuales.

    La analytical engine de Charles Babbage

    Con toda seguridad el antecedente directo de los ordenadores actuales está en la denominada máquina analítica(analytical engine), concebida por el británico Charles Babbage en el año 1835, después, según parece, de losproblemas en la construcción de un calculador anterior denominado máquina de diferencias (difference engine)que utilizaba el método de las diferencias.

    La tecnología disponible en la época victoriana no hizo posible la construcción real de la máquina analítica deBabbage. La idea central combinaba la realización de las cuatro operaciones aritméticas con decisiones basadasen los resultados intermedios de las secuencias de cálculo. Es decir, era un calculador capaz de llevar a cabocualquier tipo de cálculo si éste había sido especificado en un programa que Babbage denominaba control. Elprograma y los datos de entrada se registraban en una serie de tarjetas o fichas perforadas. Se utilizaba así latécnica de la perforación de tarjetas, que había empleado Jacquard, a principios del siglo XIX, para controlar lostelares mecánicos. Una impresora, un estereotipo o bien una perforadora de tarjetas eran los elementosusados para mostrar las salidas e, incluso, los resultados intermedios.

    En general, la estructura interna del diseño se acerca a lo que hoy llamamos "arquitectura Von Neumann", pero latecnología no permitió que se construyera hasta el año 1944, poco después de que se redescubrieran, en 1937, losdiseños y los escritos de Babbage.

    Lo más importante de la máquina de Babbage son las innovaciones de diseño, las cuales, a pesar de susimplicidad conceptual, tuvieron un gran impacto, sobre todo en el siglo XX. En particular hay que destacar elconcepto de transferencia condicional que permitía a la máquina comparar cantidades y, según el resultado dela comparación, tomar la decisión de saltar a otra instrucción o secuencia. Así, se introducía el concepto deprograma y su secuencia de control. También aparece una distinción entre los datos y el programa que losutiliza: unas tarjetas de números con las cifras y las constantes del problema, unas tarjetas de directivas paracontrolar el movimiento de los números en la máquina y unas tarjetas de operación que dirigían el funcionamientode las operaciones básicas, como la suma, la resta, la multiplicación y la división.

    También hay que recordar aquí a la ayudante de Babbage, Ada Augusta, condesa de Lovelace, hija de LordByron, que fue la primera programadora de la historia. En el año 1843 publicó sus primeros programas para lamáquina analítica, una suma de series y un cálculo recurrente de los números de Bernouilli. Se iniciaba así lahistoria paralela del software.

    Los calculadores analógicos

    Un precedente importante, que parecía muy prometedor, está representado por los calculadores analógicos comoel predictor de mareas de Michelson y Stratton en el año 1898. La utilización de la analogía para calcular está enla base, por ejemplo, de la regla de cálculo (analogía entre la multiplicación y la suma de distancias gracias a loslogaritmos) y, sobre todo, de los analizadores diferenciales, como el pionero de Thompson en el año 1876 y elmás conocido de todos, el de Vannevar Bush, desarrollado, en varias versiones y tecnologías, a partir de 1930.Aunque durante los años treinta el analizador diferencial de Bush era el aparato de cálculo más potente, latecnología digital y electrónica de ordenadores como el ENIAC lo superó, y puede decirse que la de loscalculadores analógicos ha sido una línea que no ha tenido la continuidad ni ha proporcionado los éxitos queparecía prometer.

    Las tabuladoras

    Pese a que la máquina analítica de Babbage fue el precedente teórico del ordenador, la base industrial y comercialprevia para hacer posible el uso generalizado del ordenador hay que buscarla en las tabuladoras, que sonmáquinas de aplicación concreta en el ámbito del tratamiento de los datos administrativos.

    Es conocido el hecho según el cual Herman Hollerit se enfrentaba en el año 1886 al problema de que el censonorteamericano de 1880 aún no se había procesado del todo. Por tanto, el censo siguiente de 1890, con unincremento de población previsto de aproximadamente 60 millones de personas, no podría procesarse en menosde diez años. Ello hacía que, al obtener los datos finales, éstos ya serían obsoletos porque ya se habría hecho elcenso de 1900.

    La máquina que resolvió el problema se denominó genéricamente tabuladora, porque el procesamiento de losdatos era una clasificación y se hacían resúmenes e inventarios por distrito, sexo, religión, etc. en forma de tablas.En realidad, Hollerit diseñó un sistema formado por un lector eléctrico de tarjetas perforadas, una clasificadora

  • rudimentaria y una unidad tabuladora que hacía las sumas e imprimía los resultados.

    El nuevo equipo consiguió una disminución espectacular de los errores en el proceso, así como un aumento develocidad que permitió hacer el censo de 1890 en tres años, en lugar de los diez que se hubieran necesitado con elproceso manual. Nacían así la tabuladora electromecánica, que ha sido el antecedente directo del ordenador en suutilización para el trabajo administrativo en la primera mitad del siglo XX, y las empresas que la comercializaron,como IBM.

    Los primeros ordenadores

    Pasada esta primera etapa histórica, por fuerza acortada y sintetizada, y recogidos los precedentes teóricos(Babbage) y prácticos (Hollerit), se llega a los primeros ordenadores o, como mínimo, a las primeras máquinas quepueden recibir este nombre.

    Los precursores electromecánicos

    A menudo se define el ordenador como un calculador de utilización universal y de tipo digital en contraposicióna los calculadores analógicos. Los primeros calculadores digitales que merecen el nombre de ordenador, siprescindimos de la tecnología que suponemos generalmente electrónica, son el Z3, un "calculador programableuniversal" proyectado por Konrad Zuse en el año 1941 en Alemania, y el Mark I, desarrollado por Howard H. Aikenen Harvard entre 1939 y 1944. Ambos utilizan la tecnología electromecánica del relé y todavía no son electrónicos.

    Hay otros precedentes electromecánicos, como el Complex Calculator, conocido también como Bell Model I, deGeorge R. Stibitz, del año 1940, pero se suele citar el Mark I como el primer ordenador electromecánico del mismomodo que el proyecto de Babbage se considera el primer ordenador con tecnología mecánica.

    Aiken y el Mark I

    La máquina diseñada por Howard H. Aiken en Harvard y desarrollada conjuntamente con IBM, que entonces erala principal fabricante de tabuladoras, era un Automatic Sequence Controlled Calculator (ASCC, calculadorautomático de secuencia controlada), que utilizaba elementos electromecánicos y, según parece, tenía más de7.000 relés y 800 kilómetros de cable eléctrico. IBM lo denominaba ASCC, pero en Harvard se conocía como MarkI. Se había diseñado en el año 1937 y su construcción duró desde 1939 hasta 1944.

    El programa se introducía con una cinta de papel perforada, pero los datos se entraban mediante unosconmutadores manuales o con tarjetas perforadas. Era capaz de multiplicar dos números de diez cifras en seissegundos y dividirlos en poco más de diez segundos. Los números podían tener un máximo de 23 cifras, y parasumarlos o restarlos tardaba medio segundo. Medía unos 15 metros de largo por 2,5 de alto y pesaba unascuantas toneladas.

    El ENIAC de Eckert y Mauchly

    Se considera que el primer ordenador completamente electrónico fue el ENIAC (Electronic Numerical IntegratorAnd Calculator, calculador e integrador numérico electrónico), pero, desde el punto de vista legal de las patentes,los tribunales norteamericanos han establecido que fue el de John Atanasoff, que construyó un calculador binarioelectrónico (ABC), una máquina de uso limitado para resolver sistemas de ecuaciones lineales, que se terminó enel Iowa State College en otoño de 1939.

    El ENIAC se construyó en la Moore School of Electrical Engineering, en la Universidad de Pensilvania, bajo ladirección de John P. Eckert y John W. Mauchly. Se construyó en el Ballistic Research Laboratories (laboratoriode investigación en balística) en medio de un ambiente de secreto a causa de la guerra y, en realidad, le fueronvariando el diseño. Pasó, de ser una máquina especializada en cálculos balísticos, a ser un calculador universal.

    Eckert y Mauchly utilizaron, quizá por primera vez en informática, un sistema de "congelación del diseño" paraconseguir que las continuas variaciones y mejoras diseñadas no impidiesen que se construyera el ordenador.Desde el punto de vista tecnológico, la principal novedad era la utilización de los tubos electrónicos para el cálculo,teorizada ya en un memorándum escrito por Eckert en el año 1942.

    Finalmente, el ENIAC se presentó en público el 15 de febrero de 1946. Era un monstruo de 30 toneladas, con másde 18.000 tubos electrónicos y ocupaba todo un piso de la Moore School. Consumía cerca de 200 kW y, segúndice la leyenda, hacía que todo el barrio oeste de Filadelfia notara un parpadeo luminoso cuando se ponía enmarcha. La tecnología electrónica le permitía realizar 5.000 sumas por segundo, frente a las 2 que conseguía elMark I con sus relés, y podía efectuar en 30 segundos un cálculo de trayectorias para el que el analizadordiferencial de Bush necesitaba media hora. El ENIAC llevaba a cabo en una sola hora el trabajo de dos meses delequipo de doscientos calculistas del Ballistic Research Labs, que fue el que impulsó su creación.

  • Las máquinas de Von Neumann

    Pese a todo, el ENIAC todavía no cumple totalmente las especificaciones típicas de lo que hoy se considera unordenador con la ya tradicional arquitectura Von Neumann. Para serlo, es necesario que previamente se hayaalmacenado el programa en la memoria central del ordenador.

    Éste es el planteamiento que hicieron Von Neumann, Eckert y Mauchly en el año 1945 y que proyectaron para elEDVAC (Electronic Discrete Variable Automatic Computer). En realidad se implementó primero en el EDSAC(Electronic Delay Storage Automatic Calculator) de Wilkes en la universidad británica de Cambridge (1949) y en elBINAC (Binary Automatic Calculator) que Eckert y Mauchly hicieron el mismo año en la empresa que crearon alirse de la Moore School. El EDVAC lo acabaron en 1952 en la Moore School, aunque Von Neumann ya no estabaallí. Se había ido a Princeton, donde diseñó el MANIC (instalado finalmente en el laboratorio de Los Alamos en elaño 1951), en la línea del EDVAC.

    Aunque el diseño del EDVAC fue conjunto (Von Neumann, Eckert y Mauchly), ha sido Von Neumann quien harecogido la paternidad de la idea del programa almacenado por haber firmado él solo el artículo de junio de 1945donde exponía las ideas centrales de su diseño.

    John Napier (1550-1617) inventa los logaritmos y construye las primeras tablas. Mediante estas funcionesmatemáticas convierte los productos y divisiones en simples sumas y restas.

    En los siglos XVI y XVII se construyeron máquinas mecánicas basadas en ruedas dentadas que simulaban elfuncionamiento del ábaco, como la máquina aritmética o sumadora de Pascal (1642), construida por éste a laedad de diecinueve años.

    Wilhelm von Leibniz (1646-1716) construyó la primera máquina capaz de multiplicar directamente. Tambiénefectuaba divisiones y raíces cuadradas.

    Charles Babbage (1792-1871) diseñó la máquina analítica, que fue pensada como un calculador universal quepudiera resolver automáticamente cualquier problema matemático, con capacidad para albergar distintosprogramas. Aunque Babbage murió sin poder llegar a construirla.

    Máquina analítica de CharlesBabbage

    George Boole (1815-1864) desarrolló el álgebra que lleva su nombre. Su lógica formal asignaba un 1 a cadaproposición verdadera y un 0, a las falsas. Boole definió las operaciones no con operadores aritméticos, sino conoperadores lógicos: Y, O y NO (AND, OR y NOT).

  • Tablas de verdad para las operaciones lógicas AND, OR, XOR, NAND, NOR, NOT

    A B A AND B A B A OR B0 0 0 0 0 00 1 0 0 1 11 0 0 1 0 11 1 1 1 1 1

    A B A NAND B A B A NOR B0 0 1 0 0 10 1 1 0 1 01 0 1 1 0 01 1 0 1 1 0

    A B A XOR B A NOT A0 0 0 0 10 1 1 1 01 0 1 1 1 0

    A finales del siglo XIX se utilizan máquinas de cálculo mecánicas en los negocios y la gestión de empresas, comola máquina tabuladora de H. Hollerith (1886), con la que se realizó el censo norteamericano. Su artífice fundó laTabulating Machine Corporation, que después se transformaría en IBM.

    El primer ordenador electromecánico fue el Mark I, construido en la Universidad de Harvard por Howard H. Aikenen 1944 con la subvención de IBM. Tenía setecientas sesenta mil ruedas y relés y ochocientos kilómetros decable; se basaba en la máquina analítica de Babbage.

    El primer ordenador electrónico fue el ENIAC, construido en 1945 en la Escuela Moore de Ingeniería Eléctrica porJohn W. Mauchly y John Presper Eckert. Este ordenador era capaz de realizar cinco mil sumas por segundo,pesaba treinta toneladas, utilizaba dieciocho mil doscientas válvulas, ocupaba ciento cuarenta metros cuadrados ytenía un consumo medio de ciento cincuenta mil vatios. Evidentemente, necesitaba un potente equipo derefrigeración.

    ENIAC

    John von Neumann (1903-1957), matemático húngaro, propuso almacenar el programa y los datos en la memoriadel ordenador, con lo que se evitaba la modificación del cableado en el cambio de programas. Este gigantescopaso a un nivel conceptual daba pie a la que posteriormente se llamaría arquitectura de von Neumann, en la quese basan la mayoría de los ordenadores actuales.

    Podéis consultar el apartado "Arquitectura de von Neumann" de este módulo.

  • Generaciones de ordenadores

    Todo este desarrollo de las computadoras suele dividirse por generaciones. Los criterios para determinar el cambiode generación pueden ser diversos, pero está claro que al menos deben cumplirse los siguientes requisitosdiferenciales: la forma en que están construidas las computadoras y la forma en que el ser humano se comunicacon éstas.

    Primera generación

    Segunda generación

    Tercera generación

    Cuarta generación

    Quinta generación

    Evolución futura

    Primera generación

    Esa generación vivió un gran desconocimiento de las capacidades de las computadoras. Prueba de ello es unestudio realizado en la época a partir del cual se determinó que con veinte computadoras se saturaría el mercadode Estados Unidos en el campo de procesamiento de datos. El paso del tiempo se ha encargado de dar a estasestimaciones la categoría de una pura anécdota.

    Esta generación abarcó la década de los cincuenta, y es conocida como la primera generación. Estas máquinaspresentaban las siguientes características:

    En 1951 aparece la UNIVAC (UNIVersAl Computer), la primera computadora comercial. Disponía de mil palabrasde memoria central y podía leer cintas magnéticas; se utilizó para procesar el censo de 1950 en Estados Unidos.

    UNIVAC

    En las dos primeras generaciones, las unidades de entrada utilizaban tarjetas perforadas. Estas tarjetas fueronretomadas por Herman Hollerith (1860-1929), quien, como ya hemos indicado, fundó una compañía que con elpaso del tiempo se conocería como IBM (International Business Machines).

    Poco después IBM desarrolló la IBM 701, de la cual se vendieron dieciocho unidades entre 1953 y 1957.

    Posteriormente, la compañía Remington Rand fabricó el modelo 1103, que competía con la 701 en el campocientífico. La respuesta de IBM fue el desarrollo de la 702, que presentó problemas en memoria, por lo que no duródemasiado tiempo en el mercado.

    La computadora de mayor éxito de la primera generación fue la IBM 650, de la cual se produjeron varioscentenares. Esta computadora utilizaba un esquema de memoria secundaria llamado tambor magnético que es elantecesor de los discos actuales.

    Otros modelos de computadora que se pueden situar en los inicios de la segunda generación son la UNIVAC 80 y90, las IBM 704 y 709, Burroughs 220 y UNIVAC 1105.

    Fueron construidas con tubos de vacío.

    Eran programadas en lenguaje máquina.

    Eran máquinas grandes y costosas (de un coste aproximado de cientos de miles de dólares).

  • Segunda generación

    Cerca de la década de 1960, las computadoras seguían evolucionando, se reducía su tamaño y crecía sucapacidad de procesamiento. También en esta época se empezó a definir la forma de comunicarse con lascomputadoras, la cual recibía el nombre de programación de sistemas.

    Las características de la segunda generación son las siguientes:

    Las máquinas están construidas con circuitos de transistores.

    Se programan en nuevos lenguajes llamados lenguajes de alto nivel.

    Podéis consultar el núcleo de conocimiento "Los lenguajes máquina, ensamblador y de alto nivel" del módulo"Software".

    En esta generación aparecen muchas compañías. Las computadoras se reducen de tamaño y presentan unmenor coste, eran bastante avanzadas para su época, como la serie 5000 de Burroughs y la ATLAS, de laUniversidad de Manchester.

    Algunas de estas computadoras se programaban con cintas perforadas y otras, por medio de cableado en untablero. Los programas se hacían a la medida por parte de un equipo de expertos: analistas, diseñadores,programadores y operadores que se manejaban como una orquesta para resolver los problemas y cálculossolicitados por la administración. El usuario final de la información no tenía contacto directo con las computadoras.Esta situación se produjo en un principio en las primeras computadoras personales, pues se requería saberlasprogramar (alimentarlas de instrucciones) para obtener resultados; por lo tanto, su uso estaba limitado a aquellosaudaces pioneros que gustaran de pasar un buen número de horas escribiendo instrucciones, ejecutando elprograma resultante y verificando y corrigiendo los errores o bugs (en el argot informático, se considera que un buges un error en un programa ya comercializado) que aparecieran.

    Para no perder el programa resultante, había que guardarlo (almacenarlo) en una grabadora de casete, pues enesa época no había discos flexibles, ni mucho menos discos duros para los PC. Este procedimiento podía llevar dediez a cuarenta y cinco minutos, según el programa. El panorama se modificó totalmente con la aparición de lascomputadoras personales con mejores circuitos, más memoria, unidades de disco flexible y, sobre todo, con laaparición de programas de aplicación general en los que el usuario compra el programa y se pone a trabajar.Aparecen los programas procesadores de palabras como el célebre Word Star, la impresionante hoja de cálculo(spreadsheet) Visicalc y otros más que, de la noche a la mañana, cambiaron la imagen del PC. El softwareempieza a tratar de alcanzar el paso del hardware. Pero aquí aparece un nuevo elemento: el usuario.

    Algunas de las computadoras integrantes de esta generación fueron las siguientes: la Philco 212 (esta compañíase retiró del mercado en 1964) y la UNIVAC M460, la Control Data Corporation modelo 1604, seguida por la serie3000; IBM mejoró la IBM 709 y sacó al mercado la IBM 7090, la National Cash Register empezó a producirmáquinas para proceso de datos de tipo comercial e introdujo el modelo NCR 315.

    La Radio Corporation of America introdujo el modelo 501, que manejaba el lenguaje COBOL, para procesosadministrativos y comerciales. Después salió al mercado la RCA 601.

    El usuario, a medida que se populariza la informática, conseguirá que el hardware y el software se diseñen yconstruyan no sólo bajo criterios de eficiencia y productividad, sino también teniendo muy en cuenta al propiousuario, de modo que se fabricará hardware cada vez más ergonómico y programas de uso intuitivo (friendly userinterface).

  • El usuario de las computadoras va cambiando y evolucionando con el tiempo. De estar totalmente desconectado,en las máquinas grandes, pasa a ser pieza clave en el diseño tanto del hardware como del software. A medida quela informática va popularizándose, aparece el concepto de human interface, que es la relación entre el usuario y sucomputadora. Se habla entonces de hardware ergonómico (adaptado a las dimensiones humanas para reducir elcansancio), diseños de pantallas antirreflejos y teclados que descansen la muñeca.

    Todo esto provoca que el software inicie una verdadera carrera para encontrar la manera en que el usuario pasemenos tiempo capacitándose y entrenándose y más tiempo, produciendo. Se ponen al alcance del usuarioprogramas con menús (listas de opciones) que lo orientan en todo momento (con el consiguiente aburrimiento delos usuarios expertos); otros programas ofrecen una artillería de teclas de control y teclas de funciones (atajos)para efectuar toda suerte de efectos en el trabajo (con la consiguiente desorientación de los usuarios novatos). Seofrece un sinnúmero de cursos que prometen que en pocas semanas convierten a cualquier persona en un expertode los programas comerciales.

    Sin embargo, el problema que persiste es que ninguna solución para el uso de los programas es definitiva. Cadanuevo programa requiere aprender nuevos controles, nuevos trucos, nuevos menús.

    Todo esto provoca que la relación usuario-PC no se muestre acorde con los desarrollos del equipo y de la potenciade los programas. Este cúmulo de circunstancias provocará la aparición de sistemas operativos visuales y losprogramas user-friendly, que pretenden que su uso sea fácil, agradable y intuitivo. Esto se consigue medianteiconos representativos de las funciones que tiene el programa y estandarizando las tareas más comunes, las quetienen todos los programas (como pueden ser grabar un archivo, leerlo, imprimir, etc.).

    Tercera generación

    Con los progresos de la electrónica y los avances de comunicación en las computadoras, en la década de 1960nace la tercera generación de computadoras.

    Esta nueva generación se inaugura con la IBM 360 en abril de 1964.

    IBM360

    Las características de dicha generación fueron las siguientes:

    Su fabricación electrónica estaba basada en circuitos integrados.

  • Su manejo se realizaba por medio de los lenguajes de control de los sistemas operativos.

    Pertenecen a esta tercera generación la serie 360 de IBM con los modelos 20, 22, 30, 40, 50, 65, 67, 75, 85,90, 195, que utilizaban técnicas especiales del procesador, unidades de cinta de nueve canales, paquetes dediscos magnéticos y otras características que ahora son estándares (no todos los modelos usaban estastécnicas, sino que estaban divididos por aplicaciones).

    El sistema operativo de la serie 360 se llamó OS. Contaba con varias configuraciones e incluía un conjunto detécnicas de manejo de memoria y del procesador que pronto se convirtieron en estándares.

    En 1964, CDC introdujo la serie 6000 con la computadora 6600, que durante varios años fue consideradacomo la más rápida.

    En la década de 1970, IBM produce la serie 370 (modelos 115, 125, 135, 145, 158, 168). UNIVAC compite conlos modelos 1108 y 1110, máquinas a gran escala, mientras que CDC produce su serie 7000 con el modelo7600. Estas computadoras se caracterizan por ser muy potentes y veloces.

    A mediados de la década de 1970 aparecen en el mercado las computadoras de tamaño mediano ominicomputadoras, que no son tan costosas como las grandes (también llamadas mainframes, que significa‘gran sistema’), pero disponen de gran capacidad de procesamiento.

    Podéis consultar el apartado " Sistemas operativos" de este módulo.

    Cuarta generación

    La aparición de los microprocesadores supone un enorme salto tecnólogico del que se aprovechará la industria delhardware para mejorar notablemente sus productos.

    Las características de esta nueva generación son:

    Gracias al avance en microelectrónica, se construyen microprocesadores con circuitos integrados de altadensidad.

    Microprocesador INTEL 4004

    Gran velocidad.

  • Menor volumen y costes mucho más bajos que sus antecesores.

    Las microcomputadoras que tienen su base en estos circuitos son extremadamente pequeñas y baratas, porlo que su uso se extiende al mercado industrial. Aquí nacen las computadoras personales (PC), que hanadquirido enormes proporciones y han influido en la sociedad en general sobre la llamada "revolucióninformática".

    En 1976, Stephen Wozniak y Steven Jobs inventaron la primera microcomputadora de uso masivo y mástarde formaron la compañía conocida como Apple, que fue la segunda compañía más grande del mundo,precedida únicamente por IBM; ésta, por su parte, es todavía una de las cinco compañías más importantes delmundo.

    En 1981 se vendieron ochenta mil computadoras personales; al año siguiente, la cifra ascendió a un millóncuatrocientas mil. Entre 1984 y 1987 se vendieron en torno a sesenta millones, por lo que no queda duda deque su impacto y penetración han sido enormes.

    Con el surgimiento de las computadoras personales, el software y los sistemas que con ellas se manejan hantenido un considerable avance, dado que han hecho más interactiva la comunicación con el usuario. Surgenotras aplicaciones como los procesadores de texto, las hojas de cálculo, paquetes gráficos, etc. Tambiénlas industrias del software de las computadoras personales crece con gran rapidez. Gary Kildall y WilliamGates se dedicaron durante años a la creación de sistemas operativos y métodos para lograr una utilizaciónsencilla de las microcomputadoras (son los creadores de CP/M y de los productos de Microsoft).

    No todo son microcomputadoras, por supuesto. Las minicomputadoras y los grandes sistemas continúanen desarrollo. De hecho, las máquinas pequeñas rebasaban en gran medida la capacidad de los grandessistemas de diez o quince años antes que requerían instalaciones costosas y especiales, aunque nosequivocaríamos si supusiéramos que las grandes computadoras han desaparecido; todo lo contrario: supresencia era ya ineludible en prácticamente todas las esferas de control gubernamental, militar y de la granindustria. Las enormes computadoras de las series CDC, CRAY, Hitachi o IBM, por ejemplo, eran capaces deatender varios cientos de millones de operaciones por segundo.

    Quinta generación

    En vista de la acelerada marcha de la microelectrónica, la sociedad industrial se ha ocupado de poner también aesa altura el desarrollo del software y los sistemas con que se manejan las computadoras. Surge la competenciainternacional por el dominio del mercado de la computación, en la que se perfilan dos líderes que, sin embargo, nohan podido alcanzar el nivel deseado: la capacidad de comunicarse con la computadora en un lenguaje máscotidiano y no por medio de códigos o lenguajes de control especializados.

    Japón lanzó en 1983 el llamado "programa de la quinta generación de computadoras" con los objetivos explícitosde producir máquinas con innovaciones reales en los mencionados criterios.

    En Estados Unidos ya hay en activo un programa de desarrollo que persigue objetivos semejantes y que podemosresumir de la siguiente forma:

    Procesamiento en paralelo mediante arquitecturas, diseños especiales y circuitos de gran velocidad.

    Manejo de lenguaje natural y sistemas de inteligencia artificial.

    El futuro previsible de la computación es muy interesante, y se puede esperar que esta ciencia siga siendo objetode atención prioritaria de gobiernos y de la sociedad en conjunto.

    A pesar de su complejidad, los ordenadores de esta generación se están diseñando para ser manejados porpersonas no expertas en informática.

    En la actualidad esos ordenadores no están plenamente desarrollados. Se trabaja en ello en distintos países cuyosprogramas de investigación más importantes son los siguientes:

    EE.UU. Proyectos DARPA y MCC.

    Unión Europea. Proyecto Spirit.

    Reino Unido. Proyecto Alvey.

  • Japón. Proyecto ICOT.

    Evolución futura

    Una tendencia constante en el desarrollo de los ordenadores es la microminiaturización, iniciativa que tiende acomprimir cada vez más los elementos de los circuitos en un espacio de chip cada vez menor.

    Además, los investigadores intentan agilizar el funcionamiento de los circuitos mediante el uso de lasuperconductividad, un fenómeno de disminución de la resistencia eléctrica que se observa cuando se enfríanlos objetos a temperaturas muy bajas.

    Las redes informáticas se han vuelto cada vez más importantes en el desarrollo de la tecnología decomputadoras. Las redes son grupos de computadoras interconectadas mediante sistemas de comunicación. Lared pública Internet es un ejemplo de red informática planetaria. Las redes permiten que las computadorasconectadas intercambien rápidamente información y, en algunos casos, compartan una carga de trabajo, con loque muchas pueden cooperar en la realización de una tarea. Se están desarrollando nuevas tecnologías de equipofísico y soporte lógico que acelerarán los dos procesos mencionados.

    Podéis consultar el módulo "Redes y transmisión de datos" de esta asignatura.

    Podéis consultar el apartado "La red Internet" del módulo "Redes y transmisión de datos" de esta asignatura.

    Otra tendencia en el desarrollo de computadoras es la que centra sus esfuerzos en crear computadoras de quintageneración capaces de resolver problemas complejos en formas que pudieran llegar a considerarse creativas. Unavía que se está explorando activamente es el ordenador de proceso paralelo, que emplea muchos chips pararealizar varias tareas diferentes al mismo tiempo. El proceso paralelo podría llegar a reproducir hasta cierto puntolas complejas funciones de realimentación, aproximación y evaluación que caracterizan el pensamientohumano.

    Otra forma de proceso paralelo que se está investigando es el uso de computadoras moleculares (mediante lananotecnología). En estas computadoras, los símbolos lógicos se expresan mediante unidades químicas de ADNen vez de por el flujo de electrones habitual en las computadoras corrientes. Las computadoras molecularespodrían llegar a resolver problemas complicados mucho más rápidamente que las actuales supercomputadoras,así como a consumir mucha menos energía.

    Arquitectura de von Neumann

    Introducción

    A mediados del siglo XX, John von Neumann diseñó una arquitectura que revolucionaría el estado del arte delmundo de las computadoras.

    Desde los inicios de la era de la computación se ha buscado un modelo eficiente para el proceso de la información.

  • El objetivo es un hardware que debe ser capaz de memorizar, grabar y mostrar información.

    Hacia 1950, John von Neumann tuvo la idea de construir una máquina que pudiera memorizar una serie deórdenes y una serie de datos, de modo que después pudiera trabajar sola hasta lograr el resultado. Para elloconcibió la arquitectura o estructura física hoy conocida con su nombre y generalizada en la segunda y la tercerageneración de computadoras, arquitectura que describiremos a continuación. Paralelamente concibió lo que se hallamado el programa. Los programas son un conjunto estructurado de órdenes o instrucciones de trabajo queguían, paso a paso, el funcionamiento de la máquina.

    Esto lleva a una primera estructuración: debe haber una unidad de memoria y una unidad de procesoaritmética y lógica, así como una unidad de control. La memoria debe poder contener el programa y los datos,además de resultados parciales de las operaciones en curso. Estas tres unidades básicas conforman la unidadcentral de procesos (CPU, Central Process Unit).

    Hoy en día, tanto las computadoras con gran volumen de memoria y alta velocidad de proceso (mainframe) comolas computadoras personales de nuestras oficinas y hogares o las máquinas de videojuegos tienen una CPU conesta misma estructura que cumple las mismas funciones básicas.

    La arquitectura de von Neumann se sigue usando actualmente para la construcción de casi todaslas computadoras.

    Sin embargo, para realizar su trabajo, la computadora debe tener componentes que permitan ingresar los datos yel programa, y sería inútil sin otros destinados a entregar los resultados solicitados: los periféricos de entrada yde salida. Un periférico típico de entrada es el teclado y uno de salida, la impresora o el monitor de vídeo, quepermiten una mejor interacción del usuario con la máquina.

    Podéis consultar el apartado "Periféricos" del núcleo de conocimiento "La unidad de entrada/salida" de esteapartado.

    Como ya habréis deducido, el modelo arquitectónico de von Neumann cuenta con los cuatro elementosarquitectónicos básicos siguientes:

    Esquema de la arquitectura Von Neumann

    Arquitectura von Neumann

    La unidad central de procesos o CPU se subdivide en tres partes importantes:

    Memoria principal

    Procesador (ALU + UC)

    Unidad de entrada/salida

    Memoria principal

    Unidad aritmética y lógica (ALU)

  • Unidad de control (UC)

    Unidad de entrada/salida (E/S)

    Esta estructura dota al ordenador de la capacidad de ir ejecutando instrucciones elementales llamadasinstrucciones de lenguaje máquina. Son instrucciones muy básicas que se ejecutan muy rápidamente de formasecuencial. El conjunto de todas ellas forma los programas.

    Un programa en lenguaje máquina es un conjunto ordenado de instrucciones de máquinaseleccionadas y organizadas para realizar un algoritmo.

    La memoria principal

    La memoria principal es el lugar donde se almacenan tanto los programas como los datos que usa el programa, demanera que es una de las partes fundamentales de la arquitectura de von Neumann. En una primera aproximaciónse puede ver la memoria principal como un conjunto de celdas capaces de almacenar información, bien seaninstrucciones del programa, bien sean datos en forma de números o caracteres alfanuméricos. Cada una dedichas celdas está identificada unívocamente por un número al que llamaremos a partir de ahora dirección dememoria.

    La memoria principal suele ser una memoria volátil, es decir, que al interrumpirse el flujo de corriente eléctrica(cuando se apaga la computadora) pierde todos sus datos.

    La memoria principal debe ser una memoria de acceso aleatorio o RAM (Random Acces Memory). Esto significaque el procesador puede acceder directamente, sin necesidad de leer las casillas anteriores, a la información decualquier casilla de la memoria.

    Como ya hemos mencionado, la memoria se estructura en casillas. Cada casilla tiene capacidad para almacenarun byte, es decir, 8 bits. Cada casilla, a su vez, está numerada, y a este número lo llamaremos dirección dememoria. En la memoria se almacenan tanto los datos como las instrucciones del programa que se estáejecutando. Es condición imprescindible, pues, que antes de ejecutar un programa éste se cargue en memoria(recordemos que éste es uno de los aspectos cruciales de la arquitectura von Neumann).

    Las memorias RAM son tanto de lectura como de escritura, en contraste con las memorias que son de sololectura o ROM (Read Only Memory). Para escribir un dato, éste debe ponerse en el bus de datos, hay que activarla señal de escritura y poner en el bus de direccionamiento la dirección de la casilla en la que debe almacenarse.Para la lectura sólo hay que informar al bus de direccionamiento sobre la dirección de la casilla de la cual se deseaextraer la información, y a continuación activar la señal de lectura. El dato se cargará en el bus de datos y llegará alprocesador.

  • Esquema de una memoria con sus casillas, bus de direccionamiento, línea de control de escritura/lectura,bus de datos, etc.

    Esquema memoria

    La unidad aritmética y lógica

    Ésta es la unidad que realiza las operaciones aritméticas y lógicas que sean necesarias.

  • Tablas de verdad para las operaciones lógicas AND, OR, XOR, NAND, NOR, NOT

    A B A AND B A B A OR B0 0 0 0 0 00 1 0 0 1 11 0 0 1 0 11 1 1 1 1 1

    A B A NAND B A B A NOR B0 0 1 0 0 10 1 1 0 1 01 0 1 1 0 01 1 0 1 1 0

    A B A XOR B A NOT A0 0 0 0 10 1 1 1 01 0 1 1 1 0

    La unidad aritmética y lógica está formada por una serie de circuitos digitales que permiten haceroperaciones aritméticas como sumar, restar, multiplicar, dividir, etc. y operaciones lógicas comoand, or, xor, etc.

    Esta unidad opera con datos almacenados en unos contenedores que llamaremos registros (los registros soncomo casillas individuales de memoria que residen en el propio procesador). El acceso a dichos datos es muyrápido, de modo que las operaciones se hacen en tiempos extremadamente cortos. Hay muy pocos registros, losvalores típicos estarían entre 8 y 16, lo que exige una constante ida y venida de datos desde los registros a lamemoria principal y viceversa.

    Esquema de unidad aritmética y lógica

    Esquema ALU

  • La unidad de control

    La unidad de control es la encargada de coordinar todos los componentes y los flujos de datos. Es muy complejaen computadoras grandes; sin embargo, su estructura en computadoras pequeñas es una buena ilustración de sussistemas básicos. Podemos dividir la citada estructura en varias partes:

    Esquema de la unidad de control con todos sus elementos

    Unidad de control

    Además de los registros que se explicitan en el esquema superior, en la unidad de control residen un númeroindeterminado (variable según el tipo de procesador) de registros. Estos registros son como pequeñas celdasunitarias de memoria que utiliza el procesador para almacenar datos que se usan para ejecutar las instruccionesde los programas. Estos datos suelen recogerse de la memoria principal y se devuelven a ésta si el programa asílo requiere. En los apartados en que se simule la ejecución de programas se verá la función real de dichosregistros.

    La memoria tampón o caché, en la que se mantienen temporalmente datos que fluyen desde la memoriaprincipal (RAM) o hacia la misma. Actualmente, la memoria caché se encuentra en casi todos los ordenadores;es una pequeña memoria adicional muy rápida que complementa la memoria principal y que permite aumentarsustancialmente las prestaciones de la computadora.

    El contador de programa, que contiene la dirección de la siguiente instrucción pendiente de ser ejecutada.

    El registro de dirección, que contiene la dirección de la celda de memoria (RAM) en la que se está leyendo oescribiendo.

    El registro de instrucciones, que contiene el código de la instrucción en curso de ejecución.

    El decodificador, dispositivo que interpreta la instrucción y dirige los flujos de información de manera que lainstrucción se lleve a cabo adecuadamente.

  • El registro de estado mantiene información que afecta al funcionamiento de la unidad de control.

    En máquinas más complejas se agrega, además, un controlador de entradas y salidas que administra todo el flujohacia los periféricos y desde los mismos.

    El procesador es el conjunto formado por la unidad de control y la unidad aritmética y lógica.

    La unidad de entrada/salida

    Esta unidad se encarga de gestionar la comunicación del ordenador con el mundo exterior. Su función es gestionartanto los datos que le llegan de los periféricos de entrada como los que, procedentes del ordenador, tienen comodestino los periféricos de salida.

    La velocidad de los periféricos suele ser muy inferior a la velocidad del ordenador. La unidad de entrada/salida nosólo se encarga de establecer la conexión ordenador-periférico, sino que también se encarga de adaptar lasvelocidades entre ambos, minimizando el tiempo que el ordenador dedica a atender estas peticiones.

    La unidad de entrada/salida (E/S) se encarga de conectar el ordenador a las unidades exterioresllamadas periféricos.

    Periféricos

    Como ya hemos dicho, los periféricos nos ayudan a introducir y a extraer información del ordenador. Hay una granvariedad de periféricos, muchos de ellos imprescindibles para el uso del ordenador. Los podemos clasificar en dosgrandes grupos según su naturaleza funcional:

    Periféricos de almacenamiento de información. Guardan los datos.

    Los periféricos de almacenamiento tienen como característica común un incremento muy fuerte de sucapacidad a lo largo de la historia de la informática, y sucede algo similar con respecto a su velocidad. Sonelementos lentos con respecto a las velocidades de proceso que ofrece el ordenador, pero cada vez presentanuna mayor velocidad.

    Podéis consultar el núcleo de conocimiento "Dispositivos de almacenamiento de datos" del módulo "Gestión dedatos".

    Periféricos de comunicación. Permiten la entrada y la salida de datos.

  • El punto crítico de los periféricos de comunicación es la velocidad, al igual que sucedía en el caso de los dealmacenamiento. Este parámetro está creciendo a pasos agigantados a medida que la tecnología evoluciona. Sonperiféricos de comunicación los siguientes:

    Impresoras. Pueden ser de muchos tipos. Hay impresoras matriciales, de margarita, de inyección de tinta yláser. En general son elementos lentos, aunque sus velocidades dependen mucho de la tecnología y del precioque se esté dispuesto a pagar por ellas. La velocidad en estos dispositivos se mide en páginas por minuto opáginas en color por minuto.

    Pantalla. Existen varios tipos de pantallas, las pantallas de cristal líquido que suelen montarse en losordenadores portátiles, las pantallas de rayos catódicos, las pantallas planas, etc. Las características másimportantes son la dimensión de la diagonal de la pantalla, la resolución que es capaz de alcanzar, etc. Otroparámetro interesante es la dimensión del píxel: cuanto menor sea éste, mayor nitidez de imagen tendremos.Para el bien de los ojos del usuario es imprescindible que estén homologadas como pantallas de bajaradiación.

    Valores típicos para la diagonal de pantalla pueden ser: 12 ó 14 pulgadas para las pantallas de losordenadores portátiles; 15, 17 ó 19 pulgadas para las pantallas de rayos catódicos y 15 ó 17 pulgadas para laspantallas planas.

    Típicamente se usan resoluciones de 800 · 600, 1.024 · 768, 1.600 · 1.200, siempre adecuándose a ladimensión de la pantalla.

    Tenemos como valor típico de dimensión el píxel de 0,25 mm.

    Teclado. Hay una gran variedad de teclados. Se distinguen por la tecnología utilizada, por la distribución de lasteclas, etc. Disponemos de teclados inalámbricos por radiofrecuencia, inalámbricos por infrarrojos, tecladoscon la distribución de la teclas ergonométrica con el fin de adecuarse mejor a la posición de manos y brazos,etc.

    Ratón o mouse. También existe un variado surtido de ejemplares: inalámbricos por radiofrecuencia,inalámbricos por infrarrojos, con dos botones, con tres botones, con funcionalidades extras para navegar enInternet, etc.

    Escáner. El parámetro más importante de estos dispositivos es su resolución óptica, que es el parámetroequivalente a la resolución en las pantallas. La velocidad en general es lenta, pero como en el caso de lasimpresoras, la calidad de sus características es muy variable en función de su coste.

    Módem. Es el dispositivo que modula la señal de salida del ordenador para que se pueda transmitir a la líneatelefónica. De la misma forma, modula la señal que nos llega vía línea telefónica para que la entiendan lossistemas internos del ordenador. El parámetro más importante de este tipo de dispositivos es la velocidad detransmisión.

    Hoy en día, la velocidad típica de los módems es de 56 Kbps, aunque suelen ser asimétricos: son capaces derecibir a 56 Kbps (canal de bajada), pero sólo transmiten a 33 Kbps (canal de subida).

    Etc.

  • Código máquina

    Introducción

    Los programadores son capaces de escribir programas complejos con los distintos lenguajes de programación deque se dispone hoy día. Conceptualmente, los lenguajes pueden tener mayor o menor complejidad, pero todostienen una sintaxis y unas instrucciones propias que el programador debe conocer para poder escribir códigoscorrectos y eficientes.

    El léxico de un lenguaje de programación es una herramienta de comunicación entre elprogramador y la herramienta de programación, pero el procesador del ordenador no entiende eselenguaje, el procesador tiene su propio lenguaje, sus propias instrucciones, es incapaz, por tanto,de ejecutar las órdenes que describe el lenguaje del programador.

    Como podemos deducir del párrafo anterior, hay un problema. El problema reside en que el procesador delordenador tiene sus propias instrucciones y sólo es capaz de ejecutar este tipo de instrucciones. Las instruccionesdel procesador son muy básicas y poco flexibles, de manera que programar aplicaciones complejas sería pocomenos que imposible.

    Los programadores realizan programas utilizando lenguajes de alto nivel como C, C++, Delphi, Java, VisualBasic,PowerBuilder, etc. Estos lenguajes de alto nivel tienen características muy distintas, pero todos ofrecen alprogramador un juego de sentencias, una sintaxis y, a menudo, un entorno de programación que facilita dichatarea.

    Como hemos indicado, los programas escritos por los programadores (simples ficheros en modo texto) no soninteligibles para la computadora, por lo que deberá haber alguien que haga la traducción del lenguaje de alto nivela las instrucciones que puede ejecutar el procesador. Este paso recibe el nombre de compilación.

    El compilador es quien traduce las sentencias de alto nivel a sentencias de lenguaje máquina; enotras palabras, es quien pasa los ficheros fuente (ficheros de texto escritos en el lenguaje de altonivel) a ficheros ejecutables (ficheros binarios escritos en lenguaje máquina).

    Cada procesador tiene su propio juego de instrucciones máquina. El número de instrucciones máquina no es muygrande, oscila entre las sesenta y las doscientas cincuenta. La particularidad de las instrucciones propiedad decada procesador impide que un programa compilado para un determinado tipo de procesador sea ejecutable enotro.

    Desde mediados de la década de los noventa se ha popularizado el lenguaje de programación Java. Dejandoaparte su potencia, una de las claves de su éxito radica en que los ficheros compilados en Java se pueden ejecutaren cualquier máquina.

  • Esto se consigue porque el compilador de Java no traduce el código fuente a instrucciones máquina propias delprocesador, sino que construye los llamados archivos en bytecode. Si se ha instalado previamente en lascomputadoras en las que se pretende ejecutar el programa escrito y compilado en Java lo que se llama unamáquina virtual Java, podremos ejecutar los programas en dicho lenguaje, ya que esta máquina virtual es la quetraduce los bytecodes a instrucciones máquina del procesador en tiempo de ejecución.

    Los lenguajes cuyo código debe ser compilado para que se pueda llevar a cabo su ejecución reciben el nombre delenguajes compilados, mientras que aquellos que poseen un intérprete que va traduciendo el código a lenguajemáquina en tiempo de ejecución se llaman lenguajes interpretados. En general, los lenguajes interpretados sonmás lentos que los compilados. Son lenguajes compilados C, Pascal, C++, VisualBasic, Cobol, etc. Los lenguajesinterpretados son menos abundantes; entre éstos destacan el lenguaje Java y Developer 2000.

    Morfología de las instrucciones

    Las instrucciones de lenguaje máquina (en ocasiones también llamado lenguaje ensamblador) se apoyan en losregistros de la unidad de control, que los necesita para alimentarse de datos para ejecutar la instrucción.

    Una instrucción en lenguaje máquina tiene típicamente tres partes claramente diferenciadas (nombre instrucción,operador 1 y operador 2).

    Nombre instrucción Operador 1 Operador 2

    Nombre de la instrucción: caracteriza la acción que debe llevar a cabo el procesador.

    Operadores: contienen los datos o la referencia a los datos que van a usarse en la acción indicada por lainstrucción.

    No todas las instrucciones precisarán de operandos; pueden aparecer los dos, sólo uno o ninguno.

    El resultado de la operación se almacena en alguno de los operadores o bien en el registro deestado de la unidad de control dependiendo de la naturaleza de la instrucción.

    La pila o stack

    La pila es una porción de memoria que tiene un comportamiento un tanto singular. Es un recurso muy utilizado enla programación.

    La pila actúa como un pozo en el que vamos depositando datos, y no podemos extraer un dato sipreviamente no hemos extraído los datos que hay por encima de éste.

    Este comportamiento se denomina técnicamente LIFO (Last In First Out), es decir, el último en entrar en la pilaserá el primero en salir y viceversa. La pila es un recurso muy utilizado en programación. En el juego deinstrucciones de los procesadores hay instrucciones explícitas para el uso de la pila, para introducir datos en ésta yextraerlos.

    La instrucción para la entrada de datos en la pila se llama push, mientras que la de extracción se denomina pop.Morfológicamente, las instrucciones de inserción y extracción seguirían la siguiente estructura:

    Push Operador 1 --

    Pondrá el valor del operador 1 en la pila.

    Pop Operador 1 --

    Recuperará el dato que se encuentre en la cima de la pila y lo escribirá en el registro indicado en el operador 1.

  • Instrucciones básicas en código máquina

    Hay un pequeño grupo de instrucciones básicas comunes a la gran mayoría de los procesadores.

    Los principales tipos de instrucciones son:

    aritméticas,

    de transferencia,

    lógicas,

    de bifurcación.

    En la tabla adjunta podemos consultar una lista de las instrucciones principales.

  • Instrucciones básicas

    Instrucción Operador 1 Operador 2 Descripción Instrucciones aritméticas

    Add A B Suma A + B y deja el resultado en A (A + B ! A). Sub A B Resta A – B y deja el resultado en A (A – B ! A). Mul A B Multiplica A · B y deja el resultado en A (A · B ! A). Div A B Divide A / B y deja el resultado en A (A / B ! A). Inc A Incrementa A en una unidad (A + 1 ! A). Dec A Decrementa A en una unidad (A – 1 ! A). Neg A Multiplica A por –1 [A · (–1) ! A]. Abs A Nos devuelve el valor absoluto de A [si A < 0 entonces A ·

    (–1) !"A. Para el caso de que A > 0, entonces A ! A]. Mod A B Nos devuelve el resto del cociente entre A y B [A = B·

    cociente (A/B) + resto, resto ! A].

    Instrucciones de transferencia Move A B Mueve el contenido de A hacia B (A ! B), sin borrarlo de A. Store A B Almacena el contenido de A en la dirección de memoria B (A

    ! @B). Load A B Lee el contenido de la dirección de memoria B en el registro A

    (A # @B). Push A Introduce el contenido de A en la pila (A ! stack). Pop A Devuelve el primer elemento de la pila a A (stack ! A). Clear A Repone a 0 el registro A (A = 0). Set A Fuerza a que todos los bits del registro A sean 1 (A =

    ’11111111’ para un registro de 8 bits).

    Instrucciones lógicas Shr A Desplazamiento lógico (bit a bit) hacia la derecha, equivale a

    dividir por 2. Shl A Desplazamiento lógico (bit a bit) hacia la izquierda, equivale a

    multiplicar por 2. Cmp A B Comparación lógica bit a bit mediante un XOR (A XOR B !

    A). Test A Compara A con 0, deja el resultado en el registro de estado. And A B Operación lógica AND ((A AND B) ! A). Or A B Operación lógica OR ((A OR B) ! A). Xor A B Operación lógica XOR ((A XOR B) ! A). Nop - - No hace nada, puede usarse en un bucle de espera.

    Instrucciones de bifurcación Branch if no zeroN

    - - Escribe en el contador de programa el número N si el registrode estado nos indica que la operación anterior ha dado unresultado diferente de cero.

    Branch if zero N - - Escribe en el contador de programa el número N si el registrode estado nos indica que la operación anterior ha dado unresultado igual a cero.

    Jump N - - Se usa para alterar la ejecución secuencial del programa.Provoca un salto a la instrucción N, es decir, provoca que elcontador de programa apunte a la dirección de memoria N.

    En la tabla adjunta se describe el comportamiento de las operaciones lógicas básicas AND, OR, XOR, NAND,

  • NOR y NOT.

    Tablas de verdad para las operaciones lógicas AND, OR, XOR, NAND, NOR, NOT

    A B A AND B A B A OR B0 0 0 0 0 00 1 0 0 1 11 0 0 1 0 11 1 1 1 1 1

    A B A NAND B A B A NOR B0 0 1 0 0 10 1 1 0 1 01 0 1 1 0 01 1 0 1 1 0

    A B A XOR B A NOT A0 0 0 0 10 1 1 1 01 0 1 1 1 0

    Ejecución de programas

    Introducción

    En este apartado se pretende dar una visión de alto nivel de cómo un ordenador con la estructura de von Neumannes capaz de ejecutar programas, seguir los algoritmos descritos por el programador y llegar a la resolución delproblema. Para conseguirlo, el ordenador debe dar disciplinada y repetitivamente los pasos siguientes:

    1. Cargar el programa en memoria.

    2. Poner en el contador de programa (PC, Program Counter) la dirección de memoria de la primera instrucciónque hay que ejecutar.

    3. Leer la instrucción que aparece en la dirección indicada por el PC.

  • 4. Ejecutar la instrucción.

    5. Actualizar el registro de estado en caso de que sea necesario.

    6. Actualizar el PC.

    7. Volver al paso 3.

    Este ciclo se cerrará en el momento en que se terminen las instrucciones.

    Cargar el programa en memoria

    Debemos recordar que uno de los puntos clave de la arquitectura de von Neumann es la separación de los datosdel programa, así como que es imprescindible cargar el programa en memoria previamente a su ejecución.

    Hemos visto que la memoria era una sucesión de casillas capaces de almacenar datos. Deberíamos matizar quela memoria está estructurada en partes.

    Podéis consultar el núcleo de conocimiento "La memoria principal" del apartado "Arquitectura de von Neumann".

    Hay una zona de memoria destinada a almacenar el sistema operativo, otra, destinada a almacenarlos códigos de programas en ejecución, otra para datos y otra que contendrá la pila.

    Intuitivamente podemos ver que esta estructuración es necesaria, pero no suficiente. Por ejemplo, deberíamosproteger la zona donde se albergará el sistema operativo, puesto que si escribimos en esa zona los daños puedenser irreparables.

    Podéis consultar el apartado "Sistemas operativos".

    El concepto importante es que no deberíamos poder escribir en cualquier sitio de la memoria ya que hay una partede la memoria destinada a cada tarea.

    Para ilustrar los conceptos anteriores supondremos el caso imaginario de la existencia de un ordenador con unamemoria de cien casillas (éste es un caso ficticio, puesto que las memorias de los ordenadores actuales tienencientos de miles de casillas, y en algunos casos, varios millones).

    Se destinaría la memoria alta al sistema operativo, supongamos que de la casilla 0 a la 19. Las siguientes treintacasillas podrían estar destinadas a las aplicaciones en curso, de manera que de la casilla 20 a la 49 las tendríamosreservadas para almacenar las instrucciones máquina de las aplicaciones en ejecución. Se habilitaría otra zona, dela casilla 50 a la 89, para contener los datos que puedan utilizar las aplicaciones. Finalmente, dispondríamos unúltimo tramo de diez casillas, de la 90 a la 99, para la pila (recordad que según el manejo de las pilas este tramo dememoria se rellenaría de manera inversa: se empezaría por la casilla 99, el segundo dato se almacenaría en la 98,el siguiente en la 97, etc.).

  • Memoria

    1-9 Espacio reservado a almacenar el sistema operativo

    10-19 20-29

    Espacio reservado a almacenar el código máquina de las aplicaciones activas 30-39 40-49 50-59

    Espacio reservado a almacenar los datos de las aplicaciones activas 60-69 70-79 80-89 90-100 Espacio reservado a almacenar la pila o stack

    Podéis consultar el núcleo de conocimiento "La pila o stack" del apartado "Código máquina".

    Una vez cargado el programa en memoria empezaría su ejecución. Dado que el movimiento se demuestraandando, vamos a poner un ejemplo y a simular el comportamiento de la máquina de von Neumann.

    Ejecución de un algoritmo en código máquina

    Para simular la ejecución de un algoritmo, primero debemos resolver un problema y escribir el algoritmo quesupuestamente lo soluciona. Una vez tenemos la supuesta solución, debemos ejecutarlo.

    Para llevar a cabo la demostración supondremos que se desea sumar n números naturales consecutivos.

    Carl Friedrich Gauss

    Gauss no ha sido el matemático más prolífico de la historia, pero sí uno de los más geniales, además de niñoprodigio. Cuenta la anécdota que, a temprana edad –a los siete años–, un día Gauss y sus compañeros estabanarmando alboroto en clase. El profesor, harto del descontrol, castigó a toda la clase a sumar los cien primerosnúmeros naturales. Todos los alumnos tomaron sus encerados y empezaron la larga suma. La sorpresa se la llevóel profesor cuando, al cabo de poco tiempo, el pequeño Gauss le contestó: 5.050. El profesor, asombrado, selevantó y fue a ver los cálculos del niño. Contrariamente a lo esperado y a lo que el resto de la clase habíaempezado a hacer, Gauss no había sumado 1 + 2 + 3 + 4 + 5 + 6 + 7..., sino que procedió de la siguiente forma.

    Sorprendente, ¿verdad? Gauss, con sólo siete años de edad y aprovechando un castigo del colegio, fue capaz dedemostrar que la suma de una progresión aritmética es N · (N + 1) / 2, donde N es el número de sumandos.

    Nosotros, puesto que no pretendemos ser Gauss, en el ejemplo del algoritmo usaremos el método que usaron suscompañeros: 1 + 2 + 3 + 4 + 5...

  • El algoritmo que sigue resuelve el citado problema:

    1 Load A,B Lee el contenido de la casilla indicada por el registro B y loalmacena en el registro A.

    2 Inc B Incrementa el valor del registro B. 3 Load C,B Lee el contenido de la casilla indicada por el registro B y lo

    almacena en el registro C. 4 Sub C,A Resta el valor del registro A del valor contenido en el registro C. 5 Move A,B Copia el valor del registro A en el registro B. 6 Inc A Incrementa el valor del registro B. 7 Add B,A Suma el valor del registro A al contenido del registro B. 8 Dec C Disminuye en una unidad el valor del registro C. 9 Test C Compara el valor del registro C con cero. Deja constancia de la

    comparación en el registro de estado. Para simplificar diremosque el registro de estado se pone a 0 si la comparación ha dadocomo resultado que el contenido en C era 0. En cualquier otrocaso, el registro de estado adoptará el valor 1.

    10 Branch if no zero 5 Pone el contador de programa a 5 si el registro de estado está a0.

    Si continuamos con una memoria de una estructura como la que hemos visto antes, al cargar el programa en lamemoria obtendremos el siguiente esquema:

    Memoria

    1-9 Espacio reservado a almacenar el sistema operativo

    10-19 20-29

    Espacio reservado a almacenar el código máquina de las aplicaciones activas 30-39 40-49 50-59

    Espacio reservado a almacenar los datos de las aplicaciones activas 60-69 70-79 80-89 90-100 Espacio reservado a almacenar la pila o stack

  • Dirección de memoria Contenido1 2 ...23 Load A,B 24 Inc B 25 Load C,B 26 Sub C,A 27 Move A,B 28 Inc A 29 Add B,A 30 Dec C 31 Test C 32 Branch if no zero 5 33 34 ...73 174 575 98 99

    Según el esquema superior, la máquina de von Neumann ha cargado el código máquina de nuestro algoritmo en lamemoria. Concretamente, lo ha ubicado en las direcciones que van de la 23 a la 32. Del mismo modo, en lasdirecciones 73 y 74 (dentro de la zona reservada a los datos) ha introducido dos valores numéricos.

    Recordad que el problema original era encontrar el valor de:

    De manera que los datos almacenados en las posiciones 73 y 74 se corresponden con los límites inferior ysuperior del sumatorio. (N1 y N2 respectivamente).

  • En la tabla adjunta se puede hacer un seguimiento de todos los pasos que sigue el computador para llegar a lasolución; en otras palabras, se sigue paso a paso la ejecución del programa. Observemos que se han usado tresde los registros que hay disponibles en la unidad de control; en este ejemplo se han llamado registro A, registro By registro C.

    En la siguiente tabla se describe cómo actúa la máquina de von Neumann para llegar a la solución.

    Algoritmo de la progresión aritmética

    Instrucción Contadorprograma

    Registro A Registro B Registro C Registroestado

    @memoria73

    @memoria74

    Condicionesiniciales

    23 Null 73 Null - 1 5

    Observad que en las condiciones iniciales el contador de programa está apuntando a la primera instrucción quehay que ejecutar. El registro B contiene la dirección de memoria en la que reside el primer número. Para el niveldeseado en este curso nos desentendemos de quién es el responsable de que este dato esté puesto ahí.Tampoco importa el valor del registro de estado, sólo lo utilizaremos en las instrucciones de comparación.

    Load A,B 24 1 73 Null - 1 5 Leemos el valor de la dirección de memoria 73 y lo almacenamos en el registro A, mientras que el resto de losregistros quedan inalterados. Una vez concluida la operación, el contador de programa aumentará en una unidadpara ejecutar la siguiente instrucción.

    Inc B 25 1 74 Null - 1 5 Se incrementa el valor del registro B en una unidad. Una vez concluida la operación, el contador de programatambién aumentará en una unidad.

    Load C,B 26 1 74 5 - 1 5 Leemos el valor de la dirección de memoria 74 y lo almacenamos en el registro C, mientras que el resto de losregistros queda inalterado. Una vez concluida la operación, el contador de programa aumentará en una unidadpara ejecutar la siguiente instrucción.

    Sub C,A 27 1 74 4 - 1 5 Se sustrae el valor del registro A del valor que tenía el registro C. Como siempre, si la operación finaliza con éxito,se incrementa una unidad el contador de programa.

    Move A, B 28 1 1 4 - 1 5 Se copia el contenido del registro A en el registro B. Al acabar se incrementa el contador de programa.

    Inc A 29 2 1 4 - 1 5 Se incrementa el valor del registro A en una unidad. Una vez concluida la operación, el contador de programa

  • también aumentará en una unidad. Add B,A 30 2 3 4 - 1 5

    Se suma el valor del registro A al del registro B. Al finalizar se incrementa el valor del contador de programa enuna unidad.

    Dec C 31 2 3 3 - 1 5 Se reduce el valor del registro C en una unidad. Una vez concluida la operación, el contador de programaaumentará en una unidad.

    Test C 32 2 3 3 1 1 5 Ésta es una instrucción de comparación, no altera ninguno de los valores de los registros de la CPU excepto elregistro de estado. Se pone a uno si el contenido de C es distinto de cero y, en caso de que el contenido de C seacero, se pone a cero. Incrementa el valor del contador de programa. Branch if no

    zero 28 28 2 3 3 - 1 5

    Ésta es una instrucción de bifurcación, se usa para alterar el flujo secuencial del programa. Se basa en el valordel registro de estado, en caso de que éste sea distinto de cero fuerza a que la siguiente instrucción que seejecute sea la que está en la dirección de memoria número 28. En caso contrario, se aumentaría el contador deprograma en 1 unidad.

    Inc A 29 3 3 3 - 1 5 Add B,A 30 3 6 3 - 1 5 Dec C 31 3 6 2 - 1 5 Test C 32 3 6 2 1 1 5

    Branch if nozero 28

    28 3 6 2 - 1 5

    Inc A 29 4 6 2 - 1 5 Add B,A 30 4 10 2 - 1 5 Dec C 31 4 10 1 - 1 5 Test C 32 4 10 1 1 1 5

    Branch if nozero 28

    28 4 10 1 - 1 5

    Inc A 29 5 10 1 - 1 5 Add B,A 30 5 15 1 - 1 5 Dec C 31 5 15 0 - 1 5 Test C 32 5 15 0 0 1 5

    Observad que en esta ocasión la comparación del valor del registro C con cero es cierta; por consiguiente, elregistro de estado adopta también este mismo valor. Branch if no

    zero 28 33 5 15 0 - 1 5

    Contrariamente a lo que había sucedido hasta ahora, en este momento tenemos el registro de estado a 0, lo quesupone que no se cumple la condición de la instrucción máquina, por lo que no se alterará el flujo de la ejecuciónnatural del algoritmo. Dejaremos de entrar en el bucle en el que nos habíamos introducido y el contador deprograma se incrementará en una unidad. Sucederá que en la posición número 33 de la memoria no seencontrará ninguna instrucción, lo que nos indica que ha finalizado la ejecución del programa.

    Observad que el resultado objetivo de nuestro algoritmo ha quedado almacenado en el registro C:

    Además de los registros que se explicitan en el esquema superior, en la unidad de control residen un númeroindeterminado (variable según el tipo de procesador) de registros. Estos registros son como pequeñas celdasunitarias de memoria que utiliza el procesador para almacenar datos que se usan para ejecutar las instruccionesde los programas. Estos datos suelen recogerse de la memoria principal y se devuelven a ésta si el programa asílo requiere. En los apartados en que se simule la ejecución de programas se verá la función real de dichosregistros.

  • Código máquina frente a lenguaje de alto nivel

    El algoritmo que acabamos de resolver no suele escribirse en código máquina, sino que se escribe con lenguajesde alto nivel. Veamos el seudocódigo que usaría un lenguaje de alto nivel:

    N1 = Input ‘Introduzca el primer número de la serie: ’

    N2 = Input ‘Introduzca el último número de la serie: ’

    Resultado = 0

    FOR i = N1 TO N2 STEP BY 1

    Resultado = Resultado + i

    END FOR

    Analicemos este código instrucción a instrucción:

    Primero se pide al usuario que entre los límites del sumatorio (las dos primeras líneas). Se almacenan losvalores en las variables N1 y N2 que luego se usarán como cotas en el bucle FOR.

    Se inicializa la variable del resultado a 0. Inicializar las variables es muy importante, ya que evita que en lazona de memoria que se le ha asignado haya algún valor que acabe falseándonos el resultado del algoritmo.

    El código que hay dentro del bucle FOR (el código comprendido entre la sentencia FOR i = ... hasta lasentencia END FOR) se ejecuta iterativamente hasta que la variable de control del bucle, en este caso lavariable "i", supera el límite superior del bucle "N2". En el primer ciclo del bucle, la variable "i" adopta el valor"N1" y va incrementándose en cada iteración con la cantidad indicada en la cláusula STEP BY. Para este casose incrementa de una unidad en una unidad.

    Como se puede comprobar, los lenguajes de alto nivel son mucho más inteligibles. Son los que se utilizan lamayoría de las veces en programación. Una vez escrito el algoritmo, se compila. El trabajo del compilador es pasarde un fichero de texto con el código (fichero fuente) a un fichero escrito en código máquina (fichero ejecutable)como el que hemos estudiado en el apartado anterior.

    Sistemas operativos

    Introducción

    Sin el software, una computadora no es más que una masa metálica sin utilidad; con el software, una computadorapuede almacenar, procesar y recuperar información, en definitiva, hacer trabajo útil.

    El software para computadoras en general se puede clasificar en dos clases:

    Los programas de sistema que controlan la operación de la computadora en sí.

  • Los programas de aplicación que resuelven problemas para sus usuarios.

    El programa fundamental de todos los programas de sistema es el sistema operativo (SO), quecontrola todos los recursos de la computadora y proporciona la base sobre la cual puedenescribirse los programas de aplicación.

    ¿Qué es un sistema operativo?

    En el origen de la historia de las computadoras modernas (hace unos cuarenta años), los sistemas operativos noexistían y la introducción de un programa para ser ejecutado se convertía en un increíble esfuerzo que sólo podíanllevar a cabo muy pocos expertos. Esto hacía que las computadoras fueran muy complicadas de usar y que serequiriera tener altos conocimientos técnicos para operar con ellas. Era tan complejo su manejo que en algunoscasos el resultado llegaba a ser desastroso.

    Además, el tiempo requerido para introducir un programa en aquellas grandes máquinas de lento procesosuperaba en mucho el de ejecución y resultaba poco provechosa la utilización de computadoras para resolución deproblemas prácticos.

    Se buscaron medios más elaborados para manipular la computadora, medios que, a su vez, simplificaran la labordel operador o del usuario. Entonces surgió la idea de crear un medio para que el usuario pudiese operar lacomputadora con un entorno, lenguaje y operación bien definido para hacer un verdadero uso y explotación deésta. Nacen los sistemas operativos.

    Un sistema operativo es el encargado de brindar al usuario una forma amigable y sencilla deoperar, interpretar, codificar y emitir las órdenes al procesador central para que éste realice lastareas necesarias y específicas con el fin de completar una orden.

    El sistema operativo es el instrumento indispensable para hacer de la computadora un objeto útil. Con este nombrese agrupan todos aquellos programas que hacen que los usuarios puedan hacer uso de ese enredo de cables ycircuitos que, de otra manera, sería difícil de controlar.

    Un sistema operativo se define como un conjunto de procedimientos manuales y automáticos queconsiguen que un grupo de usuarios puedan compartir una instalación de computadora demanera eficaz.

    Interfaz de línea de comandos

    La línea de comandos es la forma de interfaz entre el sistema operativo y el usuario en la que éste escribe loscomandos utilizando un lenguaje de comandos especial.

    Los sistemas con interfaces de líneas de comandos se consideran más difíciles de aprender y utilizar que los delas interfaces gráficas. Sin embargo, los sistemas basados en comandos por lo general son programables, lo queles otorga una flexibilidad que no tienen los sistemas basados en gráficos carentes de una interfaz deprogramación.

    Interfaz gráfica del usuario

    Es el tipo de visualización que permite al usuario elegir comandos, iniciar programas y ver listas de archivos y otrasopciones utilizando las representaciones visuales (iconos) y las listas de elementos del menú. Las seleccionespueden activarse con el teclado o con el ratón (o mouse).

    Para los autores de aplicaciones, las interfaces gráficas de usuario ofrecen un entorno que se encarga de lacomunicación con el ordenador o computadora. Esto hace que el programador pueda concentrarse en lafuncionalidad, ya que no está sujeto a los detalles de la visualización ni a la entrada con el ratón o el teclado.También permite a los programadores crear programas que realicen de la misma forma las tareas más frecuentes,como guardar un archivo, porque la interfaz proporciona mecanismos estándar de control como ventanas ycuadros de diálogo. Otra ventaja es que las aplicaciones escritas para una interfaz gráfica de usuario sonindependientes de los dispositivos: a medida que la interfaz cambia para permitir el uso de nuevos dispositivos deentrada y salida, como un monitor de pantalla grande o un dispositivo óptico de almacenamiento, las aplicacionespueden utilizarlos sin necesidad de cambios.

  • Uso de la interfaz de línea de comandos frente a la interfaz gráfica

    Son sistemas operativos con la interfaz de línea de comandos MS-DOS, Linux, UNIX, etc., aunque algunos deéstos, como Linux o algunas versiones de UNIX, disponen de interfaz gráfica.

    Son sistemas operativos con la interfaz gráfica todos los Windows, OS2, Macintosh, etc.

    Veamos un ejemplo de cómo funcionan ambas interfaces. Imaginemos que tenemos un directorio o carpeta (lallamaremos carpeta A) llena de archivos y los queremos copiar todos en una carpeta (la llamaremos carpeta B)que está dentro de nuestra carpeta A que contiene los archivos mediante la interfaz de línea de comandos.

    UNIX, Linux: nos situamos en el directorio de la carpeta A y escribimos:

    cp ./*.* ./nombreCarpeta_B/

    MSDOS: nos situamos en el directorio de la carpeta A y escribimos:

    copy *.* nombreCarpeta_B\*.*

    Interfaz de comandos MS-DOS

    Mediante una interfaz gráfica como la que nos ofrecen los diferentes tipos de Windows, los pasos serían:

    Abrir el explorador de archivos que nos ofrece el propio sistema operativo.

    Situarse en la Carpeta_A.

    Seleccionar los archivos que deseamos copiar.

    Copiar los archivos mediante las opciones de menú, el menú contextual o con una combinación de teclasadecuada (Ctrl + C).

    Entrar en la Carpeta_B.

    Una vez dentro de la Carpeta_B, pegar los archivos, bien mediante las opciones de menú, bien mediante elmenú contextual, bien mediante la combinación de teclas adecuada (Ctrl + V).

    Como podemos apreciar, los sistemas operativos basados en interfaz gráfica son más intuitivos, aunque tambiénson mucho más lentos de manejar. Por el contrario, la línea de comandos es mucho más críptica, pero si seconocen bien los comandos también es bastante más rápida.

  • Funciones de los sistemas operativos

    El sistema operativo es el que gobierna el ordenador, el que controla todos sus componentes de hardware;también es el responsable de que las aplicaciones se ejecuten, controla su concurrencia y les permite acceder alos recursos hardware, discos duros, puertos de impresión, etc.

    Algunas de las funciones más relevantes que desarrolla el SO son las siguientes:

    Interpreta los comandos que permiten al usuario comunicarse con el ordenador.

    Coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades dedisco, el teclado o el ratón.

    Organiza los archivos en varios dispositivos de almacenamiento, como discos flexibles, discos duros, discoscompactos o cintas magnéticas.

    Gestiona los errores de hardware y la pérdida de datos.

    Sirve de base para la creación del software, logrando que equipos de marcas distintas funcionen de maneraanáloga y salvando las diferencias existentes entre ambos.

    Configura el entorno para el uso del software y los periféricos. Dependiendo del tipo de máquina que seemplea, debe establecerse en forma lógica la disposición y características del equipo. Por ejemplo, unamicrocomputadora tiene físicamente dos unidades de disco, por lo que puede simular el uso de otras unidadesde disco, que pueden ser virtuales, utilizando parte de la memoria principal para tal fin.

    En caso de estar conectado a una red, el sistema operativo se convierte en la plataforma de trabajo de losusuarios y es éste el que se encarga de controlar los elementos o recursos que comparten. Existen sistemasoperativos especificados para esta tarea: los sistemas operativos de red. Uno de los más usados es Novel.

    Lanza tareas automáticas de mantenimiento de la computadora, de la red, copias de datos periódicas, etc.

    El sistema operativo gestiona los recursos del ordenador y facilita su comunicación con el usuario.

    Tipos de sistemas operativos

    Sistema operativo multitareas

    Desde un punto de vista académico, definimos la multitarea de la siguiente manera:

    Es la forma de funcionamiento disponible en algunos sistemas operativos mediante la que unacomputadora procesa varias tareas al mismo tiempo.

    Existen varios tipos de multitareas. La conmutación de contextos (context switching) es un tipo muy simple demultitarea en el que dos o más aplicaciones se cargan al mismo tiempo, pero en el que sólo se procesa laaplicación que se encuentra en primer plano (la que ve el usuario). Para activar otra tarea que se encuentre ensegundo plano, el usuario debe llevar al primer plano la ventana o pantalla que contenga dicha aplicación. En lamultitarea cooperativa, la que se utiliza en el sistema operativo Macintosh, las tareas en segundo plano recibentiempo de procesado durante los tiempos muertos de la tarea que se encuentra en primer plano (por ejemplo,cuando esta aplicación está esperando información del usuario), y siempre que esta aplicación lo permita. En lossistemas multitarea de tiempo compartido, como OS/2, cada tarea recibe la atención del microprocesador duranteuna fracción de segundo. Para mantener el sistema en orden, cada tarea recibe un nivel de prioridad o se procesaen orden secuencial. Dado que el sentido temporal del usuario es mucho más lento que la velocidad deprocesamiento del ordenador, las operaciones de multitarea en tiempo compartido parecen ser simult�