EL SOFTWARE, LOS DATOS Y SU CODIFICACION
El firmware es un bloque de instrucciones de programa para propósitos específicos, grabado en una memoria de tipo no volátil (ROM, EEPROM, flash, etc.), que establece la lógica de más bajo nivel que controla los circuitos electrónicos de un dispositivo de cualquier tipo.
No confundir el valor de un dato con el valor de su dirección.
¿QUE ES EL SOFTWARE O LOGICAL?
Además de la velocidad y confiabilidad, no cabe duda que la versatilidad es otra de las características relevantes de las computadoras. A partir de su uso inicial como calculadoras automáticas, poco a poco han ido invadiendo distintas áreas de aplicación: científica, industrial, administración pública, apoyo profesional, entretenimientos, modelación, enseñanza, etc.
Un computador no sabe como procesar datos. Se le debe indicar mediante instrucciones: donde están los datos a procesar, que procesamiento realizar con ellos, y hacia que medio iran los resultados obtenidos.
Un programa software almacenado en la memoria principal de un computador, si bien esta registrado en ella, no forma parte del material de los circuitos que la constituyen (hardware).
Estar registrado no significa que esos circuitos quedaran en determinado estados eléctricos en su interior que representan el programa citado.
Entonces cuando se cambia el software no hay cambio de material de componente alguno del computador: el hardware permanece invariable. Solo se modifica el estado eléctrico del material semiconductor que compone los circuitos de la memoria.
Por eso esta manera fácil y veloz de cambiar un programa en el interior de un computador, este resulta una herramienta tan versátil para efectuar cualquier proceso de datos. Cambiando de programa se modificara el comportamiento de la maquina.
Resulta que el hardware provee funciones procesadores que son activadas por cada una de las instrucciones de un programa ejecutado según ellas.
Software de un computador, es cualquier programa que puede ser almacenado total o parcialmente en su memoria principal, para ser ejecutado por el procesador de dicho computador.-
Un computador con todos sus circuitos electrónicos energizados, pero sin ningún programa en memoria, no puede procesar datos. No sabe que hacer. Es solo puro hardware. Cada instrucción que es ejecutada por la UC (Unidad de Control) da lugar a una secuencia predeterminada de movimiento de datos y operaciones en la UAL (Unidad Aritmético Lógica) que se desarrollen con los pulsos de reloj.
Puede afirmarse que el “software controla el hardware”
¿QUE ES EL FIRMWARE?
Un computador encendido sin ningún programa en memoria principal (MP) no puede hacer nada. Los programas que residen en la porción RAM de MP desaparecen cuando se apaga
un equipo.
El firmware es un bloque de instrucciones de programa para propósitos específicos, grabado en una memoria de tipo no volátil (ROM, EEPROM, flash, etc.), que establece la lógica de más bajo nivel que controla los circuitos electrónicos de un dispositivo de cualquier tipo.
Al estar integrado en la electrónica del dispositivo es en parte hardware, pero también es software, ya que proporciona lógica y se dispone en algún tipo de lenguaje de programación. Funcionalmente, el firmware es el intermediario (interfaz) entre las órdenes externas que recibe el dispositivo y su electrónica, ya que es el encargado de controlar a ésta última para ejecutar correctamente dichas órdenes externas.
¿QUE ES UN PROCESADOR DEDICADO?
Un procesador dedicado se caracteriza por ejecutar siempre los mismos programas, estos se encuentra residentes en algun tipo de memoria ROM (firmware) que oficiara de memoria principal del procesador dedicado.
Dada la complejidad de los perifericos actuales, su electronica requiere de un microprocesador para controlar las operaciones que realiza; encontramos procesadores dedicados en el teclado,TECLADO |
IMPRESORA LASER |
MODEM |
DISCO DURO |
¿COMO SE PREPARA EL PROCESO DE DATOS EN EL COMPUTADOR, COMO SE LE ORDENA QUE DEBE HACER?
En cualquier proceso de datos con computador, es indispensable escribir en memoria los datos, las instrucciones del programa, antes de empezar a ejecutar estas.
1 Codificación de los datos:
La dirección de un dato puede ser elegida arbitrariamente, siempre que dicha dirección sea la que forme parte de la instrucción que va a operar dicho dato, puesto que una instrucción debe indicar como localizar dicho dato a operar.
2 Codificación de las instrucciones en código de maquina:
La combinación binaria que codifica una instrucción constituye su “código de instrucción” o “código de maquina”, en el sentido que es el código que entiende la maquina o sea los circuitos de la UC. Cada procesador tiene sus propios códigos de maquinas que puede ejecutar.
El código de maquina comprende necesariamente el código de la operación (cod-op) ordenada (transferir, sumar, comparar, dividir, saltar a otra instrucción ...). Si el dato a operar esta en memoria, al cod-op le sigue una dirección que indica donde se encuentra (o donde memorizar un resultado que esta en un registro de UCP, si se ordena una escritura).
No confundir el valor de un dato con el valor de su dirección.
En general una instrucción ordena una operación (mediante su cod-op), y en relación con esta permite localizar uno o dos datos a operar (en este caso dando su dirección en memoria), e indica donde guardar el resultado.
La dirección de I es arbitraria, dado que si cuando I1 se va a ejecutar el registro IP tiene esa dirección será localizada por la UC encargada de ejecutarla. A partir de esa dirección, el cod-op de esa instrucción y de las siguientes indica lo que debe sumarse al IP para localizar la siguiente instrucción a ejecutar. El número a sumar al IP es la cantidad de celda que ocupa cada instrucción. Es el sistema operativo, quien decide cual será la dirección de la primera instrucción de un programa, la cual llegara al IP merced al programa cargador.
ALTO Y BAJO NIVEL DE CODIFICACION DE DATOS
Una pc requiere de cuatro instrucciones (procesos a realizar) que hemos codificado en hexa A10050 03060050 2B060650 y A31050, códigos que en memoria principal se almacenan en binario.
Las dos formas de codificar que deben hacerse (R=P+P-Q; expresión matemática), ordenan realizar el mismo proceso. La expresión matemática lo hace en una forma mas compacta y fácil de expresar para nosotros, mientras que los códigos de las instrucciones a ejecutar amen de resultar poco manejables para el hombre, están codificados en un lenguaje que solo pueden entender los procesadores INTEM o AMD. Asimismo, el proceso a realizar ha sido descompuesto a 3 subprocesos (uno por instrucción) acorde a lo que es capaz de realizar y “entender” (decodificar) la maquina.
La forma “matemática”, abstracta, de codificar mas familiar a nosotros es la de “alto nivel”, la cual se emplea para programar procesos en los lenguajes de alto nivel como: Fortran, Pascal, Cobol, Basic, C, Java, etc.
En cambio, la codificación binaria al nivel de códigos de instrucción que “entiende” una maquina determinada se denomina de “bajo nivel” o “nivel de maquina” o “código de maquina” o “lenguaje absoluto”, de maquina”
Esta traducción en las primeras computadoras era realizada por personas que codificaban en binario las instrucciones para el computador, mediante llaves existentes en un panel frontal.
Posteriormente este proceso fue realizado por programas denominados “compiladores” encargados de traducir las órdenes codificadas en un lenguaje de alto nivel que estaban en memoria principal, en códigos de instrucciones, que también quedaban en memoria. Para Java se usan traductores tipo “interpretes”.
¿COMO ENCUIENTRA LA UC EN MEMORIA LA PRIMER INSTRUCCION Y LAS SIGUIENTES DE UN PROGRAMA A EJECUTAR, MEDIANTE EL REGISTRO IP?
En el programa codificado(la imagen que apreciamos a la derecha) la primer instrucción comienza en la dirección 0200H, y las dos siguientes en 0203H y en 0207H. Por lo tanto, en este caso IP deberá contener sucesivamente los valores binarios que en hexa son: 0200H, 0203H y 0207H, como se verificara cuando se ejecutan esas instrucciones.
Suponiendo que IP empiece con el valor 0200H puesto que el código de I, ocupa 3 bytes, (esto lo “conocerá” la UC al ejecutar I1), y si la UC hace la suma (con su calculador que es la UAL ) 0200+3=0203, podría determinar el nuevo valor que debe tener IP, que es la dirección donde esta I2 0200+3=0203, podrá determinar el nuevo valor que debe tener IP, que es la dirección donde esta I2.
Del mismo modo, cuando ejecuta I2 (que ocupa 4 bytes), podrá calcular 0203+4=0207 para ubicar I3.
Por ultimo si a 0207 le sumamos 4 (cantidad de bytes de I3), obtenemos 020B, dirección de I4 (en hexa después de 7 siguen 8, 9, A , B) así sucesivamente la UC va cambiando el valor de IP para ir localizando en memoria las sucesivas instrucciones que debe ejecutar.
Esta es la forma pensada para que la UC localice y ejecute, en el orden establecido, cada una de las instrucciones que forman una secuencia. Por lo tanto, para respetando estas reglas, las instrucciones a ejecutar deben estar escritas en posiciones consecutivas de memoria.
Instrucción de salto
Una “instrucción de salto” permite no seguir la ejecución de un programa con la instrucción que esta escrita a continuación de ella en memoria, sino continuar con otra instrucción, cuya dirección debe permitir formar instrucción de salto. El valor de esta dirección debe pasar al IP. O sea, que igualmente esta instrucción permite encontrar la que le sigue.
Por lo tanto, cada instrucción permite determinar donde esta la siguiente a ejecutar, y por consiguiente, establecer el valor que tendrá el registro IP.
¿QUIEN LE PROPORCIONA LA DIRECCION DE LA PRIMERA INSTRUCCION DE CADA PROGRAMA?
Nosotros somos quienes nos encargamos de escribir en el IP la dirección de la primer instrucción de una secuencia que queramos ejecutar.
Explicación:
Cuando se enciende un computador, el primer programa que se ejecuta es siempre el mismo. Los códigos de sus instrucciones están permanentemente en la porción ROM de la memoria principal (RAM), siendo que el hardware provee la dirección de la primer instrucción a ejecutar. O sea que el hardware inicializa el valor del IP al encender el equipo, así como el valor de otros registros.
Como resultado de la ejecución de dicho programa almacenado en ROM, se escribe en memoria principal una copia de programas que están en el disco. Estos al ser ejecutados traen a memoria los programas del “sistema operativo”, que también están en el disco como archivos. Luego de lo cual en pantalla aparece C> o alguna imagen con opciones, para indicar al sistema operativo mediante un comando, que programa desea traer a memoria.
Esto es, un programa del sistema operativo permite traer del disco memoria, una copia del programa que necesita el usuario, y se encarga de que en el IP aparezca la dirección de la primer instrucción del programa a ejecutar.
¿Como se consigue?
La ultima instrucción del programa del SO se encarga de esta tarea. Es una instrucción de salto, que indica la dirección donde esta la primer instrucción del programa del usuario a ejecutar.
¿Cómo se pasa la ejecución de un programa a otro, sin intervención humana?
La dirección se instala en el IP, con lo cual en forma automática, sin intervención humana, la próxima instrucción que la UC ejecuta luego que ejecuto la ultima instrucción de salto citada será la primera del programa de usuario. A partir de esta, debe consignarse que el sistema operativo registra la dirección donde dejo en memoria la primera instrucción del programa que trajo del disco, la cual es proporcionada al IP por la instrucción de salto citada.
Cuando termina de ejecutarse este programa, la última instrucción del mismo llamara al sistema operativo. Será una instrucción que en esencia ordena saltar a la dirección de memoria donde esta la primer instrucción de un programa del SO. Este decidirá cual es el próximo programa que debe ejecutar la UC.
De esta forma, se consigue pasar automáticamente de la ejecución de un programa a otro.
Joana Ruiz Diaz, Gastón Pereson, Rubén Melgarejo (2 "B")