VENCEDORES VENCIDOS

domingo 25 de diciembre de 2011

La máquina de von Newman. El IAS

Una breve historia del ENIAC
La primera generación: los tubos de vacío
ENAC: El ENIAC (Electronic Numerical Integrator And Computer),  diseñado y construido bajo la supervisión de John Mauchly y Jhon Prester Eckert en la universidad de Pennsylvania, fue el primer computador electrónico de propósito general del mundo.
El ENIAC era una máquina decimal y no binaria. Es decir, los números estaban representados en forma decimal y la aritmética se realizaba también en el sistema decimal. Su memoria consistía en veinte “acumuladores”, cada uno capaz de contener un número decimal de diez dígitos. Cada dígito estaba representado por un anillo de diez tubos de vacío. En un momento dado, solo uno de los tubos de vacío estaba en estado ON representando uno de los diez dígitos. Uno de los mayores inconvenientes de ENIAC era que tenía que ser programado manualmente mediante conmutadores y conectando y desconectando cables.

La máquina de von Newman. La tarea de cargar y modificar programas para el ENIAC era extremadamente tediosa. El proceso de programación podría ser más fácil si el programa se representara en una forma adecuada para ser guardado en la memoria junto con los datos. Entonces, un computador podría conseguir sus instrucciones leyéndolas de la memoria, y se podría hacer o modificar un programa colocando los valores en una zona de memoria.  
Esta idea conocida como concepto del programa-almacenado, se atribuye a los diseñadores del ENIAC, sobre todo al matemático Jhon von Newman, que era asesor del proyecto ENIAC.
En 1946 von Newman y sus colegas empezaron, en el instituto para Estudios avanzados de Princeton, el diseño de un nuevo computador de programa-almacenado, que llamaron IAS. El computador  IAS, no completado hasta 1952, es el prototipo de toda una serie de computadores de propósito general.

Estructura general del computador IAS. Consta de:

·         Una memoria principal que almacena tanto datos como instrucciones (hace referencia a instrucciones de máquina, NO instrucciones de lenguaje de alto nivel).
·         Una unidad aritmético-lógica (ALU) capaz de hacer operaciones con datos binarios.
·         Una unidad de control que interpreta las instrucciones en memoria y provoca su ejecución.
·         Un equipo de entrada salida (E/S) dirigido por la unidad de control.



Esta estructura fue esbozada en la primera proposición de von Newman, que merece la pena mencionar en estos momentos:
1.       Primero: como el dispositivo es principalmente un computador, tendrá que realizar las operaciones aritméticas elementales muy frecuentemente. Estas son la suma, la resta, la multiplicación y la división. Es por tanto razonable que contenga elementos especializados solo en estas operaciones.  Tendrá que existir la parte de aritmética central que constituirá la primera parte específica: CA (Central Arithmetical).

2.       Segundo: la secuencia adecuada de las operaciones, debe ser realizado eficientemente por un órgano de control central. Si el dispositivo tiene que ser versatíl, es decir, lo más cercano a servir para todo uso, entonces hay que hacer una distinción entre las instrucciones específicas que se dan y definir un problema particular, y los órganos de control general que se ocupan de que se lleven a cabo estas instrucciones (sean cuales sean). Las primeras deben almacenarse en algún lugar, las otras deben representarse definiendo partes operativas del dispositivo. Con el control central nos referimos solo a esta última función, y los órganos que la realizan forman la segunda parte específica: CC (Central Control).

3.       Tercero: cualquier dispositivo que realice secuencias largas y compicadas de operaciones (concretamente de cálculo) debe tener una memoria considerable.

 La memoria total es la tercera parte específica del dispositivo: M (Memoria).  Las tres partes especificas CA, CC (juntas C)y M corresponden a las neuronas asociativas del sistema nervioso humano. El dispositivo tiene que estar dotado con la habilidad de mantener contacto de entada y salida (sensorial y motor) con medios específicos de este tipo: el medio será llamado el medio de grabación del dispositivo: R (Recording)

4.       Cuarto: el dispositivo tiene que tener órganos para trasferir información a partir de R a sus partes específicas C y M. estos órganos forman su entrada, la cuarta parte específica: I (Input). Veremos que lo mejor es hacer todas las transferencias a partir de R (mediante I) hasta M y nunca directamente a partir de C.

5.       Quinto: el dispositivo tiene que tener órganos para trasferir información a partir de sus partes específicas C y M hacia R. Estos órganos forman su salida, la quinta parte específica: O (Output). Veremos que lo mejor es hacer todas las transferencias a partir deM (mediante O) a R, y nunca a partir de C.



Salvo raras excepciones, todos los computadores de hoy en día tienen la misma estructura general y funcionamiento que las máquinas de von Newman. Por eso, merece la pena describir brevemente  la manera de operar del computador IAS.
La memoria del IAS consiste en 1000 posiciones de almacenamiento, llamadas palabras, de cuarenta dígitos binarios (bits) cada una (No hay una definición universal del término palabra. En general una palabra es un conjunto ordenado de bytes o bits que representa la unidad básica de almacenamiento de información que se puede almacenar, trasmitir o con la que se puede operar en un determinado computador, normalmente, si un procesador tiene un conjunto de instrucciones de longitud fija, entonces la longitud de las instrucciones es igual a la longitud de la palabra).Tanto los datos como las palabras se almacenan ahí. Por tanto, los números se pueden representar en forma binaria y cada instrucción tiene también un código binario. Cada número se representa con un bit de signo y 39 bits de valor. Una palabra puede contener también dos instrucciones de veinte bit, donde cada instrucción consiste en un código de operación de ocho bits (codop) que especifica la operación que se va a realizar y una dirección de doce bits que indica una de las palabras de la memoria (numeradas de 0 a 99).



 La unidad de control dirige al IAS captando instrucciones de la memoria y ejecutando una a una.
Para explicar esto, se necesita un diagrama de estructura más detallado. 


Esta figura nos muestra que tanto la unidad de control como la ALU contienen posiciones de almacenamiento, llamadas registros, de finidos de la siguiente manera:
El IAS opera ejecutando rápidamente un ciclo de instrucción. Cada ciclo de instrucción consta de dos subciclos. Durante el ciclo de captación, el codop de la siguiente instrucción es cargado en el IR y la parte que contiene la dirección es almacenada en el MAR. Esta instrucción puede ser captada desde el IBR, o puede ser obtenida de la memoria cargando una palabra en el MBR, y luego en IBR, IR y MAR.
¿Por qué la indirección? Todas estas operaciones están controladas por circuitos electrónicos, y dan lugar al uso de caminos de datos. Para simplificar la electrónica, se usa un solo registro para especificar la dirección en memoria para lectura o escritura, y un solo registro para la fuente o el destino.
Una vez que el codop está en el IR, se lleva a cabo el ciclo de ejecución. Los circuitos de control interpretan el codop y ejecutan la instrucción enviando las señales de control adecuadas para provocar que los datos se transfieran o que la ALU realice una operación.



El computador IAS tiene un total de 21 instrucciones, estas se pueden agrupar de la siguiente manera: 


La parte de codop (los ocho primeros bits) especifican cual de las 21 instrucciones va a ser ejecutada. La parte de la dirección (los doce bits restantes) especifican cual de las 1000 posiciones de memoria está implicada. 



















lunes 31 de octubre de 2011

EL COMPUTADOR. ESTRUCTURA Y FUNCIONAMIENTO

ORGANIZACIÓN Y ARQUITECTURA
 Cuando se describe un computador, frecuentemente se distingue entre arquitectura y organización. La arquitectura de computadoras se refiere a los atributos de un sistema que son visibles a un programador, o para decirlo de otra manera, aquellos atributos que tienen un impacto directo en la ejecución lógica de un programa. La organización de computadores se refiere a las unidades funcionales y sus interconexiones, que dan lugar a especificaciones arquitectónicas. Entre los ejemplos de atributos arquitectónicos se encuentran el conjunto de instrucción, el número de bit usados para representar varios tipos de datos (números, caracteres, etc.), mecanismos de Entrada/ Salida E/S y técnicas para direccionamiento de memoria. Entre los atributos de organización se incluyen aquellos detalles de hardware transparentes al programador, tales como señales de control, interfaces entre el computador y los periféricos y la tecnología de memoria usada.

ESTRUCTURA Y FUNCIONAMIENTO
Un computador es un sistema complejo; los computadores de hoy en día contienen millones de componentes electrónicos básicos. ¿Cómo podríamos describirlos claramente? La clave está en reconocer la naturaleza jerárquica de la mayoría de los sistemas complejos, incluyendo el computador. Un sistema jerárquico es un conjunto de subsistemas interrelacionados cada uno de los cuales, a su vez, se organiza en una estructura jerárquica hasta que se alcanza el nivel más bajo del subsistema elemental.
            La naturaleza jerárquica de los sistemas complejos es esencial tanto para si diseño como para su descripción. El diseñador necesita tratar solo con un nivel particular del sistema a la vez. En cada nivel del sistema consta de un conjunto de componentes y sus interrelaciones. El comportamiento de cada nivel depende solo de una caracterización abstracta y simplificada del sistema que hay en el siguiente nivel más bajo. De cada nivel al diseñador le importan la estructura y el funcionamiento:
  • Estructura: el modo en el que los componentes están interrelacionados.
  • Funcionamiento: la operación de cada componente individual como parte de la estructura.
En términos de descripción tenemos dos opciones: empezar por lo más bajo y construir una descripción completa, o comenzar con una visión desde arriba y descomponer el sistema en sus subpartes. La experiencia a partir de muchos campos nos ha enseñado que de la descripción de arriba abajo (top-down) es la más clara y efectiva.

FUNCIONAMIENTO
Las funciones básicas que un computador puede llevar a cabo, en términos generales son cuatro:
  • Procesamiento de datos.
  • Almacenamiento de datos.
  • Transferencia de datos.
  • Control.        
El computador, por supuesto, tiene que ser capaz de procesar datos. Los datos pueden adoptar una gran variedad de formas, y el rango de los requisitos de procesado es amplio. Sin embrago, veremos que hay solo unos pocos métodos o tipos fundamentales de procesado de datos.
            También es esencial, que un computador almacene datos. Incluso si el computador esta procesando datos al vuelo (es decir, los datos se introducen, se procesan, y los resultados se obtienen inmediatamente), el computador tiene que guardar temporalmente al menos aquellos datos con los que está trabajando en un momento dado. Así hay al menos, una función de almacenamiento de datos a corto plazo. Con igual importancia el computador lleva a cabo una función de almacenamiento a largo plazo. El computador almacena ficheros de datos para que se recuperen y actualicen en un futuro.
            El computador tiene que ser capaz de transferir datos en él mismo y el mundo exterior. Cuando se reciben o se llevan datos a un dispositivo que está directamente conectado con el computador, el proceso se conoce como entrada-salida (E/S), y este dispositivo recibe el nombre de periférico. El proceso de transferir datos a largas distancias, desde o hacia un dispositivo remoto, recibe el nombre de comunicación de datos.
            Finalmente, debe haber un control de estas tres funciones. Este control es ejercido por el (los) ente(s) que proporciona(n) al computador las instrucciones. Dntro del computador, una unidad de control gestiona los recursos del computador y dirige las prestaciones de sus partes funcionales en respuesta a estas instrucciones.

ESTRUCTURA
La estructura interna del computador mismo, que mostramos en su nivel más alto, consta de cuatro componentes principales:
  • Unidad de Procesamiento (CPU):, controla el funcionamiento del computador y lleva a cabo sus funciones de procesamiento de datos. Frecuentemente se le llama procesador.

  • Memoria Principal (MP): almacena datos.

  • Entrada/Salida (E/S): transfiere datos entre el computador y el entorno externo.

  • Sistema de Interconexión: es un mecanismo que proporciona la comunicación entre la CPU, la memoria principal y la Entrada/Salida.  
Puede que haya uno más de estos componentes.
El componente más complejo es la CPU, sus principales componentes son:
  • Unidad de Control: controla el funcionamiento de la CPU y por tanto del computador.

  • Unidad Aritmético-Lógica: (ALU): lleva a cabo las funciones de procesamiento de datos del computador.

  • Registros: proporcionan almacenamiento interno a la CPU.

  • Interconexiones CPU: son mecanismos que proporcionan comunicación entre la unidad de control, la ALU y los registros.






Finalmente, hay varias aproximaciones para la implementación de la unidad de control; una de las aproximaciones más comunes es la implementación microprogramada. Básicamente, una unidad de control microprogramada actúa ejecutando microinstrucciones que definen la funcionalidad de la unidad de control.

lunes 24 de octubre de 2011

SISTEMAS OPERATIVOS

Los sistemas operativos (SO) son una parte esencial de cualquier sistema informático. Este campo esta cambiando muy rápidamente, ya que ahora las computadoras se encuentran prácticamente en cualquier aplicación, desde juegos para niños hasta herramientas de planificación extremadamente sofisticadas para los gobiernos y las grandes multinacionales. Sin embargo, su concepto no es muy claro para algunos usuarios de SO.
Un sistema operativo (SO) es un programa que administra el hardware de una computadora. También proporciona las bases para los programas de aplicación y actúa como intermediario entre el usuario y el hardware de la computadora. Un aspecto sorprendente de los SO es la gran variedad de formas en que lleva a cabo estas tareas. Los SO para main-frame están diseñados principalmente para optimizar el uso del hardware. Los SO de las computadoras personales (PC) soportan desde complejos juegos hasta aplicaciones de negocios. Los SO para computadoras de mano están diseñados para proporcionar un entorno en el que el usuario pueda interactuar fácilmente con la computadora para ejecutar programas. Por tanto, algunos SO se diseñan para ser prácticos, otros para ser eficientes y otros para ser ambas cosas.
            Dado que un SO es un software grande y complejo, debe crearse pieza por pieza. Cada una de estas piezas deberá ser una parte bien diseñada del sistema, con entradas, salida y funciones cuidadosamente definidas.
            ¿Qué hace un sistema operativo?
            Comenzamos fijándonos en el papel del SO en un sistema informático global. Un sistema informático puede dividirse a grandes rasgos en cuatro componentes: el hardware, el sistema operativo, los programas de aplicación y los usuarios.
El hardware, la unidad central de procesamiento (CPU), la memoria principal (MP) y los dispositivos de entrada / salida (E/S), proporciona los recursos básicos de cómputo al sistema. Los programas de aplicación, como son los procesadores de texto, las hojas de cálculo, los compiladores y los exploradores web, definen la forma en que estos recursos se emplean para resolver los problemas informáticos de los usuarios. El SO controla y coordina el uso del hardware entre los diversos programas de aplicación por parte de los distintos usuarios.
Un SO es similar a un gobierno. Como un gobierno, no realiza ninguna función útil por sí mismo: simplemente proporciona un entorno en el que otros programas pueden llevar a cabo un trabajo útil.


Para comprender mejor el papel de un SO, vamos a abordar los sistemas operativos desde dos puntos de vista: el de usuario y el de sistema.
·         la visión del usuario de la computadora varía de acuerdo con la interfaz que utilice. La mayoría de los usuarios que se sientan frente a una PC dispone de un monitor, teclado, mouse y una unidad de sistema. Un sistema así se diseña para que un usuario monopolice sus recursos. En este caso, el SO se diseña principalmente para que sea de fácil uso, prestando cierta atención al rendimiento y ninguna a la utilización de recursos (el modo en el que se comparten los recursos hardware y software). Por supuesto, el rendimiento es importante para el usuario, pero más que la utilización de recursos, estos sistemas se optimizan para el uso del mismo por un solo usuario. En otros casos, un usuario se sienta frente a un terminal conectado a un mainframe o una microcomputadora. Otros usuarios acceden simultáneamente a través de otros terminales. Estos usuarios compraten recursos y pueden intercambiar información. En tales caso, el SO se diseña para maximizar la utilización de recursos, asegurar que todo el tiempo de CPU, MP y E/S disponibles se usen de forma eficiente y que todo usuario disponga solo de la parte equitativa que le corresponde. En otros casos, los usuarios usan estaciones de trabajo conectadas a redes de otras estaciones de trabajo y servidores. Estos usuarios tienen recursos dedicados a su disposición, pero también tienen recursos compartidos como la red y los servidores (servidores de archivos, de cálculo y de impresión). Por tanto, su SO está diseñado para llegar a un compromiso entre la usabilidad individual y la utilización de recursos. Algunas computadoras pueden tener poca o ninguna interacción con el usuario, como por ejemplo, las computadoras incorporadas en los electrodomésticos y el los automóviles pueden disponer de teclados numéricos e indicadores luminosos que se encienden y se apagan para mostrar el estado, estos equipos como el  SO están diseñados para no tener intervención con el usuario.
·         Desde el punto de vista de la computadora, el So es el programa más íntimamente relacionado con el hardware. En este contexto, podemos ver un SO como un asignador de recursos. Un sistema informático tiene muchos recursos que pueden ser necesarios para solucionar un problema: tiempo de CPU, espacio de memoria, espacio de almacenamiento de archivos, dispositivos de E/S, etc. El SO actúa como administrador de estos recursos.

En general, no disponemos de ninguna definición de sistema operativo (SO) que sea completamente adecuada. Los SO existen por que ofrecen una forma razonable de resolver el problema de crear un sistema informático utilizable. El objetivo fundamental de las computadoras es ejecutar programas de usuario y resolver los problemas del mismo fácilmente. Con este objetivo se construye el hardware de la computadora. Debido a que el hardware por sí solo es difícil de manejar, se desarrollan programas de aplicación. Estos programas requieren ciertas operaciones comunes, tales como als que controlan los dispositivos de E/S. las operaciones habituales de control y asignación de recursos se incorporan en una misma pieza del software: EL SISTEMA OPERATIVO.