Contenido:
¿ Qué clase de procesamiento puede hacer el computador ? ¿ Dónde debe estar ubicada la información que se va a procesar ? ¿ Cómo procesa el computador la información alojada en su memoria ? ¿ Qué parte del computador reconoce y ejecuta las instrucciones ? ¿ Cuántas instrucciones puede ejecutar el CPU a la vez ? ¿ Dónde tiene que estar el programa ? ¿ Cómo hace un CPU para ejecutar todas las instrucciones de un programa ? ¿ Cómo sabe la ALU sobre cuál información debe operar la instrucción en ejecución ? ¿ Cómo se transfieren las instrucciones y los datos entre el CPU la memoria ? ¿ Cómo se introducen los datos y los programas a la memoria del computador ? ¿ Cómo se almacena la información que se introduce al computador ? ¿ Cómo se representa la información en la memoria ? ¿ Cómo es que podemos introducir números, textos, información lógica y cómo hace el computador para retenerlos ? ¿ Qué son HARDWARE Y SOFTWARE ? ¿ Qué es un Sistema Operativo ? ¿ Qué son y por qué hay tantos Lenguajes de Programación ? Apéndice A: Sistemas de Codificación
de Caracteres
¿ Qué es un computador ?
¿ Dónde debe estar ubicada la información que se va a procesar ?
Esquemáticamente:
Un programa ejecutable es una secuencia de instrucciones del repertorio básico.
Otro componente del CPU, la Unidad Aritmético-Lógica (UAL), se encarga de ejecutar propiamente la instrucción cargada en el registro IR. Cuando la UAL termina de ejecutar una instrucción, la UC carga (load) desde la memoria la instrucción alojada en la dirección indicada por el registro de dirección y éstapasa a ser inmediatamente la intrucción en ejecución, y así sucesivamente hasta que se llegue a una instrucción que indique el final del programa. Para iniciar la ejecución de un programa, es necesario colocar en el registro de dirección la dirección de memoria de su primera instrucción. Todo computador viene provisto también de un procedimiento inicial de arranque que se activa automáticamente al encender el equipo. Este proceso automático de arranque se encarga de colocar la dirección de la primera instrucción de un programa precargado -programa inicial de arranque- y de allí en adelante la ejecución de programas es como una especie de carrera de relevo. Típicamente el procedimiento inicial coloca la dirección de la primera instrucción del programa inicial de arranque en el IR del CPU. Este programa inicial luego de chequear el estado normal de los componentes termina comunicándose con algún dispositivo periférico predeterminado desde el cual se carga usualmente un componente básico inicial de un Sistema Operativo el cual continuará controlando la actividad del computador según las órdenes de los usuarios hasta que el computador se apague normalmente o por alguna falla. Proceso General del Computador Otros elementos dentro de un CPU son:
Por ejemplo, una instrucción del repertorio de un procesador puede indicar en su parte de código de operación que se haga una SUMA y en la parte de los operandos, que se sumen los valores que están guardados uno en el registro A del CPU y el otro en la posición 1000 de la memoria, dejando el resultado en el mismo registro A.
Los dispositivos externos o periféricos pueden diferenciarse en dos clases: medios de comunicación y medios de almacenamiento secundario. Los medios de comunicación son dispositivos para la comunicación del computador con los usuarios. Se diseñan para que en un lado de la comunicación acepten acciones de usuarios o les presenten información significativa -textos, gráficos, sonidos- mientras que del otro lado las acciones o la información se corresponden con representaciones internas. A esta clase corresponden teclados, pantallas, ratones, digitalizadores, lectores ópticos, micrófonos, cornetas.
Son necesarios porque:
Por varios años se usaron a la vez como medio de comunicación y de almacenamiento las cintas y tarjetas perforadas de papel, que cayeron en desuso cuando se desarrollaron y se hicieron económicamente accesibles los medios actuales más eficientes.
Podemos representarla como un gran pizarrón cuadriculado donde las casillas están numeradas desde 0 a m, para un total de (m+1) casillas usables.
Al igual que en el pizarrón, cualquier casilla puede estar vacía o tener algo escrito y lo escrito permanecerá allí hasta que se lo borre y se reescriba otra cosa. Pero, las memorias ordinarias de computadores son volátiles: sólo mantienen la información mientras el equipo permanezca encendido. Cada casilla es accesible independientemente tanto para escribir (guardar) como para leer (recuperar) un dato una vez especificada su dirección. A este tipo ordinario de memoria se le llama RAM por Random Access Memory. Los computadores también vienen equipados
con memorias tipo ROM por Read Only Memory, que son memorias de
tipo permanente que sólo pueden ser leídas, no escritas.
A diferencia también del pizarrón,
lo escrito en cada casilla o byte tiene una estructura fija.Típicamante,
en una memoria de computador, un byte tiene 8 elementos llamados
cada uno bit, y cada bit puede contener la
representación
de un valor 0 o de un valor 1.
Usando solamente un byte para representar cada caracter alfanumérico, y dado que un byte consta de 8bits,entonces se pueden formar 28 configuracionesdistintas desde 00000000 hasta 11111111. Es posible entonces codificar un alfabeto de hasta 28= 256 caracteres distintos, por ejemplo nuestro alfabeto con las letras mayúsculas y minúsculas, los 10 dígitos de signos de puntuación(,;..), operadores aritméticos (+-*/), etc.
00000000 = 0 00000001 = 1 00000010 = 2 00000011 = 3 00000100 = 4 ................ 11111111 = 255
La consistencia de este tipo de representación numérica se completa definiendo la operación de suma según la tabla:
Ejemplo: El siguiente del número binario 00001010 (10 en decimal) se obtiene sumando 1:
00001010 +
y el siguiente
00001011 +
Detalles de este tipo de representación en el Apéndice B: Sistema de numeración Binario. La representación anterior usando 8 bits nos permitiría tan solo efectuar algunas operacionesaritméticas con los números naturales del 0 al 255 lo cual es muy limitado. Mediante programación se superan las limitaciones del hardware, implementando algoritmos que realicen por ejemplo las operaciones aritméticas con representaciones más amplias en microcomputadores que tienen ese microprocesador como su CPU, valiéndose de la representación y operaciones básicas. Los procedimientos o rutinas que implementan la aritmética extendida pueden estar incluidos en los Sistemas Operativos o en los lenguajes de programación. Un algoritmo es una especificación detallada de los pasos a seguir para resolver un problema. Un computador más complejo, como un PC con procesador Pentium, puede operar con los siguientes tipos numéricos:
(Por qué? ¿ Cuántos números hay en ese rango ? ) El rango incluyendo positivos y negativos es [- 215 .. (215 - 1 )] = [-32768..32767 ] La capacidad de operar con este tipo derepresentación
de números esta en el CPU delequipo. El procesador Pentium y otros
procesadores también puede operar con
representaciones numéricas de enteroslargos,ocupando
4 bytes consecutivos permitiendoasí un rango de [-231..(231
- 1)]
Para operar eficientemente con este tipo derepresentación flotante, el computador debe tenerun procesador que incluya en su repertorio de instrucciones las operaciones elementales de aritmética con representación flotante ya sea en su CPU principal o como procesador adicional especializado para ello, llamado coprocesador matemático. Si no lo tiene, también se recurre a la programación de algoritmos para que un computador puede efectuar también la aritmética de punto flotante, aunque en forma menos eficiente en cuanto al tiempo de ejecución de las operaciones. Modos de representación usuales en varios computadores son:
La explicación está en que aprovechemos trabajo de programación acumulado. Así como, por ejemplo, cuando alguien quiere hacerse un traje aprovecha materiales elaborados como telas, tijeras, agujas, hilos, cinta métrica, alfileres, etc., productos de los conocimientos y experiencias acumuladas por la humanidad y del trabajo de quienes participaron en su fabricación, así también cada vez que nos sentamos a trabajar con el computador estamos aprovechando, casi sin notarlo, la experiencia, conocimientos y el trabajo de otros diseñadores y programadores. Estos productos elaborados en nuestro caso
son programas o conjuntos de programas de los siguientes tipos:
Entre las tareas típicas de un Sistema
Operativo están:
A partir de los 80s, aparecieron sistemas operativos producidos por productores independientes de software para uso compatible por equipos producidos por diversos fabricantes. Hasta ahora los sistema operativos de tipo standard son: MS DOS, Windows NT para microcomputadores tipo IBM-PC compatibles, UNIX para diversos tipos y capacidades de computadores. En la mayoría de los sistemas operativos la comunicación con los usuarios se establece a traves de un lenguaje de comandos propio del sistema. Sistemas operativos avanzados, como el Finder de Macintosh o Windows NT proporcionan interfaces gráficas con despliegue de menúes y cuadros de diálogos. Una solución intermedia a los sistemas operados por comandos han sido las interfaces gráficas de usuario, como las versiones de Windows anteriores a NT para PC que adicionalmente expanden la capacidad de trabajo del sistema DOS subyacente, o las interfaces para UNIX basadas en el sistema X-Window.
Se distinguen dos tipos generales de lenguajes
de programación: de Bajo nivel y de Alto nivel.
Los lenguajes de Alto nivel, por el contrario, se caracterizan por tratar de ser más bien cercanos al lenguaje matemático ordinario e inclusive algunos pretenden ser cercanos a lenguajes de habla natural. En general los programas escritos en lenguaje
de alto nivel no pueden ser ejecutados directamente por el CPU. Hay varias
estrategias de programación al problema de ejecutar esos programas:
Otra distinción que se hace es entre lenguajes de propósito general y lenguajes orientados al problema.Los lenguajes orientados a problemas proporcionan a sus usuarios facilidades adicionales para el desarrollo de aplicaciones de tipo especializado. COBOL es un lenguaje orientado al desarrollo de aplicaciones para empresas, SIMULA, GPSS, GLIDER entre otros son lenguajes de Simulación de Sistemas. MAPLE es un lenguaje orientado a la resolución de problemas matemáticos. SQL y dBASE son lenguajes orientados a Bases de Datos. PL1, Pascal y ObjectPascal, C y C++ son lenguajes de propósito general. Se llama Programa Fuente al programa en su versión original escrita en el lenguaje de programación. A la versión compilada al lenguaje de máquina pero no necesariamente lista para ejecución se la llama Programa Objeto y a la versión lista para ejecución Programa Ejecutable En los computadores actuales se utilizan principalmente dos sistemas de codificación de caracteres:
Como los textos pueden incluír información numérica, es necesaria la representación en caracteres de los números, pero para efectuar operaciones propiamente numéricas de cálculo se requiere que los operandos numéricos estén almacenados en memoria en representaación numérica binaria. El Apéndice B describe el Sistema de Numeración Binario que es el que se aplica para la representación interna de números para procesamiento numérico. En el sistema EBCDIC la letra mayúscula "A" se codifica 11000001, la "B" 11000010, la "C" 11000011 y así sucesivamente. El dígito "0" se codifica 11110000, el "1" 11110001, el "2" 11110010, etc. Una banda o string de caracteres se almacena en la memoria
en bytes consecutivos. La palabra "CASA" se representaría en memoria
así:
En el sistema ASCII la letra mayúscula "A" se codifica 01000001, la "B" 01000010, la "C" 01000011 y así sucesivamente. El dígito "0" se codifica 00110000, el "1" 00110001, el "2" 00110010, etc. La palabra "CASA" se representaría en memoria así:
El sistema ASCII es el más usado actualmente en microcomputadores y estaciones de trabajo. En manuales de uso de equipos y lenguajes se pude hallar la tabla completa de la codificación ASCII. Si se interpretan los códigos como números del Sistema Binario de Numeración (Ver Apéndice B), es posible comparar caracteres. Observe que en sistema EBCDIC las letras mayúsculas son menores que los dígitos mientras que en el sistema ASCII ocurre lo contrario. El orden en el diseño de la codificación permite que sea posible para un computador realizar procesos como ordenación alfabética o búsqueda de palabras en un texto almacenado. Los contenidos de memorias, pricipal o secundarias, son en definitiva secuencias de bytes cada uno conteniendo una de las 256 configuraciones posibles. El proceso de ejecución determina la interpretación de los contenidos ya sea como instrucciones de programa, datos numéricos o alfanuméricos. Hay ocasiones en que un usuario necesita revisar o asignar contenido de memoria directamente en binario, lo cual es bastante incómodo por tratarse de largas hileras de 0´s y 1´s. En esos casos es conveniente abreviar los contenidos de memoria usando representaciones numéricas de base múltiplo de la base 2 binaria. Las bases múltiplo de 2 más frecuentemente usadas por los computistas y manuales de documentación son la 16 -hexadecimal- y la 8 -octal. Notación Hedadecimal Consideremos los 8 bits del byte en dos porciones de 4 bits. Con 4 bits se tienen 16 configuraciones distintas. Las podemos designar para abreviar con los dígitos del 0 al 9 y las letras de la A a la F así: 0000 = 0 0001 = 1 0010 = 2 0011 = 3 0100
= 4 0101 = 5 0110 = 6 0111 = 7
Con esta notación se define un sistema de numeración
en base 16 porque se usan 16 símbolos, el
Ejemplo: El valor decimal del número escrito en hexadecimal 7A3F es: 7*163 + (10)*162 + 3*161 + (15)*160 = ((7*16 + 10)*16 + 3)*16 + 15 = 31295 Teorema Fundamental de la Numeración Usando notación hexadecimal se abrevia nuestra escritura
de números binarios y por tanto también la de los códigos
EBCDIC y ASCII. Por ejemplo, los códigos EBCDIC para las letras
mayúsculas "A",
Veamos en detalle el caso de la letra "A":
Formemos las dos porciones de 4 bits: 1100 y 0001 El primer grupo corresponde a la configuración hexadecimal que designamos como C El segundo grupo corresponde a la configuración que designamos por su valor 1 Entonces, juntando las dos abreviaciones queda C1 Calculando en binario: (((((((1*2) + 1)*2 + 0)*2 +0)*2 + 0)*2 + 0)* 2 + 0)* 2 + 1 = 193 Notación Octal Análogamente se define la notación Octal agrupando bits en grupos de a 3. Con tres bits se tienen las siguientes ocho configuraciones distintas y sus valores: 000 = 0 001 = 1 010 = 2 011 = 3 100 = 4 101 = 5 110 = 6 111 = 7 Usando la notación octal para abreviar códigos de 8 bits, se agrupan los bits de derecha a izquierda considerando un 0 adicional a la izquierda. Veamos en detalle el caso de la letra "A":
Formemos las dos porciones de 3 bits: 001 000 y 001 El primer grupo corresponde a la configuración octal con valor 1 El segundo grupo corresponde a la configuración con valor 0 El tercer grupo corresponde a la configuración con valor 1 Entonces, juntando las tres abreviaciones queda en octal 101 (1)*82 + 0*8 + 1 = 64 + 0 +1 = 65 Calculando en binario: (((((((0*2) + 1)*2 + 0)*2 +0)*2 + 0)*2 + 0)* 2 + 0)* 2 + 1 = 65
Apéndice B: Sistema de Numeración Binario Estamos habituados desde la escuela primaria a usar el sistema de representación numérica Decimal o simplemente sistema decimal, llamado así porque se basa en el uso de 10 símbolos: los dígitos del 0 al 9. Para la formación de números se aplica el gran invento de la antigüedad: la notación posicional. Teorema Fundamental de la Numeración Así, por ejemplo, leemos el número 352 como Tres Cientos Cincuenta y Dos, que en símbolos matemáticos equivale a: 3*100 + 5*10 + 2 = 3*102 + 5*101 + 2*100 Esto es:
Con las mismas reglas se pueden idear distintos sistemas de numeración eligiendo distintos números de símbolos como base. De hecho, la humanidad en distintas culturas ha usado distintos sistemas como el sexagecimal en base 60 -del cual nos queda herencia en el sistema horario- en base 20, en base 5. El sistema de numeración Binario de base 2 ha resultado el más conveniente para usar en Computación por la relativa facilidad para distinguir dos configuraciones en diveros medios eléctricos, electrónicos o electromagnéticos. El sistema binario de numeración utiliza dos símbolos: 0 y 1. Hasta 1 se cuenta igual que en decimal: 0 significa ninguna cantidad, 1 una unidad. El decimal 2, base binaria, se escribe en binario: 10. Note que la base de cualquier sistema de numeración siempre se escribe como 10 en la propia base. Para distinguir cuando pueda haber ambigüedad y tomando como referencia la base 10, podemos usar la siguiente notación con subíndices para la base: (10)2 = (1*21 + 0*20)10 = (2 + 0)10 = (2)10 donde los subíndices en decimal denotan el valor decimal de la base considerada. Para calcular el valor decimal de un número en notación binaria -como en cualquier otra notación- aplicacamos la regla del valor posicional. Por ejemplo, calculemos el valor decimal del número binario 10100110. Teorema Fundamental de la Numeración Numeremos las posiciones: 1 0
1 0 0 1 1 0
Sumemos los valores de cada posición: 1*27 + 0*26 +1*25 + 0*24 +0*23 + 1*22 + 1*21 + 0*20 = ((((((1*2 + 0)*2 + 1)*2 + 0)*2 + 0)*2 + 1)*2 + 1)*2 + 0 = 166 Ejercicio: Hallar un algoritmo para efectuar la conversión inversa, de decimal a binario Ejemplo de suma:
La representación de números
menores que uno, números fraccionarios, es también análoga
a la decimal. Por ejemplo, el número (0.5)10 decimal
es (0.1)2 binario, pues:
A la derecha del punto se consideran las potencias negativas sucesivas de la base a partir de -1, es decir, el valor posicional de cada símbolo movido una posición a la derecha del punto equivale a dividir su valor por el valor de la base. Ejemplo: valor decimal de (101.1011)2
Se puede normalizar la representación de números <> 0, cualquiera sea la base y el signo, usando dos componentes: una mantisa y un exponente. Con la mantisa se representa el valor absoluto del número multiplicado por una potencia de la base para reducirlo a un rango fijo y con el exponente se ajusta el valor de la potencia de la base para que, multiplicada por la mantisa, reconstruya el valor numérico absoluto original. Por ejemplo, supongamos que la convención en decimal -como en la notación llamada científica en muchas calculadoras- es que la mantisa sea un valor m tal que: 1 <= m < 10 y queremos representar el número 58736.629. La mantisa sería 5.8736629 y el exponente 4. El número se reconstruye como: 5.8736629 * 104. Si se trata de números menores que 1, el exponente será negativo. La representación de los números: 58736.629, 0.0058736629 y 5.8736629 tiene en los tres casos el mismo valor de mantisa 5.8736629 pero los valores del exponente serán 4, -3 y 0 respectivamente. El efecto del exponente es indicar la posición del punto que separa la parte entera de la parte fracionaria, razón por la cual a este tipo de notación se la llama de punto o coma flotante. Para números negativos, el signo - precede a la mantisa. Una representación similar a la aquí descrita, binaria de punto flotante, es la que se utiliza en los computadores para representar números con parte fraccionaria llamados en algunos lenguajes impropiamente reales.Sabemos que a fijar el número de cifras significativas con las que se efectúan cálculos, lo que hacemos es trabajar con aproximaciones racionales. Mientras más cifras significativas se usen -manualmente o con computador- mayor será la precisión de los resultados. La ventaja de la representación de punto flotante en calculadoras y computadoras es que permite almacenar un número fijo de dígitos significativos para mayor precisión de las operaciones aritméticas elementales. En una representación análoga
utilizando el sistema binario de numeración, tanto la mantisa
como el exponente se representan en binario. La convención
del rango de la mantisa m suele ser:
Por ejemplo, el número (0.5)10 x 100 en decimal es (0.1)2 x 20 en binario, las bases de los exponentes están escritos ambos en decimal. El número 5.625 lo podemos escribir
en notación científica como 0.5625 x 101, en decimal
y en binario como (0.101101)2 x (10)2(11)2
es decir, con mantisa (0.101101)2 y exponente (11)2.
(Verifíquelo)
|