1.1. REPRESENTACIÓN DE LA INFORMACIÓN 1.1.1. INTRODUCCION Los computadores digitales actuales se basan en una tecnología electrónica que permite representar los datos mediante combinaciones de circuitos flip-flop o biestables. Estos elementos básicos sólo admiten dos estados, representados por el nivel de tensión a su salida. La información que se representa mediante la combinación de elementos que sólo admiten dos estados se denomina información binaria. Cada uno de los elementos de la información binaria recibe el nombre de bit (binary digit) y se codifica mediante el empleo de uno de los dos únicos símbolos 0 o 1. Dicho de otro modo, cualquier dato que se deba procesar en un computador digital deberá estar representado por un código formado por una secuencia de ceros y unos. La codificación consiste en establecer unas reglas que definan una correspondencia entre cada elemento de información y la secuencia de bits que constituye su código. Existen varios criterios genéricos para establecer esta correspondencia, que dan lugar a tipos diferentes de códigos. Dichos criterios se denominan sistemas de codificación. Clasificación de la información Existen dos flujos de información en un computador digital: Flujo de datos: han de ser manipulados para producir los resultados. Flujo de control: o flujo de instrucciones, expresa las manipulaciones a realizar en dichos datos. Los datos pueden ser: Numéricos: números de tipo natural, entero o real. Alfabéticos: letras del alfabeto. El flujo de control se compone de las órdenes que debe ejecutar el computador, y que reciben el nombre de códigos de instrucción. 1.1.2. SISTEMAS DE CODIFICACION Codificación directa Es el sistema de codificación más simple de todos y consiste en establecer una correspondencia biunívoca entre un conjunto de símbolos y un conjunto de códigos binarios mediante una tabla. Si se tiene un conjunto de n elementos tales que cada uno de ellos puede tomar m valores distintos, el número Nc de combinaciones distintas de valores que puede tomar dicho conjunto de elementos (número de códigos posibles) viene dado por la expresión: Nc = m^n Dado que m vale 2 para los elementos binarios, con n elementos se pueden obtener 2^ n códigos distintos. Codificación por campos Cada campo se codifica por una tabla independiente. La suma de longitudes de estas tablas es inferior a la de una tabla directa única. La codificación por campos resulta habitualmente más sencilla que la codificación directa. Esta última presenta en contrapartida una total libertad en la asignación de códigos, lo que permite en muchos casos facilitar las operaciones de proceso de la información codificada. Codificación por secuencias de códigos A menudo los elementos de información no se procesan o almacenan aisladamente sino en conjunto. En estos casos los códigos de los sucesivos datos suelen tratarse o registrarse secuencialmente. El tratamiento secuencial de los códigos abre una nueva posibilidad consistente en hacer que determinados códigos especiales modifiquen la interpretación de los que aparezcan a continuación. Este sistema de codificación consigue reducir la longitud de las tablas de codificación a costa de aumentar la longitud del código asignado a ciertos símbolos. 1.1.3. CODIGOS NUMERICOS Fundamentos Se puede definir un sistema de numeración como el conjunto de símbolos y reglas que se utilizan para la representación de cantidades. Existe un elemento fundamental que caracteriza a todos los sistemas de numeración, y que se denomina base del sistema de numeración. Dicha base es el número de símbolos que se utilizan para realizar la representación. Se denomina rango de representación, en un sistema de numeración y con un número de cifras determinado n, al conjunto de cantidades representables en el mismo. Sistemas posicionales En los sistemas de numeración, la representación de una cantidad siempre se efectúa mediante cadenas de símbolos. Si el significado de los símbolos varía en función de la posición que ocupen en la cadena, entonces dicho sistema de numeración recibe el nombre de posicional. Los ejemplos más importantes de sistemas de numeración posicionales son el decimal o de base 10, utilizado por el hombre en la cultura occidental, y el binario o de base 2, que es el que utiliza el computador para representar la información y con el que es capaz de trabajar. Cabe mencionar que existen otros sistemas de numeración, como los sistemas de residuos, que no son posicionales pero que no se tratarán por tener menos importancia. Teorema fundamental de la numeración Supóngase una cantidad X expresada en un sistema cuya base es b, y que está representada por una cadena de dígitos { xi } donde el subíndice indica la posición de la cifra respecto a la coma en el sentido mencionado anteriormente, y donde se considera que el dígito inmediatamente a la izquierda de la coma ocupa la posición de referencia 0. Entonces dicha cantidad X (de la que se desea conocer normalmente su valor decimal) se obtiene a partir de su representación mediante la fórmula: X = Suma de i [ -infinito, infinito ] xi · bi Asimismo, dada una cantidad X y un sistema de representación posicional de base b, existirá una única representación posible de dicha cantidad en dicha base, realizada a partir de dígitos que cumplan la condición 0 <= xi < b, para todo i. 1.1.4. SISTEMAS DE NUMERACION Sistema decimal Es el de base 10 y es el que entiende de modo natural el ser humano. Es, por tanto, el sistema que se utilizará como referencia para conocer las cantidades representadas en los otros sistemas de numeración. Se suponen n cifras enteras y sin signo. Rango de representación: 0 <= X < 10^n Sistema binario Este es el sistema de numeración que utiliza el computador internamente. Este sistema de numeración es de base 2. Para convertir un número decimal a binario, se divide sucesivamente por 2, y se toman sucesivamente el último cociente y desde el último resto hasta el primero. Rango de representación: 0 <= X < 2^n Sistema octal Este es el sistema de numeración en base 8 y utiliza 8 símbolos para representar las cantidades. Dichos símbolos son: 0, 1, 2, 3, 4, 5, 6 y 7 y tienen el mismo significado que sus equivalentes decimales. La conversión de octal a binario se realiza mediante la siguiente tabla: OCTAL 0 1 2 3 4 5 6 7 ======================================= BINARIO 000 001 010 011 100 101 110 111 Rango de representación: 0 <= X < 8^n Sistema hexadecimal Este es el sistema de numeración en base 16 y utiliza 16 símbolos para representar las cantidades. Dichos símbolos son: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F. Los diez primeros son los números decimales y tienen el mismo significado que en la numeración decimal. Los seis últimos son letras que representan: A=10, B=11, C=12, D=13, E=14 y F=15. La conversión de hexadecimal a binario se realiza mediante la siguiente tabla: HEXADECIMAL 0 1 2 3 4 5 6 7 ====================================================== BINARIO 0000 0001 0010 0011 0100 0101 0110 0111 ====================================================== HEXADECIMAL 8 9 A B C D E F ====================================================== BINARIO 1000 1001 1010 1011 1100 1101 1110 1111 Rango de representación: 0 <= X < 16^n Sistema binario - decimal Los denominados códigos binario - decimales corresponden a una codificación por campos, en la que cada campo contiene el código de una cifra decimal. Como existen 10 posibles cifras decimales, del 0 al 9, cada campo deberá tener al menos 4 bits, por ser 24 = 16 > 10. DECIMAL BCD 8421 Aiken 2421 exceso de 3 Binario 5421 ================================================ 0 1 2 3 4 5 6 7 8 9 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 0000 0001 0010 0011 0100 1011 1100 1101 1110 1111 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 0000 0001 0010 0011 0100 1000 1001 1010 1011 1100 1.1.5. ARITMETICA BINARIA Suma 0+0=0 0+1=1 1+0=1 1+1=0* * = con 1 de acarreo Resta 0-0=0 0-1=1* 1-0=1 1-1=0 * = con un préstamo de 1 Multiplicación 0x0=0 0x1=0 1x0=0 1x1=1 División 0 / 0 = Error * 0/1=0 1 / 0 = Error * 1/1=1 * la división por 0 no tiene sentido 1.1.6. REPRESENTACION DE NUMEROS NEGATIVOS Módulo y signo El cambio de signo es inmediato: sólo cambiar el bit de la izquierda. La multiplicación y la división se tratan sin dificultad operándose por un lado con las magnitudes y por otro con los signos. La posibilidad de desbordamiento al operar con sumas, restas y multiplicaciones suponen una dificultad. El rango de representación es simétrico [ -2^n-1 + 1, 2^n-1 - 1 ] pero la ambigüedad de representación del 0 complica la detección de números negativos. La extensión de signo es relativamente complicada. Las operaciones de suma y resta se complican al depender de los signos y magnitudes de los operandos. Complemento a 1 El cambio de signo se reduce al complemento lógico (cambiar ceros por unos y viceversa). La suma es sencilla pero teniendo en cuenta que cuando aparece un acarreo a la posición n se debe incrementar en una unidad el resultado. Se complican la multiplicación y la división, puesto que hay que considerar la posibilidad de que haya operandos complementados. Existe la posibilidad de desbordamiento, que deberá detectarse al operar. El rango de representación es simétrico [ -2^n-1 + 1, 2^n-1 - 1 ] y el cero admite dos representaciones: 00...00 o 11...11. La extensión de signo se limita a repetir el bit de la izquierda. Complemento a 2 El cambio de signo es sencillo aunque ligeramente más complicado que en el complemento a 1: realizar el complemento lógico y añadir 1. La suma y resta son más sencillas que con el complemento a 1: consiste en realizar la suma directa. Existe la posibilidad de desbordamiento en estas operaciones, que no debe confundirse con el acarreo superior que se elimina. Se complican la multiplicación y la división, puesto que hay que considerar la posibilidad de que haya operandos complementados. El rango de representación es asimétrico [ -2^n-1, 2^n-1 - 1 ]. Esto presenta el problema de que no se puede hacer el complemento de -2^n-1 ya que daría el mismo código, lo que se supone que es un desbordamiento. Sin embargo el cero tiene una única representación. La extensión de signo se limita a repetir el bit de la izquierda. Exceso a M En este sistema los números se incrementan en M y el resultado se representa luego en binario puro. El número X viene representado por X + M expresado en binario. En la mayoría de los casos se hace M = 2^ n-1, donde n es el número de bits empleados para la representación. Este sistema de representación se utiliza para expresar los exponentes en el caso de coma flotante. Representación en coma flotante El exponente se representa en el sistema de exceso a 2^n-1, siendo n el número de bits que se dedican al mismo. La mantisa es un número real normalizado: sin parte entera y tal que la primera cifra fraccionaria es significativa. La base de exponenciación o raíz es una potencia de 2 determinada por el fabricante: 2, 8 o 16. Coma flotante estándar IEEE 754 Emplea mantisa fraccionaria normalizada. La mantisa se representa en el sistema de módulo y signo. Utiliza el formato de precisión ampliada, valiendo siempre 1 el bit implícito. La coma está a la derecha del bit implícito, constituyendo dicho bit la parte entera de la mantisa. El exponente se representa en exceso, pero a 2^n-1 - 1 en vez de a 2^n-1, como sucedía en los casos anteriores. Juego de caracteres alfanuméricos Las letras del alfabeto: mayúsculas y minúsculas. Las 10 cifras del sistema decimal: del 0 al 9. Los signos de puntuación: . , : ; ? + * % ... Los caracteres de control: órdenes entre dispositivos. Longitud del código binario: número de bits utilizados para codificar un carácter. Suele estar entre 6 y 12 bits. El sistema de codificación suele ser directo. Número máximo de caracteres distintos que se pueden representar con la longitud de código anteriormente definida: 2^longitud . 1.2. EL COMPUTADOR Y SUS CARACTERÍSTICAS 1.2.1. 1. QUE ES UN COMPUTADOR ? Es una máquina que lleva a cabo "procesamiento" de información "digital". Información digital es aquella que puede expresarse por medio de números (o letras). El procesamiento o transformación que lleva a cabo el computador (con o sobre la información digital), no es fijo y debe ser definido por el usuario de la máquina. Se dice entonces que el usuario programa la computadora. El procesamiento de la información produce como resultado mas información. A la información que va ser procesada, nos referiremos como datos de entrada o entrada, a la información producida nos referimos como resultados o salida. 1.2.2. ORGANIZACIÓN INTERNA DEL COMPUTADOR Una computadora esta conformada por los subsistemas: Procesador, Memoria y Dispositivos de Entrada y Salida. Ilustración 1: La Organización Interna de la Computadora El Preprocesador Es el cerebro del computador, se denomina comúnmente (Unidad central de Proceso ) CPU. Es una compleja pieza de circuitos la cual controla la operación del computador. Esta hecha de cientos de miles diminutos suitches y sendas por las puede transmitir información binaria. Ella puede manipular información a altas velocidades de acuerdo a un conjunto fijo de instrucciones o programas que se encuentra dentro de ella. Ilustración 2: El Preprocesador La razón para su aparente inteligencia es la velocidad con la cual puede ejecutar una simple instrucción. Un microprocesador puede procesar mas de 100 millones de instrucciones por segundo. Su función es ejecutar programas almacenados en la memoria principal, tomar de ellos cada instrucción, examinarla y ejecutarlas una después de la otra. La CPU está conformada por tres unidades diferentes, así: Unidad de Control, Unidad Aritmética Lógica, Registros de Almacenamiento Temporal y están contenidos en un chip muy pequeño llamado microprocesador, de un tamaño no mayor que el de la uña más pequeña. Los constructores de Microprocesadores mas conocidos son INTEL y MOTOROLA: Modelo Procesador 8086 8088 80286 80286 80386 DX 80386 SX 80486 DX 80486 DX 80486 SX Pentium Procesadores Intel Historia Año Capacidad Tamaño Lanzamiento del Bus Palabra 1978 16 bits 16 1979 8 bits 16 1982 16 bits 16 1982 16 bits 16 1985 32 bits 32 1988 16 bits 32 1989 32 bits 32 1989 32 bits 32 1985 32 bits 32 1993 64 bits 32 Memoria Direccionada 1 MB 1 MB 16 MB 16 MB 4 GB 4 GB 4 GB 4 GB 4 GB 4 GB Tabla 1: Procesadores Intel Unidad de Control La Unidad de Control es la encargada de la búsqueda de las instrucciones en memoria, su interpretación y la generación de las señales de control necesarias para ejecutar la operación especificada por cada instrucción. Tiene dos aspectos esenciales: Secuenciamiento de las instrucciones. Interpretación de las instrucciones. Secuenciamiento De Instrucciones Es el proceso por el cual las instrucciones de un programa van siendo seleccionadas para su ejecución en un orden determinado. Se puede emplear un registro denominado contador de programa (CP) que contiene el valor de la posición de memoria cuando se está ejecutando la instrucción y que se incrementará en una unidad al ir a ejecutar la siguiente instrucción. Las instrucciones de ruptura de secuencia permiten la selección de un camino entre varios posibles y la realización de bucles en el algoritmo. Pueden ser de dos tipos: Incondicionales: el CP se actualiza con la dirección donde continúa el programa (CP <- x). Condicionales: el CP se actualiza con CP <- x si la condición vale 1, y CP <- CP + p (palabras de memoria) si la condición vale 0. En la llamada a una subrutina, las operaciones que hay que realizar son: Guardar el contenido del CP con la siguiente instrucción del programa en un registro de la UCP. Cargar y comenzar la ejecución de la subrutina y volver al programa una vez finalizada. Microoperaciones La ejecución de un programa consiste en la ejecución secuencial de sus instrucciones. Cada instrucción se ejecuta durante un ciclo de instrucción que está compuesto de subciclos más pequeños: 1. Ciclo de búsqueda. 2. Ciclo de direccionamiento indirecto. 3. Ciclo de ejecución. 4. Ciclo de interrupción. La realización de cada uno de estos subciclos implica una o más operaciones más pequeñas que son las microoperaciones. Representan las operaciones atómicas de la UCP. Ciclo de búsqueda Ocurre al comienzo de cada ciclo de instrucción y origina que se realice la búsqueda de la instrucción en memoria. Se utilizan los cuatro registros siguientes: Registro de dirección de memoria (RD): especifica la próxima dirección de memoria de donde se va a leer o donde se va a escribir. Registro de datos de memoria (RM): contiene el dato a escribir en la memoria o recibe el dato leído de la memoria. Contador de programa (CP): almacena la dirección de la próxima instrucción que hay que ir a buscar a la memoria. Registro de instrucción (RI): almacena la última instrucción leída de la memoria. Para agrupar microoperaciones se deben seguir dos reglas simples: 1. Respetar la secuencia de acciones. 2. Evitar conflictos simultáneos en el mismo registro. Ciclo de direccionamiento indirecto El siguiente paso es encontrar los operandos a los que se refiere la instrucción. La secuencia de pasos que constituye el ciclo de direccionamiento indirecto es: 1. El campo de dirección de la instrucción se transfiere al registro de dirección de memoria. 2. El registro de dirección de memoria se utiliza para buscar la dirección del operando. 3. El campo de dirección del registro de instrucción se actualiza desde el registro de datos de memoria. Ciclo de ejecución Los ciclos de búsqueda, direccionamiento indirecto e interrupción son simples y predecibles. Cada uno de ellos contiene una secuencia fija de microoperaciones y en cada caso las mismas microoperaciones se repiten una y otra vez. Esto no sucede con el ciclo de ejecución, ya que puede necesitar varias microoperaciones para completar dicho ciclo. Existen tantas secuencias como códigos de operación diferentes. Ciclo de instrucción Se introduce un registro de dos bits denominado código del ciclo de instrucción (CCI) cuyo contenido indica en que fase del ciclo de instrucción se encuentra la UCP. Al final de cada uno de los cuatro ciclos el CCI se actualiza al valor que corresponde al siguiente ciclo que se ha de ejecutar. Interpretacion De Las Instrucciones Todas las microoperaciones que se necesitan para realizar un ciclo de instrucción pertenecen a una de las cuatro categorías siguientes: Transferencia de datos desde un registro a otro. Transferencia de datos desde un registro al bus del sistema. Transferencia de datos desde el bus del sistema a un registro. Realización de una operación aritmético lógica, utilizando registros como entradas y salidas. La Unidad de Control efectúa dos funciones básicas: Secuenciamiento: la UC se encarga de que la UCP realice una serie de microoperaciones en la secuencia adecuada. Ejecución: la UC es responsable de que se ejecute cada microoperación. El interés ahora se centra en la interacción entre la UC y los otros elementos de la UCP. En un modelo general de la UC, las entradas son: Reloj: permite a la UCP mantener la temporización básica de todo el sistema. Cada pulso del reloj se denomina ciclo del procesador o ciclo de reloj. Registro de instrucción: se utiliza para determinar que microoperaciones hay que ejecutar durante el ciclo de ejecución. Señales de condición: para conocer el estado en que se encuentra la UCP y el resultado de las operaciones anteriores realizadas en la UAL. Señales de control del bus del sistema: determinadas señales que son necesarias para su funcionamiento, incluidas las señales de interrupción. Y las salidas son: Señales de control internas a la UCP: las que originan que los datos se muevan entre los diferentes registros y las que activan funciones específicas de la UAL. Señales de control hacia el bus del sistema: señales de control a memoria y señales de control a módulos de E/S. Diseño A Nivel De Registro A continuación se enumeran los pasos que constituye el procedimiento de diseño a nivel de registros: Definir el comportamiento del sistema digital: mediante un conjunto S de secuencias de operaciones de transferencias entre registros (algoritmo). Analizar S: para determinar tipos de componentes y número de componentes de cada tipo. Construir un diagrama de bloques D: de la Unidad de Procesamiento y verificar que son posibles todas las transferencias de información expresadas en S y se satisface el criterio coste/prestaciones especificado en el diseño. Analizar S y D: para identificar e introducir los puntos de control necesarios. Diseñar la Unidad de Control: generar las señales de control identificadas en el paso anterior, en el orden especificado por el algoritmo de transferencia de registros S. Comprobar: el funcionamiento del diseño resultante. Unidad Aritmético Lógica La Unidad Aritmético Lógica (UAL) es la parte del computador donde se efectúan las operaciones aritméticas y lógicas sobre los datos. Los datos llegan a la UAL a través de registros y los resultados que se generan también se almacenan en registros. Cuando la UAL finaliza una operación activa determinados indicadores que pueden ser utilizados por la unidad de control. La unidad de control envía señales que controlan las operaciones y el movimiento de datos de entrada y salida de la UAL. Sumadores Y Restadores Binarios Un sumador binario se puede considerar como un conversor de código que recibe a la entrada dos números binarios x e y de n bits cada uno: x = xn-1 xn-2 ... x1 x0 y = yn-1 yn-2 ... y1 y0 y produce una salida s de n + 1 bits que es la suma de los operandos: s = sn sn-1 ... s1 s0 Semisumador binario (SSB) Consta de dos entradas binarias ( x e y ) y dos salidas: una es el resultado de la suma ( s ) módulo 2 y la otra es el arrastre o acarreo ( c ) que indica si el resultado de la suma es igual a 2. La tabla de verdad de un SSB es: x y c s ========== 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 Las ecuaciones lógicas serían: s = (x AND y) OR (x AND y) = x EXCL y c = x AND y Sumador binario completo (SBC) Se diferencia del SSB porque tiene una tercera entrada ( c i ) llamada arrastre de la etapa anterior, que le permite encadenarse con otros SBC para el diseño de circuitos de suma de números de n bits ( n > 1 ). Acepta como entradas un bit de cada uno de los operandos ( xi e yi ) y un bit de arrastre ( ci-1 ) de la etapa previa, y genera como salida un bit de suma ( si ) y un bit de arrastre ( ci ) para la etapa siguiente. La tabla de verdad de un SBC es: xi yi ci-1 ci si ============== 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 0 1 0 0 1 Las ecuaciones lógicas serían: si = (xi AND yi AND ci-1) OR (xi AND yi AND ci-1) OR (xi AND yi AND ci-1) OR (xi AND yi AND ci1) ci = (xi AND yi) OR (xi AND ci-1) OR (yi AND ci-1) Sumador - restador binario paralelo Para poder restar números, se utiliza la representación de números negativos en complemento a 2. Si y = y n-1 yn-2 ... y1 y0 , entonces -y se define por: -y = yn-1 yn-2 ... y1 y0 + 1 Para obtener -y a partir de y, se efectúan las operaciones siguientes: 1. Sustituir todos los bits de y por su complemento (cambiar 0 por 1 y 1 por 0). 2. Sumar 1 al bit menos significativo. Con cada módulo SBC se incluye una puerta OR-Exclusiva, a la cual le llegan a su vez dos entradas: La entrada yi propia de la etapa. La entrada M que controla la operación: si es 0 es un sumador y si es 1 es un restador. Detección del rebose Se puede producir un rebose en el caso de que los sumandos tengan el mismo signo. Pueden ocurrir dos casos: x e y son positivos: como xn-1 = yn-1 = 0, entonces cn-1 = 0. x e y son negativos: como xn-1 = yn-1 = 1, entonces cn-1 = 1. La siguiente tabla muestra las condiciones de rebose: xn-1 yn-1 sn-1 Rebose (R) ==================== 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 0 La ecuación lógica sería: R = (xn-1 AND yn-1 AND sn-1) OR (xn-1 AND yn-1 AND sn-1) = cn-2 EXCL cn-1 Por lo tanto, se incorpora una puerta OR - Exclusiva entre cn-1 y cn-2. MULTIPLICADORES Y DIVISORES BINARIOS Multiplicadores Los multiplicadores más simples se basan en el método clásico a lápiz y papel, es decir, se multiplica todos los dígitos del multiplicando por el dígito menos significativo del multiplicador, se deja en la misma fila, se continúa con el siguiente dígito del multiplicador y se lleva a una fila inferior desplazada un lugar a la izquierda, y así sucesivamente hasta sumar finalmente todas las filas. En un multiplicador binario ocurre igual: se hacen productos parciales mediante puertas AND y los resultados se llevan a las entradas yi de los SBC que estar n agrupados correctamente, donde cada acarreo final de una fila se llevar al SBC de la fila inferior que le corresponda. Al final se tendrán todas las salidas Pi que serán las sumas de todas las columnas (vacías o no). Cuando se trata de números con signo, la solución más fiable es el llamado algoritmo de Booth: 1. El multiplicando y el multiplicador se almacenan en los registros M y m respectivamente. 2. Hay un registro de 1 bit que se coloca a la derecha del bit menos significativo ( m0 ) y se representa por m-1. 3. El resultado de la multiplicación se obtiene en los registros A ( xi ) y m. Los registros A y m-1 se inicializan a 0. 4. La UC del multiplicador examina uno a uno los bits del registro m con el bit que está a su derecha. 5. Si los dos bits son iguales, todos los bits de los registros A, m y m -1 se desplazan 1 bit a la derecha. 6. Si los dos bits difieren, el multiplicando se suma o se resta del registro A, según sean 0-1 o 1-0. 7. El desplazamiento se produce siempre después de la suma o la resta, pero el bit A n-1 permanece en su sitio para preservar el signo del número en A y en m (desplazamiento aritmético). Esto se ve mejor en la siguiente tabla (b es un bit): A m m-1 ===================== b ... b b ... b b ... ... ... b ... b b ... b b Divisores Dados dos operandos, el dividendo D y el divisor d, el objetivo de los circuitos de división es calcular el cociente Q y el resto R tales que: D=dxQ+R Se requiere que el resto sea menor que el divisor ( 0 <= R < d ). El dividendo, el cociente y el divisor se corresponden respectivamente con el producto ( P ), el multiplicador ( m ) y el multiplicando ( M ), es decir, los circuitos utilizados en ambas operaciones son análogos. Si en la multiplicación interviene repetidamente la suma, en la división ocurre igual con la resta. El procedimiento que se utiliza para obtener el cociente es el siguiente: 1. Se examinan los bits del dividendo de izquierda a derecha, hasta comprobar que sea mayor o igual que el divisor (es capaz de dividir). 2. Hasta que ocurre este suceso se van colocando 0 en el cociente de izquierda a derecha. 3. Cuando el suceso tiene lugar, se coloca un 1 en el cociente y se resta el divisor del dividendo parcial (resto parcial). 4. A partir de aquí la división es cíclica añadiendo bits adicionales del dividendo al resto parcial hasta que el resultado es mayor o igual que el divisor. 5. El proceso continúa hasta que se acaban todos los bits del dividendo. OPERACIONES DE DESPLAZAMIENTO Un registro de desplazamiento es todo registro capaz de efectuar transferencias series entre sus celdas adyacentes. Tienen n entradas y salidas en paralelo, una entrada serie para desplazamiento izquierda y derecha (EI y ED), una señal de reloj y otra de control. Los desplazamientos se pueden clasificar atendiendo al tratamiento que se da a la información: Tratamiento del bit de signo Aritmético (A): no se altera el bit de signo y lo copia en el caso de desplazarse a la derecha. Lógico (L): el bit de signo es un bit más en la operación. Sentido del desplazamiento Izquierda (I): cada bit se desplaza a la celda izquierda inmediata. Derecha (D): cada bit se desplaza a la celda derecha inmediata. Tratamiento de los bits que rebosan Abierto (A): se pierden los bits que rebosan. Cerrado (C): los bits que rebosan por un extremo se introducen por el otro. Longitud de los registros Simple (S): se utiliza un solo registro en la operación de desplazamiento. Doble (D): se utilizan dos registros en la operación de desplazamiento. Estructura de los registros de desplazamiento En relación con la forma de procesar la información los registros de desplazamiento se pueden clasificar en cuatro categorías: Entrada paralelo / Salida paralelo: las entradas y las salidas se producen simultáneamente. Entrada serie / Salida serie: la salida se puede utilizar después de desplazarse todos los bits. Entrada paralelo / Salida serie: se desplaza desde el bit más significativo al menos de la entrada. Entrada serie / Salida paralelo: se desplaza desde el bit más significativo al menos en la salida. OPERACIONES DE COMPARACION Un comparador es un circuito lógico que tiene dos entradas ( x e y ) de n bits cada una y tres salidas: M (mayor), I (igual) y m (menor), que indican la relación entre dichas magnitudes: M I m Entrada ============== 1 0 0 x>y 0 1 0 x=y 0 0 1 x<y El diseño de un circuito comparador se puede realizar de tres formas distintas: Utilizando un circuito combinacional La tabla de verdad para construir el circuito sería: x y M I m ============== 0 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 Y las expresiones booleanas que se deducen: M = x AND y I = (x AND y) OR (x AND y) m = x AND y Utilizando un circuito secuencial El comparador recibe los bits xi e yi de forma serie, comenzando por los más significativos: x0 ... xn-2 xn-1 ---> | Comparador | ----> M | ---> I y0 ... yn-2 yn-1 ---> | secuencial | ----> m Utilizando un sumador La UAL también posee una serie de biestables capaces de almacenar las condiciones que se producen en la ejecución de las operaciones aritméticas (registro de estado): Arrastre (C) | Resultado >= 2^n ===> C = 1 | Resultado < 2^n ===> C = 0 Rebose (V) | xn-1 yn-1 rn-1 + xn-1 yn-1 rn-1 = 1 ===> V = 1 | xn-1 yn-1 rn-1 + xn-1 yn-1 rn-1 = 0 ===> V = 0 Signo resultado (N) | Resultado < 0 ===> N = 1 | Resultado >= 0 ===> N = 0 Resultado cero (Z) | Resultado = 0 ===> Z = 1 | Resultado # 0 ===> Z = 0 El procedimiento difiere según sea números sin signo o con signo representados en C2: Test Condición Test Condición sin signo sin signo en C2 en C2 =========================================== x >= y C=1 x >= y N EXCL V = 0 x<y C=0 x<y N EXCL V = 1 x>y C=1yZ=0 x>y Z = 0 y (N EXCL V) = 0 (C + Z = 0) (Z + (N EXCL V) = 0) x <= y C = 0 o Z = 1 x <= y Z = 1 o (N EXCL V) = 1 (C + Z = 1) (Z + (N EXCL V) = 1) x=y Z=1 x=y Z=1 x#y Z=0 x#y Z=0 LOS REGISTROS Los registros son un conjunto de lugares donde el procesador almacena datos mientras trabaja sobre ellos. La figura muestra los registros de un microprocesador 8088, 8086, 286. Registros de un microprocesador. Cada uno de ellos es una parte Integral del procesador. Procesadores posteriores tienen dos registros mas, con capacidad mayor para el almacenamiento de información. Es un área temporal por la cual pasan los datos mientras están siendo procesados. El primer grupo de registros AX, BX, CX y DX también llamados de propósito general, son utilizadas para realizar operaciones. Los procesadores 386 y posteriores tienen 8 registros de propósito general, y son EAX, EBX, ECX, EDX, ESI, EDI, EBP y ESP. Ilustración 3: Registros El tamaño del registro varia entre 16 o 32 bits, dependiendo del microprocesador. El grupo de registros ( CS, DS, SS) de segmento se usan para ayudar al procesador a encontrar su camino por la memoria del computador. Son útiles para ayudar en los procesos de toma de datos de la memoria. CS, indica donde se almacena un programa en memoria, DS sirve para localizar datos en memoria. El ultimo grupo de registros ayudan a los anteriores y son: IP Registro apuntador de Instrucciones, guarda el lugar de memoria en que se encuentra la instrucción siguiente a ejecutar por el procesador. Los otros (SI y DI) ayudan en tareas de movimiento de datos. 1.2.3. LA MEMORIA CONCEPTOS BASICOS Uno de los aspectos más destacables de la memoria de un computador es su localización y desde este punto de vista se pueden clasificar en tres grandes grupos: Memoria interna del procesador: está constituida por un pequeño conjunto de registros de alta velocidad que son internos a la UCP. Memoria principal: es una memoria relativamente grande y rápida utilizada para el almacenamiento de los programas y sus correspondientes datos. Memoria externa o secundaria: son dispositivos periféricos de almacenamiento accesibles a la UCP a través de controladores de E/S. Otra característica importante de la memoria es su capacidad, es decir, la cantidad de información que puede almacenar. Esta se mide en palabras, y las palabras a su vez de varios bits. Un tema relacionado con la capacidad de la memoria es el de la unidad de transferencia. Se consideran los tres conceptos siguientes: Palabra: unidad natural de organización de la memoria. Es igual al número de bits utilizados para la representación de un número o una instrucción. Unidades direccionables: la unidad direccionable es la palabra. La relación entre el número n de bits y el número N de unidades direccionables es: 2^n = N. Unidad de transferencia: es el número de bits leídos de o escritos en la memoria simultáneamente, es decir, en unidades más grandes llamados bloques. Una propiedad muy importante de un dispositivo de memoria es el orden o método de acceso en que debe ser localizada la información. Se distinguen cuatro tipos: Acceso aleatorio: puede accederse a la información en cualquier orden, siendo el tiempo de acceso independiente de la posición de la información. Acceso secuencial: sólo se puede acceder a la información mediante una secuencia lineal, siendo el tiempo de acceso dependiente de la posición de la información. Acceso directo: incorpora un mecanismo de lectura - escritura compartido y los registros individuales tienen una dirección única que se basa en su posición física. Acceso asociativo: es de tipo aleatorio pero que no accede al contenido de la información sino a la posición de memoria que contiene una palabra determinada. El sistema de memoria de un computador utiliza diferentes tipos físicos. Los tres tipos más usados en la actualidad son: Memorias de semiconductor: con tecnología LSI o VLSI utilizadas como memoria principal del computador. Memorias magnéticas: utilizadas como memorias secundarias (discos o cintas). Memorias ópticas: utilizadas también como memorias secundarias. Resultan particularmente interesantes algunas características físicas del almacenamiento de datos. Entre las más sobresalientes están: Alterabilidad: posibilidad de alterar el contenido de una memoria. Pueden ser ROM (de sólo lectura), RWM (de lectura - escritura), RAM (de acceso aleatorio) o PROM (ROM programable). Permanencia de la información: existen tres características de los dispositivos de memoria que pueden redundar en la destrucción de la información que almacenan: lectura destructiva (DRO lectura destructiva y NDRO lectura no destructiva), volatilidad (RAM volátiles y ROM no volátiles) y almacenamiento estático/dinámico (estática si no varía con el tiempo y dinámica si varía). Desde el punto de vista del usuario la velocidad y la capacidad son las características fundamentales de la memoria. Para medir el rendimiento en velocidad de una memoria se utilizan los tres par metros siguientes: Tiempo de acceso (TA): se define como el tiempo medio necesario para leer una cantidad fija de información. Tiempo de ciclo de memoria (TC): es el intervalo entre dos lecturas cuando en las memorias DRO no es posible iniciar una segunda lectura después de la primera sin efectuar antes la restauración de la información. Velocidad de transferencia o frecuencia de acceso (FA): es el número de palabras por segundo que pueden ser accedidas en un dispositivo de memoria. JERARQUIA DE MEMORIAS Se entiende por organización la disposición física de los bits para formar palabras. La unidad de memoria de un computador se puede ver como una jerarquía de componentes. Desde el punto de vista del diseñador, esta jerarquía impone una serie de ligaduras que se pueden resumir en los tres parámetros siguientes: Capacidad de la memoria. Rapidez. Coste. La relación entre capacidad, tiempo de acceso y coste es la siguiente: Menor tiempo de acceso ===> Mayor coste por bit Mayor capacidad ===> Menor coste por bit Mayor capacidad ===> Mayor tiempo de acceso La solución a este conflicto está en emplear una jerarquía de memorias, siendo una típica: Registros de la UCP Memoria caché Memoria principal Discos magnéticos Cintas magnéticas Cuando se va hacia los niveles inferiores de la jerarquía ocurre que: El coste por unidad de información (bit) disminuye. La capacidad aumenta. El tiempo de acceso aumenta. La frecuencia de acceso a la memoria por parte de la UCP disminuye. CARACTERÍSTICAS LÓGICAS DE LA MEMORIA PRINCIPAL DEL COMPUTADOR Está compuesta por un número de celdas consecutivas llamadas byte, cada byte pueden almacenar un carácter de información. Cada byte está conformado por 8 bits y el computador sabe donde se encuentra en memoria porque cada byte tiene un número único que la identifica, la llamada dirección, por medio del cual los programas las localizan o referencian. La memoria la utilizamos para almacena datos y programas. Su constitución física era hasta hace unos años formada por núcleos magnéticos. Los computadores actuales usan para la memoria el Ilustración 4: Ejemplo de Memoria componente básico llamado Chip electrónico. Debido Principal a que el elemento anterior es más pequeño y barato se ha logrado reducir el costo de los equipos y el tamaño. La capacidad de almacenamiento de un computador puede expresarse en función del número de bytes que puede almacenar. Un byte son 8 bits. La gráfica muestra como almacena la computadora la palabra AMOR cada carácter en memoria se representa por una secuencia de unos y ceros llamada código ASCII. LA MEMORIA RAM En la memoria RAM se almacenan las instrucciones y los datos que el computador maneja, es una memoria volátil lo cual significa que al apagar el computador se borra. Para efecto de su administración técnica se conocen las siguientes divisiones: Ilustración 5: Fotografía de una memoria RAM La Memoria RAM Convencional Es el lugar donde se ejecutan los programas, donde la computadora realiza cálculos y donde se carga el Sistema Operativo. La máxima cantidad de memoria convencional es 640 Kbytes Memoria Superior A la memoria situada en la dirección comprendida entre 640 Kbytes y 1 Mbyte se llama memoria superior, y tiene un tamaño de 384 Kbyte. En ella se almacena los programas que dan soporte algunas partes del hardware. El PC (computador personal) original usaba sólo una parte de esta memoria para su BIOS, el sistema básico de Entrada/Salida que proporcionaba al PC las instrucciones de bajo nivel para controlar periféricos como unidades de disco y el teclado. Otra pequeña parte se utilizó para la memoria de vídeo, donde se almacena la información que se visualizará en los monitores monocromos o en color. Hoy , el área de memoria superior todavía no se ha llenado con la ROM. Los primeros 128 Kb se utilizan para la memoria de vídeo : los sistemas gráficos monocromo, CGA, EGA o VGA de la mayoría de los PC. Los siguientes 128 Kb están reservados para ROM instalables como la ROM de vídeo y la ROM del controlador de disco duro. Los últimos 128 Kb están reservados para la ROM BIOS. Memoria Extendida Es la memoria por encima de 640 Kbyte, aparece cuando los constructores de software y de computadores se dieron cuenta que 1Mbyte era muy poca memoria. Toda la memoria por encima de 640 Kbytes es memoria extendida. Memoria Alta Son los primeros 64 Kbyte de la memoria extendida. MEMORIA EXPANDIDA Los usuarios de hojas de cálculo fueron los primeros que reclamaron más memoria. Cuando se trabaja con ellas , está almacenando en memoria; cuanto más memoria tenga, mayor será la hoja de cálculo que pueda crear. Para grandes usuarios de estos programas 640 Kbyte no fue suficiente. Se propuso una solución que utilizaba una combinación de hardware y software. LOTUS, INTEL, MICROSOFT y constituye una forma para acceder memoria hasta a 32 Mbytes por encima de la memoria convencional. La memoria expandida no significa que sea memoria más allá de la marca de 1 Mb, ni los programas pueden ejecutarse en esa zona. Al contrario, es más bien un área de almacenamiento de memoria sobre una tarjeta de expansión compatible EMS situada dentro del ordenador. Los programas compatibles EMS pueden acceder a la memoria de la tarjeta, lo cual significa que el programa puede acceder a más memoria para almacenar datos. MEMORIA ROM (MEMORIA DE SOLO LECTURA) En la memoria ROM se encuentran almacenados procedimientos que la computadora debe realizar en el momento en que se enciende: algunas de ellas son verificación de memoria, de conexión de periféricos como teclado, impresora, detectar el disco con sistema de arranque etc. También se encuentra la ROM BIOS que está activa todo el tiempo y se encarga con el sistema operativo de realizar actividades de control de dispositivos de periféricos. EL RELOJ INTERNO DE LA COMPUTADORA Todos los microcomputadores tiene un sistema de reloj, que es utilizado por las computadoras para tomar el tiempo de sus operaciones de procesamiento. Las primeras computadoras operaban a 4.77 megahertz. Hertz es una medida de los ciclos de un reloj por segundo. Un ciclo es el tiempo que le toma realizar una operación, como mover un byte de un lugar de la memoria a otro. 1.2.4. UNIDAD DE ENTRADA / SALIDA DISPOSITIVOS EXTERNOS Un dispositivo externo o periférico se conecta al computador a través de un enlace con un controlador de E/S. El enlace se utiliza para intercambiar datos e información sobre su control y su estado, entre el controlador de E/S y el dispositivo externo. Los periféricos se pueden clasificar en tres categorías: Adaptados al usuario: son apropiados para comunicar información al usuario. Adaptados a la máquina: permiten comunicarse con el sistema. De comunicación: están preparados para transmitir información a dispositivos remotos. La comunicación con el controlador de E/S se efectúa mediante señales de datos, de control y de estado del dispositivo. Los datos están constituidos por un conjunto de bits que se envían o se reciben desde el controlador. Las señales de control determinan la función que realiza el dispositivo, tales como: Enviar el dato al controlador de E/S (Leer). Aceptar el dato del controlador de E/S (Escribir). Realizar alguna función de control particular para ese dispositivo. Las señales de estado indican el estado en que se encuentra el dispositivo. La lógica de control asociada con el periférico gobierna su funcionamiento en respuesta a las órdenes enviadas por el controlador de E/S. CONTROLADOR DE E/S Es el módulo del computador responsable del control de uno o más dispositivos externos y del intercambio de datos entre dichos periféricos con la memoria principal o con los registros de la UCP. Debe poseer una interfaz interna al computador (para su conexión con la UCP y con la memoria principal) y una interfaz externa al computador (para su conexión con el dispositivo externo). Las principales funciones de un controlador de E/S pertenecen a una de las categorías siguientes: Control y temporización. Comunicación con la UCP. Comunicación con el dispositivo externo. Almacenamiento temporal de datos. Detección de errores. La función de E/S requiere un mecanismo de control y temporización que coordine el intercambio de información entre los recursos internos y los dispositivos externos. Requiere de una secuencia de pasos: La UCP pide al controlador de E/S que compruebe el estado del dispositivo al que está conectado. El controlador de E/S devuelve el estado del dispositivo. Si el dispositivo está operativo y preparado para transmitir, la UCP solicita la transferencia del dato mediante una orden al controlador de E/S. El controlador de E/S obtiene el dato del dispositivo externo. El dato se transfiere desde el controlador de E/S a la UCP. La comunicación con la UCP requiere: Decodificación de la orden: el controlador de E/S acepta órdenes de la UCP por el bus de control. Datos: el intercambio de datos entre la UCP y el controlador de E/S se realiza mediante el bus de datos. Información sobre el estado: a causa de la lentitud de los periféricos es importante conocer el estado del controlador de E/S. Reconocimiento de la dirección: cada palabra de memoria tiene asociada una dirección y el controlador de E/S reconoce una dirección única para cada uno de los periféricos que controla. El controlador de E/S contiene entre otros un registro de estado que se le suele llamar puerto. La UCP además de comunicarse con la unidad de E/S también debe hacerlo con la unidad de memoria. La forma de realizar esta comunicación es mediante buses que contienen líneas de dirección, de datos y de control. Hay tres maneras de utilizar el bus para interconectar la UCP con la memoria y con la unidad de E/S: Utilizar dos buses independientes, uno para la memoria y otro para el sistema de E/S. Utilizar un bus común para la memoria y el sistema de E/S, pero con líneas de control independientes para cada uno. Utilizar un único bus con líneas de control también comunes. E/S CONTROLADA POR PROGRAMA Los datos se intercambian entre la UCP y el controlador de E/S. La UCP ejecuta un programa que tiene el control directo de la operación de E/S e incluye la comprobación del estado del dispositivo, el envío de una orden de lectura o escritura y la transferencia del dato. Cuando la UCP emite una orden al controlador de E/S debe esperar hasta que finalice la operación de E/S. Si la UPC es más rápida que el controlador de E/S se malgasta el tiempo de la UCP. La UCP puede enviar al controlador cuatro tipo de órdenes: Ordenes de control: se utilizan para activar un periférico y decirle que hacer. Ordenes de comprobación: se utilizan para verificar diferentes condiciones de estado asociadas con un controlador de E/S y sus periféricos. Ordenes de lectura: originan que el controlador de E/S obtenga un dato del periférico y lo coloque en un registro interno. Ordenes de escritura: hacen que el controlador de E/S tome un dato del bus de datos y a continuación lo transmita al periférico. Después de efectuar la transferencia de un dato, el computador permanece en un bucle de espera hasta que el periférico está preparado para realizar la siguiente transferencia. El computador no realiza ningún trabajo útil mientras permanece en el bucle de espera. E/S POR INTERRUPCIONES La idea básica del mecanismo de E/S por interrupciones consiste en eliminar el bucle de espera. La UCP envía una orden de E/S al periférico y prosigue con la tarea que estaba ejecutando. Cuando el periférico está preparado para intercambiar información, fuerza una interrupción en la tarea que realiza la UCP para que atienda a la operación de E/S. El periférico advierte a la UCP que está preparado para la transmisión activando una línea especial del bus de control: la línea de petición de interrupción PI. La secuencia de pasos en el tratamiento de una petición de interrupción por parte de un único periférico es: 1. Activar el sistema de interrupciones en la UCP. 2. El periférico activa la línea de petición de interrupción (PI = 1). 3. La UCP suspende en ese momento la ejecución del programa en curso. 4. La UCP inhibe las interrupciones y comienza a ejecutar el programa del servicio de la interrupción. 5. Se informa al periférico de que se ha reconocido su petición mediante una línea de reconocimiento de petición (RI = 1) y desactiva la línea de petición (PI = 0). 6. Una vez finalizado el programa de servicio, se activa de nuevo el sistema de interrupciones. 7. La UCP continúa la ejecución del programa interrumpido donde lo dejó. A continuación, se presenta una clasificación que resume los diferentes tipos de interrupciones: Origen: Externa: las provoca un periférico. Interna: las provoca la UCP. Simuladas: son interrupciones software. No. de líneas de interrupción: 1 línea: sólo una línea de petición PI. Múltiples líneas: PI1, PI2, ..., PIn. Control de la UCP sobre la interrupción: Enmascarables: la UCP puede desactivarlas. No enmascarables: la UCP no puede desactivarlas. Identificación de la fuente de la interrupción: Múltiples líneas: PI1, PI2, ..., PIn. Encuesta: la interrupción se identifica por programa. Vectorizadas: la interrupción identifica un periférico. Gestión de la prioridad de la interrupción: Por software: un programa determina la prioridad. Por hardware: un circuito determina la prioridad. Niveles de interrupción: Nivel único: la interrupción no puede interrumpirse. Multinivel: anidamiento de interrupciones. ACCESO DIRECTO A MEMORIA (DMA) Tanto la E/S controlada por programa como la E/S por interrupciones, sufren de dos desventajas: La transferencia de datos está limitada por la velocidad con que la UCP puede comprobar y atender a un periférico. La UCP está obligada a gestionar la transferencia de E/S. Cuando se mueven grandes cantidades de datos, se necesita una técnica más eficaz: el acceso directo a memoria (DMA). El DMA necesita un módulo adicional conectado al bus del sistema: el controlador de DMA que es capaz de hacer las funciones asignadas a la UCP y asumir el control del sistema. Contiene un registro de datos, un registro de dirección y un registro contador de palabras. Cuando la UCP desea leer o escribir un bloque de datos emite una orden al controlador de DMA enviándole la siguiente información: Si la operación de E/S es de lectura o escritura. La dirección del periférico. La posición de comienzo en memoria donde hay que leer o escribir. El número de palabras que se tienen que leer o escribir. Existen diferentes formas de obtener el control del bus: Por ráfagas: cuando el DMA toma el control del bus no lo libera hasta haber transmitido el bloque de datos pedido. Por robos de ciclo: cuando el DMA toma el control del bus lo retiene durante un solo ciclo, transmite una palabra y libera el bus. DMA transparente: solamente se roban ciclos cuando la UCP no está utilizando el bus del sistema. Por demanda: el periférico es quien comienza la transferencia por DMA, pero devuelve el control a la UCP cuando no tiene más datos disponibles. Dato a dato: cada vez que el periférico solicita una transferencia por DMA, se envía un único dato y se devuelve el control a la UCP. PROCESADOR DE E/S (PE/S) El controlador de E/S se potencia para convertirse en un procesador con un conjunto de instrucciones especializadas en operaciones de E/S. La UCP dirige al procesador de E/S para que ejecute un programa de E/S que esté residente en memoria. El PE/S busca y ejecuta ese programa sin la intervención de la UCP y permite a ésta especificar una secuencia de actividades que sólo se interrumpe cuando se ha ejecutado la secuencia completa. Además tiene una memoria local y se puede considerar que es un computador, que consigue controlar un gran número de periféricos con una intervención mínima de la UCP. Existe dos tipos comunes de PE/S: Canal selector: controla múltiples dispositivos de alta velocidad. En cualquier instante de tiempo está dedicado a la transferencia de datos con uno sólo de estos dispositivos. Canal multiplexor: controla de forma simultánea operaciones de E/S con múltiples dispositivos. COMPONENTES Y PERIFÉRICOS BASICOS DEL COMPUTADOR Placa Base (Tarjeta Madre) Una primera distinción la tenemos en el formato de la placa, es decir, en sus propiedades físicas. Dicho parámetro está directamente relacionado con la caja, o sea, la carcasa del ordenador. Hay dos grandes estándares: ATX y Baby AT La segunda distinción la haremos por el zócalo de la CPU, así como los tipos de procesador que soporte y la cantidad de ellos. Tenemos el estándar Tipo 5 para Pentium, el tipo 7 para Pentium y MMX, el tipo 8 para Pentium Pro y el Slot 1(SEC) para Pentium II. Estos son los más conocidos. Caja Como ya se comenta en la sección de placas base, la principal distinción la tenemos en el formato de la placa a la que sustenta. Así tenemos que puede ser ATX ó Baby ATX. El siguiente factor serán las dimensiones de la misma. De menor a mayor las más normales son: Mini-torre, sobremesa, midi-torre ó semi-torre, y gran torre, así como modelos para algunos servidores que requieren el montaje en dispositivos tipo rack. Cuanto mayor sea el formato, mayor será el número de bahias para sustentar dispositivos tales como unidades de almacenamiento. Normalmente también será mayor la potencia de la fuente de alimentación. Las características de un modelo mini torre típicas son: soporte para hasta 7 ranuras de expansión. 2 unidades externas de 5 1/4, 2 también externas de 3 1/2 y 1 interna, fuente de alimentación de 200 w, pilotos de encendido, disco y turbo, pulsadores de reset y turbo. En los modelos más modernos, el pulsador y la luz de turbo se suelen sustituir por los de sleep. Los modelos MIDI suelen traer 1 bahías más para dispositivos externos de 5 1/4, así como una F.A. de 220 w. Procesadores En orden de aparición (Classic, MMX, Pro, PII, K5, K6, K6-2, 6x86, 6x86MX, MII, Winchip C6) Memoria Principal La primera distinción que debemos realizar es el formato físico, cuyo parámetro más importante es el número de contactos (ó pins). Hoy en día podemos encontrarlas de 30 contactos (8 bits) y que miden unos 9 cm., 72 (32 bits) y con una longitud de casi 11cm., y 168 (64 bits) y casi 13 cm. Las dos primeras reciben el nombre de SIMM y funcionan a 5V, y la última es conocida como DIMM y puede trabajar a 3,3V ó a 5V, dependiendo del tipo. La siguiente distinción por orden de importancia sería el tipo, en orden a su antigüedad, esta puede ser DRAM, Fast Page (o FPM), EDO ó SDRAM. Es importante consultar el manual de la placa base para saber que tipos soporta. El tipo SDRAM sólo se encuentra en formato DIMM, y es la que más dolores de cabeza nos puede causar, ya que puede ser Buffered o Unbuffered, y trabajar a 3,3 o a 5V. Además, no todas las placas base soportan todas estas combinaciones, algunas por ejemplo sólo soportan módulos de 3,3V. Afortunadamente, hay una muesca en estas memorias que impide conectar un módulo en un zócalo para el que no ha sido diseñado. Otra característica importante es la paridad, esta característica actualmente está en desuso, pero puede ser fuente de problemas, ya que algunas placas no soportan esta característica, mientras otras (pocas) sólo funcionan con ella. Saber si un módulo posee o no paridad es relativamente fácil, basta con contar el número de chips (circuitos integrados) que hay en el circuito impreso. Si es impar entonces es memoria con paridad. Por último nos queda comentar el tiempo de acceso, éste cuanto más pequeño sea, mejor. Si hablamos de módulos SIMM, dependiendo de su antigüedad, son normales tiempos de 80, 70 , 60 ó incluso 50 ns. En las memorias DIMM SDRAM, suelen ser habituales tiempos de alrededor de 10 ns. También es importante señalar la máxima frecuencia a la que pueden trabajar. En este aspecto se debe recordar que el único diseño capaz de trabajar a 100 Mhz es el tipo SDRAM. En cuanto a capacidades las más habituales son las de 256Kb, 1, 2, 4, 8, 16, 32, 64 y 128Mb., aunque no todas pueden estar soportadas por nuestra placa base, por ejemplo los módulos de 2 Mb no suelen ser habituales, y los de 256Kb y 1Mb sólo están en formato de 30 pins., y los módulos DIMM empiezan a partir de 16 Mb. También hay que entender que el bus de datos del procesador debe coincidir con el de la memoria, y en el caso de que no sea así, esta se organizará en bancos, habiendo de tener cada banco la cantidad necesaria de módulos hasta llegar al ancho buscado. Por tanto el ordenador sólo trabaja con bancos completos, y éstos sólo pueden componerse de módulos del mismo tipo y capacidad Tarjeta de Vídeo Hoy en día todas las tarjetas de vídeo son gráficas e incluyen aceleración por hardware, es decir, tienen "chips" especializados que se encargan de procesar la información recibida desde el bus e interpretarla para generar formas, efectos, texturas, que de otra forma no serían posibles o con peor calidad, o colapsarían al ordenador y a su bus. La primera distinción a efectuar es si la tarjeta soporta aceleración 2D, 3D o ambas. Las tarjetas con aceleración 3D también suelen tener soporte para 2D, pero algunas 3D sólo trabajan como complemento a las 2D, añadiéndoles dicho soporte. Es muy importante entender que las tarjetas aceleradoras 3D sólo sirven para juegos y para programas de diseño gráfico 3D que estén preparados para sacarles partido. Si habitualmente trabajamos con programas ofimáticos tipo "Office", no obtendremos ningún beneficio de estas nuevas tarjetas. Disqueteras y Zips Refiriéndonos exclusivamente al mundo del PC, en las unidades de disquete sólo han existido dos formatos físicos considerados como estándar, el de 5 1/4 y el de 3 1/2. En formato de 5 1/4, el IBM PC original sólo contaba con unidades de 160 Kb., esto era debido a que dichas unidades sólo aprovechaban una cara de los disquetes. Luego, con la incorporación del PC XT vinieron las unidades de doble cara con una capacidad de 360 Kb.(DD o doble densidad), y más tarde, con el AT, la unidad de alta densidad (HD) y 1,2 Mb. El formato de 3 1/2 IBM lo impuso en sus modelos PS/2. Para la gama 8086 las de 720 Kb. (DD o doble densidad) y para el resto las de 1,44 Mb. (HD o alta densidad) que son las que hoy todavía perduran. En este mismo formato, también surgió un nuevo modelo de 2,88 Mb. (EHD o Extra alta densidad), pero no consiguió cuajar. Disco Duro En el mundo del Pc hay dos grandes estándares, IDE y SCSI, aunque el primero está mucho más extendido que el segundo, la tecnología SCSI está presente en otras muchas plataformas, como los Mac , sistemas Unix, AS/400, etc... Los dos estándares han ido sufriendo a lo largo del tiempo distintas implementaciones para intentar seguir el ritmo marcado por otros componentes cada vez más rápidos, como los procesadores. Parámetros a tener en cuenta: Capacidad: Aconsejable que sea a partir de 2,1 Gbytes en adelante. Tiempo de acceso: Importante. Este parámetro nos indica la capacidad para acceder de manera aleatoria a cualquier sector del disco. Velocidad de Transferencia: Directamente relacionada con el interface. En un dispositivo Ultra-2 SCSI es de 80 MBytes/seg. mientras que en el Ultra DMA/33 (IDE) es de 33,3 Mbytes/seg. En el modo DMA-2. Esta velocidad es la máxima que admite el interface, y no quiere decir que el disco sea capaz de alcanzarla. Velocidad de Rotación: Tal vez el más importante. Suele oscilar entre las 4.500 y las 7.200 rpm (revoluciones por minuto). Caché de disco: La memoria caché implementada en el disco es importante, pero más que la cantidad es importante la manera en que ésta se organiza. Por ello este dato normalmente no nos da por si solo demasiadas pistas. Son normales valores entre 64 y 256 Kb. IDE: Cronológicamente, y empezando por el primero no encontramos con los primeros discos IDE con su limitación a 528 Mb. y pudiendo solo conectar hasta 2 de ellos. Después vinieron los discos EIDE (FastATA), desarrollados por la compañía Western Digital, compatibles con los primeros, pero con algunas mejoras, basadas en la especificación ATA-2, que ya soporta unidades de CD-ROM (ATAPI) y de cinta. Otra mejora importante es el soporte de 2 canales para conectar hasta 4 unidades. Además se definen varios modos de transferencia de datos, que llegan hasta los 16,6 Mb./seg. Como el PIO-4, o mejor aún el DMA-2, que soporta la misma tasa pero sin intervención de la CPU. La última especificación, desarrollada por Quantum es la Ultra DMA/33 (UltraATA), que permite transferencias DMA a 33 Mb./seg. SCSI: En el caso de los discos SCSI, tenemos el primero, llamado SCSI-1, con un ancho de bus de 8 bits, aunque ya en esta primera especificación se incluían características muy destacadas, como la posibilidad de conectar hasta 7 dispositivos de todo tipo, discos, cintas, escáners, CD-ROM, etc... Después viene el SCSI-2, que ya dispone de un ancho de bus de 16 bits. El siguiente paso es el Fast-SCSI, considerado el doble de rápido. Después viene el Wide SCSI, ya con un ancho de bus de hasta 32 bits, así como un mayor rendimiento. CD - ROM En primer lugar vamos a diferenciar entre lectores, grabadores y regrabadores. Diremos que los más flexibles son los últimos, ya que permiten trabajar en cualquiera de los tres modos, pero la velocidad de lectura, que es uno de los parámetros más importantes se resiente mucho, al igual que en los grabadores. Así tenemos que en unidades lectoras son habituales velocidades de alrededor de 34X (esto es 34 veces la velocidad de un lector CD de 150 Kps.), sin embargo en los demás la velocidad baja hasta los 6 ó 12X. Dado que las unidades lectoras son bastante económicas, suele ser habitual contar con una lectora, y una regrabadora, usando la segunda sólo para operaciones de grabación. Teclado El teclado es un componente al que se le da poca importancia, especialmente en los ordenadores clónicos. Sin embargo es un componente esencial, pues es el que permitirá que nuestra relación con el ordenador sea fluida y agradable, de hecho, junto con el ratón son los responsables de que podamos interactuar con nuestra máquina. Así, si habitualmente usamos el procesador de textos, hacemos programación, u alguna otra actividad en la que hagamos un uso intensivo de este componente, es importante escoger un modelo de calidad. En el caso de que seamos usuarios esporádicos de las teclas, porque nos dediquemos más a juegos o a programas gráficos, entonces cualquier modelo nos servirá, eso sí, que sea de tipo mecánico. Parámetros importantes a tener en cuenta son el tacto, no debe de ser gomoso, y el recorrido, no debe de ser muy corto. También es importante la ergonomía, es aconsejable que disponga de una amplia zona en la parte anterior, para poder descansar las muñecas. Y hablando de la ergonomía, este es uno de los parámetros que más destaca en un teclado, uno de los ya clásicos en este aspecto es el "Natural keyboard" de Microsoft. Características: Actualmente sólo quedan dos estándares en cuanto a la distribución de las teclas, el expandido, que IBM lo introdujo ya en sus modelos AT, y el de Windows95, que no es más que una adaptación del extendido, al que se le han añadido tres teclas de más, que habitualmente no se usan, y que sólo sirven para acortar la barra espaciadora hasta límites ridículos. En cuanto al conector, también son dos los estándares, el DIN, y el mini-DIN. El primero es el clásico de toda la vida, y aún es el habitual en equipos clónicos. El segundo, introducido por IBM en sus modelos PS/2, es usado por los fabricantes "de marca" desde hace tiempo, y es el habitual en las placas con formato ATX. De todas formas, no es un aspecto preocupante, pues hay convertidores de un tipo a otro. Nos dejamos otro tipo de conector cada vez más habitual, el USB, pero la verdad es que de momento apenas hay teclados que sigan este estándar Monitor El monitor es una parte del ordenador a la que muchas veces no le damos la importancia que se merece. Hay que tener en cuenta que junto con el teclado y el ratón son las partes que interactúan con nuestro cuerpo, y que si no le prestamos la atención debida, podremos llegar incluso a perjudicar nuestra salud. Evidentemente no en el caso de personas que hacen un uso esporádico, pero si en programadores impenitentes o navegadores incansables, que puedan pasarse muchas horas diarias al frente de la pantalla. Vamos a explicar los parámetros que influyen en la calidad de un monitor: Tamaño: El tamaño de los monitores se mide en pulgadas, al igual que los televisores. Hay que tener en cuenta que lo que se mide es la longitud de la diagonal, y que además estamos hablando de tamaño de tubo, ya que el tamaño aprovechable siempre es menor. Tubo: Otro aspecto importante es la marca del tubo y el tipo, así como otros detalles relacionados con él. Fabricantes de monitores hay muchos, pero de tubos son contados, con lo que si sabemos que modelo de tubo lleva nuestro monitor sabremos ya bastantes cosas importantes de él. Tamaño de punto: Esta es una de las características que depende del tubo, y define el tamaño que tendrá cada uno de los puntos que forman la imagen, por tanto cuanto más pequeño más preciso será. No hay que confundir el tamaño de punto con el "pixel". El pixel depende de la resolución de la pantalla, y puede variar, mientras que el punto es fijo, y depende exclusivamente del tubo. Frecuencia de refresco: Aquí si que podemos decir claramente que cuanto más mejor. La frecuencia de refresco está proporcionalmente ligada a la estabilidad de la imagen, y por tanto al descanso y confort de nuestra vista. Nunca deberíamos escoger valores por debajo de los 75 Mhz en modos de 1.024 x 768 puntos, aunque un valor óptimo sería de 90 Mhz., que sería el mínimo exigible en resoluciones menores. Resoluciones: Resolución de pantalla se denomina a la cantidad de pixeles que se pueden ubicar en un determinado modo de pantalla. Estos pixels están a su vez distribuidos entre el total de horizontales y el de verticales. Todos los monitores pueden trabajar con múltiples modos, pero dependiendo del tamaño del monitor, unos nos serán más útiles que otros: A nivel general se recomienda lo siguiente: Tamaño en pulgadas Resoluciones recomendables : 14 480 x 640 800 x 600 15 800 x 600 1.024 x 768 17 1.024 x 768 1.280 x 1.024 19 1.280 x 1.024 1.600 x 1.024 21 1.600 x 1200 1.280 x 1200 Cuando hablamos de resoluciones, hay que decir lo mismo que con las frecuencias de refresco, si nuestra tarjeta de vídeo no las soporta, no podremos usarlas. Hay que tener mucho cuidado de que estas resoluciones se obtengan de manera "no entrelazada", ya que sino, la calidad de la imagen se resiente de una forma inaceptable, reduciendo la frecuencia de refresco REAL a la mitad. Mouse (Ratón) Este dispositivo es uno de los más importantes para la interacción con el computador. En un inicio se incluyo en algunos sistemas de computadora de la empresa Apple en aplicaciones específicas, muy pronto tomaría fuerza y se colocaría como uno de los principales periféricos para dar ordenes al computador. En la actualidad se pueden encontrar de diversos estilos, de 2 y tres botones, con rueda deslizante. 1.2.5. FUNCION DE UN COMPUTADOR La función básica que realiza un computador es la ejecución de un programa. La secuencia de operaciones realizadas en la ejecución de una instrucción constituye lo que se denomina ciclo de instrucción, que consta de dos pasos: Fase o ciclo de búsqueda. Fase o ciclo de ejecución. En el comienzo de cada ciclo de instrucción la UCP 1 busca en la memoria una instrucción. En una UCP tipo von Neumann para realizar esta tarea se dispone de un registro especial llamado contador de programa (CP). La instrucción leída se almacena en un registro de la UCP conocido como registro de instrucción (RI). La instrucción especifica el tipo de acción que pertenece a una de las cuatro categorías siguientes: UCP - Memoria. UCP-E/S. Procesamiento de los datos. Control. Cualquier ciclo de instrucción puede estar formado puede estar formado por uno o varios estados: Cálculo de la dirección de la instrucción (CDI): determina la dirección de la próxima instrucción que se tiene que ejecutar. Búsqueda de la instrucción (BI): leer la instrucción de su posición de memoria en la UCP. Decodificación de la instrucción (DI): analizar la instrucción para determinar el tipo de operación que se va a efectuar y los operandos que se utilizan. Cálculo de la dirección del operando (CDO): si la operación realiza una referencia a un operando almacenado en la memoria o que está disponible a través de una operación de E/S. Búsqueda del operando (BO): leer el operando de la memoria o de un dispositivo de E/S. Operación sobre los datos (OD): realizar la operación indicada en la instrucción. Almacenar el operando (AO): escribir el resultado en memoria o en un dispositivo de E/S. 1.2.6. ESTRUCTURAS DE INTERCONEXION Un computador consiste en un conjunto de componentes o módulos de tipos básicos que se comunican entre sí mediante unos caminos, que constituye la estructura de interconexión. Los tipos de intercambios que se necesitan son: 1 Memoria: un módulo de memoria consta de N palabras de dirección desde 0 hasta N-1, y con dos operaciones que son leer y escribir. E/S: un módulo de E/S consta de M puertos de dirección desde 0 hasta M-1, y con dos operaciones que Unidad de Control de Proceso UCP son leer y escribir. UCP: la UCP lee instrucciones y datos, escribe datos después de procesarlos, utiliza señales de control para dirigir la operación global del sistema y recibe señales de interrupción. La estructura de interconexión debe soportar los siguientes tipos de transferencias: Memoria a UCP. UCP a Memoria. E/S a UCP. UCP a E/S. E/S a o desde Memoria. La mayoría de las estructuras de interconexión propuestas a lo largo de los años pertenece a uno de los cuatro tipos siguientes: Arquitectura de E/S a través de la UCP: la UCP y los módulos de E/S comparten la misma vía de acceso a memoria, lo que obliga a la UCP a parar momentáneamente sus cálculos cuando se están produciendo transferencias de datos. Arquitectura de E/S a través de la Memoria: es posible el acceso directo a la memoria principal de dos o más componentes de forma independiente. Arquitectura de E/S mediante un conmutador central: existe un mecanismo de distribución centralizado al cual se unen todos los componentes. Arquitectura con bus de E/S: hay un conjunto de líneas que se comparten por todos los módulos. Esta arquitectura se ha convertido en el estándar de interconexión. INTERCONEXION MEDIANTE BUS La característica clave de un bus es que se trata de un medio de transmisión compartido. Al bus se conectan múltiples dispositivos, y una señal transmitida por cualquiera de ellos puede ser recibida por todas las otras unidades conectadas. En un determinado instante de tiempo, solamente es posible la transmisión por parte de un único dispositivo. Un bus del sistema consta de una serie de líneas que se pueden clasificar en tres grupos funcionales: Líneas de datos: establecen un camino para transferir datos desde los módulos del sistema. Su anchura depende de la longitud de una instrucción. Líneas de dirección: se utilizan para seleccionar la fuente o el destino de la información que hay sobre el bus de datos. Su anchura depende de la capacidad de la unidad de memoria. Líneas de control: gobiernan el acceso y el uso de las líneas de datos y dirección. Las más típicas son: escritura en memoria, lectura de memoria, escritura a E/S, lectura de E/S, reconocimiento de transferencia, petición del bus, autorización del bus, petición de interrupción, reconocimiento de interrupción, reloj y reset. 1.3. CONCEPTOS BASICOS DE SISTEMAS OPERATIVOS 1.3.1. INTRODUCCIÓN En el más estricto sentido de la expresión el sistema operativo es un programa que inicia su ejecución al encender el computador, establece un estado inicial de los componentes de dicho computador y tiene como función primaria el permitir que otros programas se ejecuten y tengan un acceso ordenado a los recursos que ofrece el equipo. Es lo que se conoce como el Kernel. Esto lo hace suministrando procesos que controlan a los dispositivos periféricos, administrando recursos compartidos por varias tareas como la memoria y equipos periféricos y estableciendo las prioridades de las tareas que ejecuta el computador. También debe mantener la integridad del proceso recuperando el control cuando algún programa falla. En un sentido más extenso el sistema operativo contiene otros elementos que amplían su funcionalidad. Incluimos aquí programas que se pueden ejecutar ocasionalmente que se les reconoce como rutinas de utilidad. Otro grupo de programas, en particular cuando se trata de sistemas de multitareas y multiusuarios, que podemos incluir son servicios adicionales que puede brindar el sistema operativo. Aquí incluimos el correo electrónico, web, bases de datos y otros elementos de conectividad. Las oportunidades de trabajo en computación nos pueden llevar a trabajar en aspectos muy diversos pero sea que trabajemos de cerca al computador atendiendo al funcionamiento de los servicios del sistema operativo o estemos instalando sistemas o desarrollando aplicaciones, el conocer el funcionamiento de los sistemas operativos es de suma importancia. Hoy por hoy es común que tengamos un PC en casa que puede estar ejecutando un sistema operativo como Windows 95/98. Para la inmensa mayoría de usuarios de PCs el sistema operativo es un elemento oscuro. En más de una ocasión confunden el programa de procesamiento de palabras o cualquiera que sea el programa que principalmente usan, con Windows. Y en cierta forma, esa es la idea. Que haya una integración tan homogénea que el usuario común no pueda distinguir a un programa del otro. Para el computista la historia es diferente. Es importante saber exactamente que ofrece el sistema operativo. Es importante saber los mecanismos de seguridad, de conectividad, de multitarea, de acceso y seguridad en el manejo de archivos y otra variedad de posibilidades. Es importante saber que posibilidades brinda de manejar los equipos periféricos que se conecten al procesador, la capacidad para detectar problemas con estos equipos y la posibilidad de sustitución de los equipos periféricos por otros más eficientes o de más capacidad. Para el computista Windows 95/98 es tan sólo uno de los varios componentes que permiten integrar las capacidades de varios equipos. La computación del siglo 21 se mueve en dos direcciones. La conectividad de los equipos con la tecnología Internet a la cabeza y la computarización de todos los dispositivos de uso diario. Esto va desde el teléfono a la tostadora de pan. En materia de equipos servidores los sistemas operativos por excelencia son UNIX y NT. Va a ser más frecuente que si estamos familiarizados con uno de estos sistemas nos tropecemos con el otro y debamos interconectar ambos sistemas operativos. Por algún tiempo más Windows 95/98 continuará siendo parte del panorama mientras este sistema operativo sea una alternativa más económica que NT Workstation. Dependiendo del giro que tomen compañías como Sun e IBM habrá que tomar en cuenta en un futuro al sistema operativo JAVA/OS. Igualmente hay que considerar que rumbo va a tomar Novell de la que especula puede moverse en igual dirección que Sun e IBM. Linux, que hasta ahora ha sido la adoración del computista rebelde comienza a penetrar los mercados conservadores como una alternativa tipo UNIX pero más económica. Lo que es cierto es que a diferencia de años atrás cuando los fabricantes de hardware amarraban a los clientes a sus sistemas operativos hoy en día los equipos deben correr los sistemas operativos preferidos de los clientes o no sobreviven en el mercado. 1.3.2. ¿QUÉ ES UN SISTEMA OPERATIVO? Un sistema operativo es un grupo de pequeños programas desarrollados para simplificar la labor del programador cuando este necesita hacer uso de ciertos recursos que ofrece el computador. Estos pequeños programas se les llama servicios porque eso es lo que son. Servicios que el computador presta al programa que se ejecuta en ese computador. Estos servicios pueden abarcar el manejo de unidades de discos, el teclado, la pantalla, la impresora, el módem, la conexión a la red y otros periféricos. También pueden ser servicios de manejo de la memoria, las prioridades en las interrupciones que hagan los periféricos cuando necesitan ser atendidos. Otro servicio muy útil es el permitir ejecutar varios programas simultáneamente. Este servicio es particularmente valioso y para muchas personas si un sistema operativo no ofrece este servicio no se le puede llamar sistema operativo. Esta es la mayor crítica que se le hace al MS-DOS. Lo importante de estos servicios es la integración entre ellos. No se trata de simples rutinas utilitarias que se pueden ejecutar sin importar cual otra se esté utilizando o esté presente. El desarrollo de un sistema operativo debe asegurar que estas varias piezas se comuniquen entre si para asegurar la integridad de la operación total. Es por eso que es común que el sistema operativo ofrezca algún sistema de mensajes entre los varios componentes. Estos mensajes llevan información de una tarea a la otra y/o instrucciones de qué hacer a continuación. Inicialmente, cuando los equipos no eran muy poderosos, una instrucción se ejecutaba después de otra en forma predecible. La lentitud de los periféricos en relación a la velocidad del procesador hizo que se implementara el mecanismo de interrupción por parte de los periféricos, permitiendo al procesador atender a otros servicios mientras el componente periférico realiza su tarea. Al concluir lo que está haciendo, sea imprimir una línea o traspasar a memoria un bloque de información, el periférico da un alerta al procesador para que interrumpa lo que está haciendo y le atienda. Esto hace que los procesos de un programa puedan ser ejecutados en lo que parece una forma desordenada. Igual ocurre con los componentes del sistema operativo. A pesar de ese aparente desorden todo debe marchar con un cierto orden. Existen varias formas de mantener la sincronización. Una de esas formas es hacer que los módulos o partes de un programa o el sistema operativo envíe mensajes a los módulos dependientes de los resultados producidos. Si existe un mecanismo estándar, como ocurre con Windows, una parte del sistema operativo puede analizar estos mensajes y "despertar" al programa que está esperando el mensaje para que se ponga a trabajar. Si este estándar no existe, lo que resta es al sistema operativo es ir despertando a los programas para que revisen su lista de mensajes para ver si les llegó lo que esperaban y si no volver a "dormir" indicando tal cosa al sistema operativo para que permita a otro programa revisar su lista. Esto es una forma cruda y simple de explicar la cronología de ejecución de programas dentro de un computador. El sistema operativo, con el objetivo de hacer uso eficiente del potencial del procesador, interrumpe al programa que el procesador está ejecutando para atender a algún periférico que haya concluido lo que estaba haciendo. Esta terminación puede ser exitosa o no. Lo importante es que los periféricos son relativamente tan lentos que hay que atenderlos rápido para ponerlos a trabajar lo más rápido posible para que no atrasen al trabajo que se quiere hacer con el computador. Existen muchos tipos de sistemas operativos. Como hemos dicho, los hay para controlar el uso de equipos que centralizan información, como los que nos dan el servicio de Internet, y los hay para equipos que realizan tareas muy definidas como puede ser un reloj de control de entradas y salidas de empleados. En el caso de un dispositivo el sistema operativo puede colocarse en ROM porque es simple y necesita estar en memoria al momento de encender el dispositivo. En el caso de un sistema de un servidor, el sólo proceso de arranque para llevar al sistema a un estado inicial predecible puede requerir de un número amplio de programas que no se justifica que estén todo el tiempo en memoria. Además pueden existir servicios que se usan ocasionalmente que igualmente no justifican el estar permanentemente en memoria y que se traen desde un almacenamiento secundario, usualmente, un disco magnético. Un sistema operativo ofrece, por lo general, un mecanismo de comunicación con un operario. En el caso de una central telefónica el mecanismo puede ser el auricular por el que envía mensajes que le indican al operario si puede marcar el número, si hay conexión o el otro teléfono está ocupado. En los casos que más nos atañen estamos hablando de un terminal con pantalla y teclado. El servicio de comunicación o interface puede ser de una línea a la vez, como MS-DOS y UNIX, o puede ser gráfico con la adición de un apuntador como es un mouse, en el caso de Windows 3/95/98/NT o X-Window (UNIX). 1.3.3. COMPONENTES DE UN SISTEMA OPERATIVO Un sistema operativo es, por lo general, un programa complejo. Dependiendo del equipo en el que se ejecuta este puede estar compuesto de unos cientos de instrucciones a millones de instrucciones. En el desarrollo de sistemas operativos grandes como UNIX y NT es razonable dividirlo en módulos. Estos pueden ser programados y probados por separado. A continuación algunos términos que son relevantes para entender el funcionamiento de un sistema operativo. Kernel El Kernel o Ejecutivo es el núcleo del sistema operativo. Este está permanente en memoria una vez que el equipo inicia sus funciones normales. Es responsable por: Traslado del control de un programa a otro. control y programación de dispositivos periféricos. Manejo de interrupciones y condiciones de error. Comunicación entre procesos. Cronogramación de tareas. Manejo de la memoria. Programas, Procesos e instancias Es importante establecer la diferencia entre un programa, un proceso y una instancia. Un programa es el conjunto de instrucciones que escribe el programador. Estas, una vez que están en lenguaje de máquina, residen en un medio magnético o pueden fijarse en un ROM. Un proceso, o tarea, es la ejecución de este programa o una parte de él. A su vez, un proceso puede estar en ejecución simultánea en varias etapas. A esto se les llama instancias de un proceso. Cada una de estas ejecuciones es más o menos independiente de la otra. Para saber los detalles de una instancia debemos examinar el grupo de datos que la define. Este grupo de datos son el estado en que esta la instancia y la cola de mensajes a procesar. El estado puede contener la instrucción por la que va la ejecución en ese momento y/o valores asignados a variables antes de comenzar la ejecución o durante la misma. El programador decide cuando escribe el programa si lo hace monolítico, lo divide en tareas y si las tareas pueden tener varias instancias de ejecución. Para esto último, se debe preparar las tareas para que sean reentrantes. Una tarea es re-entrante cuando en cada instancia de ejecución el sistema operativo se asigna un bloque de memoria separado para el almacenamiento de sus datos. Si alguna parte del proceso no es reentrante entonces una parte de memoria compartida entre las varias instancias sirve de control para determinar cuando las otras instancias deben detener la ejecución hasta que la instancia controladora salga de la porción del programa que no es re-entrante. Esta memoria compartida recibe el nombre de semáforo. Multiprocesamiento La mayoría de los PCs instalados contiene un solo CPU (Central Processing Unit) para procesar las tareas. Es posible tener varios CPUs en el motherboard con lo que es posible tener varios procesos corriendo simultáneamente. Cuando no se tienen varios CPUs se puede crear la ilusión de multiprocesamiento por medio de mecanismos de interrupción de las tareas y mudando de una tarea a otra cada cierto tiempo. Esta mudanza o switching es una de las tareas del ejecutivo. Aún con varios CPUs se puede hacer switching de tareas asignadas a cada CPU. Windows NT puede atender a varios CPUs. Existen dos formas básicas de proceder a la mudanza entre tareas. Las tareas pueden cooperar suspendiéndose voluntariamente cada cierto tiempo o en puntos determinados en su ejecución o el sistema operativo con ayuda de circuitos en el hardware interrumpe la tarea que se esté ejecutando. Estos dos mecanismos se les conoce en inglés como cooperative switching y pre-emptive switching. Windows 3.1x es un ejemplo de una mudanza cooperativa. UNIX y NT son ejemplos de pre-emptive switching. Cuando el procesador muda de una tarea a la otra lo que hace es guardar el estado en que está la tarea a suspenderse guardando el contenido de registros o memorias del procesador y reemplazándolos con valores de la próxima tarea a ejecutar. Este cambio de contenido de registros se le denomina cambio de contexto. Este cambio toma un tiempo pero es muy poco en comparación al tiempo que se les da a las tareas para su ejecución. Carga del Sistema Operativo El sistema operativo del un computador es cargado a memoria de una de dos maneras. Se le carga en ROM de modo permanente o se ubica en un almacenamiento externo, generalmente un disco magnético, y se carga al encender el computador. En el primer caso el sistema operativo toma control del equipo al momento de arrancar y es muy poco el mantenimiento que tiene que hacer. En el segundo caso, una parte muy pequeña del sistema operativo está presente en ROM para iniciar la carga del sistema operativo desde una unidad externa de almacenamiento. Esta unidad externa es por lo general un disco magnético pero puede ser un CD o un cartucho de cinta magnética. Generalmente esta carga se hace en varias etapas. El programa en ROM revisa el estado de la memoria RAM y procede a cargar un programa cargador más avanzado que puede realizar otras revisiones y establecer un estado inicial adecuado al sistema operativo. Como etapa final de la carga del sistema operativo se inicia el interface con el operador. Este interface puede ser de línea o gráfico. 1.3.4. ORIENTACIÓN DEL SISTEMA OPERATIVO En los inicios de la computación el costo de los equipos centrales era tal alto que no se consideraba económico permitir la alteración de los datos mientras el computador ejecutaba sus tareas. Los datos se preparaban en un sistema externo, fuesen tarjetas o cintas perforadas y luego estos medios se alimentaban al equipo central a la mayor velocidad que los equipos permitiesen. A esto se le llamó Procesamiento en Tandas o Batch Processing. UNIX en una gran medida echó por tierra ese concepto al demostrar que era posible atender la entrada de datos y su modificación en lo que se llama modo interactivo. El modo de ver la computación fue cambiando dándole más énfasis a la posibilidad de conectar terminales que a la posibilidad de crear lectores más rápidos de tarjetas y cintas perforadas. La ingeniería de materiales tuvo mucho que ver en el abaratamiento de los circuitos electrónicos. Hoy en día los equipos son un costo muy reducido del costo total del procesamiento de los datos. Nadie piensa en crear sistemas operativos para procesamiento en tandas. Todo sistema operativo debe permitir la entrada de datos en cualquier momento. Esto implica que el sistema operativo debe poder realizar más de una tarea a la vez. Los sistemas operativos de hoy en día, sean para computadores o sean para dispositivos, ofrecen esta interacción.