COMPUTACION 1 ORGANIZACIÓN Y ARQUITECTURA INTERNA DE LA CPU Diagrama de bloques Los bloques funcionales básicos son: la unidad de procesamiento central (CPU), la memoria principal, y el procesador de Entrada − Salida. Unidad de proceso central: esta es la responsable de la interpretación y ejecución de instrucciones contenidas en la memoria principal, las comunicaciones entre la CPU y la memoria principal se realizan a través de 2 canales funcionalmente distintos: el de direcciones y el de datos. Para introducir en la memoria, una instrucción especifica, la CPU envía a dicha memoria la dirección de la instrucción por el canal de direcciones y recibe por el mismo medio la instrucción que está en esa dirección. Parte de la instrucción es utilizada por la CPU para identificar la operación. Esta parte se llama código de operación de la instrucción. La información restante se utiliza para determinar la o las localidades de los datos con los cuales se va a efectuar la operación. La acción de leer una instrucción en la CPU y prepararla para su ejecución se denomina ciclo de búsqueda. Para completar una instrucción la CPU decodifica el código de operación, genera las señales de control que se necesitan para introducir los operandos requeridos y controla la ejecución de la instrucción. Por ejemplo, suponiendo que la operación especificada consiste en sumar 2 números requeridos en 2 registros de la CPU y almacenar el resultado en un tercer registro de la CPU. Para efectuar esta instrucción, la CPU identificará los 2 registros y generará las señales de control adecuados para conectar los registros a la unidad de Aritmética y Lógica (ULA). La CPU también haría que la ULA funcione como sumadora y dirija la salida hacia el tercer registro. El proceso de realización que especifica una función se denomina ciclo de ejecución. Los nombres ciclos de búsqueda y ciclos de ejecución derivan de la naturaleza cíclica de la operación de la computadora una vez que esta empieza a funcionar repite los ciclos de búsqueda y ejecución de manera continua. Para hacer referencia a cada ciclo suele utilizar el termino ciclo de maquina. La CPU puede dividirse funcionalmente en 3 subunidades, la unidad de control, dedicada a los ciclos de búsqueda y ejecución, la ULA que desempeña funciones aritméticas como por ejemplo, suma y resta, de lógica por ejemplo AND, OR y un conjunto de registros dedicados al almacenamiento de datos en la CPU y a ciertas funciones de control. Registro e instrucciones de la CPU Registros Instrucciones Aritmética y Lógica 1 Movimientos de datos Operaciones de datos en bloque Instrucciones de control de programa Instrucciones Instrucciones de Entrada−Salida La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta velocidad llamada registro. Algunos de los registros están dedicados al control, y solo la unidad de control tiene acceso a ellos. Los registros restantes son los registros de uso general y el programador es el usuario que tiene acceso a ellos. Dentro del conjunto básico de registros de control se deben incluir a los siguientes: • Contador de programa (PC). • Registro de direcciones de la memoria (MAR). • Registro de datos (RD). • Registro de instrucciones (ER). • Palabra de estado de programa (PSW). • (PC): La función del PC consiste en seguir la pista de la instrucción por buscar (capturar) en el siguiente ciclo de maquina, por lo tanto contiene la dirección de la siguiente instrucción por ejecutar. El PC es modificado dentro del ciclo de búsqueda de la instrucción actual mediante la suma de una constante. El numero que se agrega al PC es la longitud de una instrucción en palabras. Por lo tanto, si una instrucción tiene una palabra de longitud se agrega 1 al PC, si una instrucción tiene dos palabras de largo se agrega 2, y así sucesivamente. • Registro de direcciones de la memoria (MAR): funciona como registro de enlace entre la CPU y el canal de direcciones. Cuando se logra el acceso a la memoria la dirección es colocada en el MAR por la unidad de control y ahí permanece hasta que se completa la transacción. El numero de bit que hay en el MAR es igual al del canal de direcciones. La diferencia que existe entre el PC y el MAR es que durante el ciclo de ejecución de una instrucción, el PC y el MAR sirven al mismo fin. Sin embargo, muchas de las instrucciones de la maquina hacen referencia a la memoria y operan con los datos que están en ella. Como la dirección de los datos suele ser diferente de la instrucción siguiente se necesita el MAR. • Registro de datos: la función del RD consiste en proporcionar un área de almacenamiento temporal (memoria intermedia, acumulada o buffer) de datos que se intercambian entre la PCU y la memoria. Los datos pueden ser instrucciones (obtenidos en el ciclo de ejecución) o datos del operando (obtenidos en el ciclo de ejecución). Debido a su conexión directa con el canal de datos el RD contiene el mismo numero de bit que dicho canal. • Registro de instrucciones (ER): es un registro que conserva el código de operación de la instrucción en todo el ciclo de la maquina. El código es empleado por la unidad de control de la CPU para generar las señales apropiadas que controla le ejecución de la instrucción. La longitud del ER es la longitud en bit del código de operación. • Palabra de estado de programa (PSW): la palabra de estado o condición de programa almacena información pertinente sobre el programa que este ejecutándose. Por ejemplo al completarse una función de la unidad aritmética lógica se modifica un conjunto de bit llamados códigos (o señales de condición). Estos bit especifican si el resultado de una operación aritmética fue 0 o negativo o si el resultado se desbordó. 2 El programa puede verificar estos bit en las instrucciones siguientes cambiar en forma condicional su flujo de control según su valor. Además el PSW contiene bit que hacen posible que la computadora responda a solicitudes de servicio asincrónicas generadas por dispositivos de Entrada−Salida, o condiciones de error interno. Estas señales se denominan interrupciones. Los registros restantes que se pueden encontrar en un microprocesador son de uso general. Estos se utilizan para almacenar información en forma temporal. También retienen operandos que participan en operaciones de la ULA. Algunas veces el conjunto de instrucciones de la computadora y el esquema de direccionamiento de la arquitectura restringe el uso de alguno de estos registros. Si bien en todas las maquinas la información contenida en el registro puede manipularse como datos ordinarios durante la ejecución de algunas instrucciones los datos se utilizan en forma explícita para decidir una dirección de la memoria. La ventaja de usar registros para retener datos de operaciones es la velocidad. Tipo de instrucciones Las instrucciones pueden clasificarse en 5 categorías: • Instrucciones de aritmética y lógica. • Instrucciones de movimientos de datos. • Operaciones de datos en bloques. • Instrucciones de control del programa. • Instrucciones de Entrada − Salida. • Instrucciones de Aritmética y Lógica: Entre ellas se encuentran operaciones binarias, las cuales requieren dos operandos y producen un resultado único. La suma, la resta, la multiplicación y división, son operaciones standard en la mayor parte de las maquinas con excepción de algunas mini−computadoras y microprocesadores. Las operaciones de lógica incluida en el conjunto de instrucciones son las operaciones AND, NAND, NOR, XAND, XOR. También dentro de las instrucciones de aritmética y lógica se encuentran las operaciones de desplazamiento y las de rotación. • Instrucciones de movimientos de datos: Esta instrucción da por resultados la copia de datos desde una localidad de operando a otra; además del código de operación, estas instrucciones requieren información que identifique los operandos fuentes y destinos. En una computadora de uso general, los datos se pueden mover de: • Registro a registro. • Registro a memoria. • Memoria a registro. • Memoria a memoria. • Operaciones de datos en bloques: Son aquellas que se efectúan con un conjunto de operandos y no con un solo operando. También dentro de esta instrucción se encuentra la de control del programa. Esto hace posible que un programa se adapte a la secuencia inherente al ciclo de maquina de la computadora. En otras palabras, se pueden pasar por alto 3 secciones de instrucciones como resultado de la activación de un código de condiciones o como resultado directo del diseño del programa. • Instrucciones de control del programa • Instrucciones de Entrada − salida: Desde el punto de vista de la programación para el acceso a la memoria o a un periférico simplemente se requiere el mismo conjunto de instrucciones. Estos sistemas se denominan sistemas de Entrada − Salida mapeados por memoria. La programación de un dispositivo en estos sistemas requiere el conocimiento de este dispositivo y sus características, aunque no se necesitan instrucciones especiales. El dispositivo se caracteriza como un conjunto de localidades de la memoria que se dividen en dos subcategorias: un conjunto de registro de estado de control y un registro de información. Registro de estado y control. Estos suelen contener información acerca del estado inactivo, ocupado, etc. En estos registros también se almacena información de control, como por ejemplo el tipo de paridad y la velocidad de transmisión de los datos. La información contenida en los registros de estado y control se utiliza principalmente para proporcionar una imagen global del hardware cuando este en el programa Registro de información: estos constituyen una memoria intermedia para la información que se transfiere entre la CPU y el periférico. En el caso de un dispositivo se transfieren datos sobre la base de carácter por carácter y suele haber solo dos registros. Uno que retiene datos de la CPU al dispositivo y otro que utilice datos del dispositivo a la CPU. Si la Entrada − Salida programada se realiza en un dispositivo unidireccional (solo transmite o solo recibe) entonces únicamente se necesitara un registro. Memoria Los grandes sistemas de computación suelen dar servicio a grandes cantidades de usuarios. Desde el punto de vista operativo la memoria es una de los principales elementos que componen nuestros sistemas. Un sistema operativo es un conjunto de programas que hace posible que el usuario de un sistema de computación tenga acceso controlado a sus recursos, entre esos recursos se encuentran, la CPU, la memoria y los dispositivos de Entrada − Salida. El sistema operativo asigna tiempo a la CPU, distribuye el espacio disponible en la memoria, asigna y controla dispositivos de Entrada − Salida, para cada usuario. Estas funciones se realizan en forma transparente, es decir que el programador escribe el programa como si todo el sistema de la computadora estuviere dedicado a ese programa. Para ofrecer algunas características del sistema operativo la arquitectura de la maquina debe poseer ciertas propiedades. Para comenzar la maquina debe tener por lo menos 2 modos de operación diferentes. Una forma, se denomina modo de supervisión y el otro modo del usuario. Cuando la maquina esta en modo del supervisor, la CPU puede ejecutar todas las instrucciones de la maquina. Este es el modo de operación en el cual corren los programas de los distintos sistemas operativos lo que le da un control del sistema. Todas las peticiones de servicio de los dispositivos periféricos pasan por el sistema operativo ya que las instrucciones de Entrada − Salida, solamente pueden emitirse cuando la maquina se encuentra en modo supervisor. En el modo usuario, la CPU no puede ejecutar todo el conjunto de instrucciones (en particular no se permite la ejecución de las instrucciones de control de la maquina y de Entrada − Salida. 4 Organización de la memoria La memoria es un condensador que si retiene corriente es 1 y si no es 0, se necesita un condensador por bit. Por ejemplo 32 Mb es igual a 32000000 bytes o sea 32000000 * 8 condensadores. +− Existen dos tipos de memoria: las memorias dinámicas y las memorias estáticas. Las memorias que se suelen usar en los sistemas informáticos (RAM) son dinámicas, quedando relegadas las estáticas a aplicaciones un tanto especiales como puede ser mantener datos en ellas después de haber desconectado el equipo y alimentando a estas a través de baterías. Las memorias estáticas presentan una serie de inconvenientes con respecto a las dinámicas; por ejemplo tienen una respuesta mas lenta que las dinámicas y es mas difícil su integración al necesitar mas electrónica para realizar la célula biestable que es encarga de generar el 0 o el 1 lógico correspondiente al bit. Otro problema lo constituye su mayor consumo, ya que su constitución interna es mas complicada que la de una memoria dinámica. Las memorias dinámicas son las mas generalizadas y constituyen el grueso de la RAM del ordenador. Poseen respecto a la mayoría de las memorias la ventaja de contar con una mayor velocidad, mayor capacidad de almacenamiento y un menor consumo. En contra partida, presentan el inconveniente de que precisan una electrónica especial para su utilización, la función de esta electrónica es generar el refresco de la memoria. La necesidad de los refrescos de las memorias dinámicas se debe al funcionamiento de las mismas, ya que este se basa en generar durante un tiempo la información que contiene. Transcurrido este lapso la señal que contenía la célula biestable se va perdiendo. Para que no ocurra esta perdida, es necesario que antes que transcurra el tiempo máximo que la memoria puede mantener la señal se realice una lectura del valor que tiene y se recargue la misma. Es preciso considerar que a cada bit de la memoria le corresponde un pequeño condensador al que le aplicamos una pequeña carga eléctrica y que mantienen durante un tiempo en función de la constante de descarga. Generalmente el refresco de memoria se realiza cíclicamente y cuando esta trabajando el DMA. El refresco de la memoria en modo normal esta a cargo del controlador del canal que también cumple la función de optimizar el tiempo requerido para la operación del refresco. Posiblemente, en mas de una ocasión en la computadora aparecen errores de paridad en la memoria debido a que las memorias que se están utilizando son de una velocidad inadecuada ya que las mismas se descargan antes de poder ser refrescadas. Distribución de la memoria La distribución de la memoria dentro de la computadora se suele denominar mapa de memoria y en el es posible observar en que zona se encuentran ubicados los registros y programas del sistema operativo. De acuerdo a la cantidad de bit que maneja el microprocesador es la capacidad máxima permitida que se puede direccionar en la maquina. Independientemente de esta disponibilidad de memoria el limite real de direccionamiento va a estar dado por el sistema operativo que se esta usando, por ejemplo el sistema operativo D.O.S. independientemente de la memoria instalada puede direccionar como área de trabajo 640 Kb. Dispositivos de Entrada − Salida 5 Desde el punto de vista de un sistema de computación los dispositivos de Entrada−Salida solo comprenden uno de los cuatro componentes principales de una computadora, sin embargo las ramificaciones de Entrada−Salida extienden esta simple representación y pueden tratarse en varios niveles diferentes. Las propiedades físicas y eléctricas de los dispositivos, la interfaz o controlador con que interactúa el procesador central y el apoyo de software del sistema operativo en uso. La unidad de Entrada−Salida puede contar en realidad de muchas interfaces o controladores, incluir un procesador de Entrada − Salida de uso especial pero manejado por la CPU o ambas cosas. El problema de Entrada−Salida puede restringirse en general de las otras consideraciones lógicas y eléctricas en un sistema de computación porque requiere una reconversión en una o varias de las siguientes áreas: Velocidad: velocidad de transferencia de datos Lógica: formato de los datos, codificación. Eléctrica: niveles de señales, modalidad analogica−digital y digital−analogica. Física: funciones electromecánicas, ópticas, de audio, etc. Las operaciones de Entrada−Salida casi siempre requieren un cambio de velocidad para sincronizar la CPU con el dispositivo de Entrada−Salida. Esto impone restricciones tanto al hardware como al software. Por ejemplo el periférico mas conocido, la terminal de vídeo, típicamente puede actualizarse por medio de una línea de comunicaciones en serie, a una velocidad no mayor de 960 caracteres por segundo, una impresora matricial en la que intervienen componentes electromecánicos a 2000 caracteres por segundo. Sin embargo una CPU puede procesar instrucciones cientos o miles de veces mas rápido que esto. Además debe manejar múltiples dispositivos de Entrada−Salida en forma simultanea y realizar otras funciones de calculo en lugar a esperar a que se complete cada operación de Entrada−salida. En las transacciones de Entrada−salida siempre existen operaciones entre el CPU y el periférico y un apoyo de un protocolo lógico que a menudo implica comunicaciones de transferencia de datos sincronizados (solicitud y reconocimiento). La especificación y el diseño global del dispositivo influye en el formato lógico de los datos. Además, casi toda la Entrada−salida implica un cambio fundamental en la representación eléctrica o física de la información. Dentro de la computadora los datos y señales de control acostumbran a estar en la forma de niveles de voltaje o de acuerdo a una lógica dada. La operación de Entrada−salida a menudo implica una conversión entre analógico, mecánico, magnético, de audio u otra forma para almacenamiento, transmisión o exhibición de datos. Se considera el campo de Entrada−Salida desde 3 puntos de vista principales: hardware, software y diseño. Tipos y ejemplos de dispositivos Cuatro clases principales de técnicas se aplican comúnmente en forma individual o combinada para controlar la transferencia de datos de Entrada − Salida: • Entrada − Salida controlada por programa: el procesador supervisa todas las transferencias de Entrada − Salida a través de la iniciación de ordenes y la verificación del estado del dispositivo. Esta técnica se emplea en aplicaciones especializadas y diagnósticos de dispositivos. La Entrada − Salida por programa utiliza la interfaz de hardware en forma mas simple pero no aprovecha eficientemente los recursos. • Entrada − Salida por interrupciones: las funciones son iniciadas bajo el control del programa pero la 6 sincronización se maneja por medio de solicitudes de interrupción al hardware y el dispositivo asociado interrumpe el servicio de rutinas. Se utilizan en aplicaciones de baja o media velocidad en un entorno especializado o de multiprocesamiento. La Entrada − Salida activada por interrupciones utiliza hardware de complejidad relativamente baja y permite el diseño de software eficiente. • Acceso directo a memoria (DMA): la transferencia de Entrada − Salida de un bloque de datos completo se establece bajo el control del programa y se implementa con hardware de uso especial que transfiere datos directamente hacia o desde la memoria principal. Esto ocurre sin mas intervención de la CPU en forma concurrente con la ejecución del programa. El DMA se utiliza en dispositivos de velocidad media o alta en forma muy eficiente pero requiere una interfaz de hardware mas completa. Entre los usos mas comunes se cuenta los controladores de cinta o disco magnético, enlace entre los procesadores y procesadores de gráficos de alta velocidad. • Entrada − Salida mapeada por direcciones: la transferencia de datos se realiza entre la CPU y la región lógica del espacio direccionable del programa, que en realidad es parte de un dispositivo de Entrada − Salida, tal como una pantalla de imágenes o un canal de direcciones en lugar de la memoria principal. Esta técnica permite tanto la manipulación del programa de datos como las transferencias directas entre el dispositivo de Entrada − Salida y el almacenamiento final de la información. La Entrada − Salida mapeada por direcciones es un mecanismo eficiente y transparente que se utiliza con dispositivos estructurados, no es una extensión del DMA sino una técnica alternativa para ciertas aplicaciones. Estructuras de canales de Entrada − salida La configuración de Entrada − Salida es en términos generales la sección menos estandarizada de un sistema de computación, aunque solo puede disponerse de un numero pequeño de opciones del procesador, la selección del tipo y números de dispositivos de Entrada − Salida depende considerablemente de las aplicaciones. Además la configuración de Entrada − Salida tiende a cambiar conforme se desarrolla y expande el sistema. Es muy deseable poder agregar o desmontar dispositivos sin tener que volver a configurar la maquina básicamente minimizando al mismo tiempo el costo y la complejidad. El método fundamental para alcanzar estas metas es el diseño del hardware y de la modularidad de dicho diseño. El vehículo habitual para lograrla en el sistema de Entrada − salida es el canal de Entrada − Salida común. En este canal se interconectan dispositivos de Entrada − Salida, la CPU y la memoria principal y permite comunicaciones flexibles entre estas unidades. Las funciones principales del canal de Entrada − Salida hace posible que múltiples dispositivos: • Transfieren información por trayectorias de datos comunes compartiendo y reduciendo la complejidad del hardware. • Se agregan o desmontan dispositivos simplemente enchufando o desenchufando sus cables (plug and play). • Se enlace vía a un mecanismo, el canal de Entrada − Salida empleando especificaciones lógicas, eléctricas y físicas estandarizadas. Esta estandarización hace posible que familias enteras de computadoras con diverso nivel de rendimiento utilicen los mismos periféricos. Además, el diseñador de una interfaz del dispositivo de Entrada − Salida no necesita estar familiarizado con el diseño de la CPU, ni conocer con que maquina en particular va a funcionar la interfaz. Solo debe comprender las características del canal, cuyas especificaciones necesarias pueden clasificarse en 3 categorías: • Lógicas: definición y agrupación de señales relacionadas de polaridad lógica, por ejemplo: dirección, datos, control, sincronización, etc. • Eléctricas y físicas: niveles de señales, tipos de cables, conectores, etc. • Protocolo: reglas de uso del canal, tal como las relaciones de tiempo (temporización, sincronización, reconocimiento y arbitraje). 7 Organización lógicas y física del almacenamiento magnético Organización lógica MASTER BOOT BOOT FAT # 1 FAT # 2 DIRECTORIO RAIZ DATOS Almacenamiento Magnético: el almacenamiento de datos sobre un medio magnético se realiza magnetizando el medio en el sentido u otro. Durante le lectura, cada cambio de estado magnético (transición) produce un pulso en la cabeza lectora, el sentido de la transición es irrelevante, lo que cuenta son los tiempos en que estas transiciones se producen . la técnica del registro se conoce como MFM (modulación en frecuencia modificada) esta es una mejora del método anterior (MF: modulación en frecuencia) que se aplicaba a dispositivos de simple densidad. En FM cada aproximadamente 4 milisegundos se considera una celda, que codifica un BIT. Los limites de las celdas están dados por transiciones fijas que sirven para sincronizar o la controladora con el medio leído (reloj). En medio de cada celda, una transición extra indica 1, y su ausencia un 0. Las características del medio imponen una restricción al tamaño de la celda y a la densidad de información grabada. El método MFM se basa en suprimir las transiciones del reloj. Excepto entre dos ceros. Como consecuencia , el tiempo entre transiciones equivale como mínimo a una celda completa . Las celdas pueden entonces hacerse en la mitad de tamaño que FM y por lo tanto lograr que la densidad de grabación sea doble. Sectorización: cada pista del disco almacena una cadena de Bit, que codifica información. Esta codificación incluye, además de los datos del usuario, información adicional que permite sincronizar la lectura y sectorizar la pista. Las pistas se dividen en un cierto numero de sectores sobre los cuales se reparte la información del usuario. La sincronización requerida para determinar el comienzo de la pista se obtiene por medio de una marca óptica llamada orificio de índex. Un fotosensor determina el momento en que pasa por un punto determinado, allí comienza la lectura de la pista. El comienzo de la pista contiene bytes de sincronización y a continuación uno tras otro los sectores que incluyen espacios sin información ni transiciones magnéticas. El acceso a un sector es en cierta manera secuencial. Una técnica alternativa que no se usa en los discos flexibles pero si en algunos rígidos es la sectorización dura. Además del índex, casa sector incluye 2 registros de información el de identificación y el de datos. El registro de identificación incluye una etiquete que indica a que pista y a que lado pertenece el sector, cual es su numero y a que lado pertenece el sector, cual es su numero y que longitud de datos tiene. El registro de datos contiene los datos específicamente narrados, en ambos contiene un par de bytes de control (CRC) permite verificar si ha habido corrupción en la información o error en la lectura. 8 Posicionamiento: un sector de un floppy se caracteriza por 3 parámetros: pista, lado o cabeza y numero de sectores. Para acceder a un sector el dispositivo debe seleccionar la cabeza lectora que corresponda, trasladarla hasta la pista a leer y leer la pista hasta encontrar una etiqueta con la identificación del sector buscado. El posicionamiento de la cabeza lectora o grabadora se realiza mediante un motor paso a paso, durante el encendido de la maquina la posición de la cabeza es recalibrada, llevando la cabeza hasta la pista 0, lo que se determina mediante un sensor óptico o mecánico. Cuando el acceso debe hacerse sobre la pista N, la cabeza es avanzada o retrocedida la cantidad de pasos necesarios. ORGANIZACION LÓGICA DE LA INFORMACION La administración de un sistema de archivos depende de un delicado equilibrio: la consistencia de los datos que permiten acceder a la información contenida en los archivos. Cuando esa consistencia se pierde, la información aunque presente e inalterada se puede tornar irrecuperable. D.O.S. administra el acceso a un sistema de archivos de forma análoga a un sistema manual de índices y numeración de paginas. Area de sistema: La primera área a considerar es la tabla de partición, existe una por cada unidad lógica, en el primer sector de los mismos; en la primera unidad lógica comparte el sector con el código de Master Boot del disco. La tabla de partición incluye unos pocos datos fundamentalmente posición y tamaño de la partición (medidos en cilindros). Solo se altera durante operaciones tales como particionamiento o formateo del disco y no durante la operación normal. En el cilindro siguiente ala tabla de partición comienza el sector de boot y a continuación la tabla de alocación de archivos (FAT). Si bien en Nº de FAT es parametrizable los medios magnéticos incluyen uniformemente 2; uno principal y otro secundario, que deberían ser idénticos. La función de la copia secundaria es, exclusivamente la de un resguardo para el caso en que se presente un error de lectura de la tabla primaria. A continuación de ambas FAT se presenta el área del directorio raíz. Clusters: A los fines de organización todo disco se divide en pequeños elementos denominados clusters, cada uno de los cuales abarca 1 o mas sectores y que se consideran numerados correlativamente partiendo del comienzo del área de archivos del disco (es decir a continuación del área de sistemas). Es habitual el uso de clusters de 2 Kb., 4 sectores de 512 bytes. Un archivo D.O.S. toma una cantidad entera de clusters (si bien el ultimo esta ocupando solo parcialmente). No se requiere que los clusters de un archivo sean consecutivos; en rigor un archivo puede incluir clusters diseminados a lo largo del disco. El acceso a un archivo implica conocer esta secuencia de clusters que lo integran, y eventualmente alterarla para elongarlo o truncarlo; la información necesaria para ello se almacena en directorios y en la FAT. Directorio raíz: 9 Es un área dividía en entradas de 32 bytes, cada una de las cuales corresponde a un archivo. El numero de entradas es variable (generalmente 512) y determina la extensión del directorio, que ocupa un numero entero de sectores. Cada entrada se divide en campos que contienen el nombre del archivo, sus atributos, fecha y hora de ultima modificación e información acerca de la localización del archivo. Subdirectorio: una clase especial de archivos son los subdirectorios. Si bien D.O.S. no permite accederlos de manera análoga a los archivos, el mismo los trata en forma similar. Un subdirectorio se diferencia de un archivo común por una marca de atributo, y su contenido se estructura en entradas, tal como ocurre con el directorio raíz. FAT Se trata de un mapa del disco, dividido en clusters. La FAT es un arreglo de tantas celdas como clusters integran el disco; en cada celda se almacena un puntero que indica que clusters sigue al correspondiente a la celda en la secuencia. Nótese que de ninguna manera se indican en la FAT a que archivo pertenece un clusters; simplemente se codifican cadenas. Supongamos que el primer clusters de un archivo es el 2033 (surge de la entrada de directorio que define el archivo). La posición 2033 de la FAT, a su vez contiene el valor 3854; esto indica que el archivo incluye los clusters 2033−3854..., en ese orden. Un valor de −1 (FFF o FFFF en hexadecimal) indica el fin de la cadena es decir, el ultimo clusters del archivo. El almacenamiento del archivo se deduce entonces partiendo de la entrada de directorio y recorriendo la secuencia codificada en la FAT. Naturalmente no todos los clusters pertenecen a algún archivo. Los clusters libres son marcados en la FAT con un 0. Clusters no ocupados, pero cuyo uso esta prohibido en general por corresponder en sectores defectuosos Falta de concordancia entre la longitud de archivo (que debiera ocupar 3 clusters) y la de la cadena que presenta la FAT. Localización La información que en cada entrada de directorio permite determinar que clusters integran el archivo viene dada en forma de punteros. Cada entrada contiene la longitud (bytes) del archivo y el numero del 1er. clusters del mismo. El resto de los clusters del archivo surge del examen de la FAT. Organización El esquema así delineado resulta bastante remitivo: una simple alteración de la FAT puede ¨confundir¨ al operativo respecto de la localización de los archivos. La organización de D.O.S. no es redundante y si expuesta a inconsistencias. 10 La mejor manera de comprender las inconsistencias del área de sistema es a través de la consideración de errores puntuales .D.O.S. no efectúa ningún reconocimiento global (el utilitario CHKDSK apenas realiza rudimentariamente esta función), de manera que aun un caos en el área de sistemas es ¨visto¨ por D.O.S. como una gran cantidad de errores puntuales o como un conjunto de situaciones, correctas que no tienen consistencias entre sí. Algunas de las inconsistencias que se puedan redundar: • El número de un clusters que integran un archivo es ilegal: O (clusters libre), FFFF (bud clusters, no usable), o un número que excede la capacidad del disco lógico. • Falta de concordancia entre la longitud de archivo almacenada en la entrada de directorio y la longitud de la cadena (que viene dada por la cantidad de clusters enhebrados hasta encontrar el código del ultimo clusters o fin de archivo). D.O.S. no detecta sino uno de las 2 posibilidades: que la cadena termine antes de haber alcanzado la longitud total del archivo. Si la cadena es más larga que la correspondiente a la longitud declarada, D.O.S. lo ignorara. • Enlace cruzado: Nada en la FAT impide declarar un mismo clusters como siguiente a otros dos. (solo un analisis global pone de manifiesto entre error). Basta que 2 celdas de la FAT contengan el mismo puntero. Así, las cadenas de 2 archivos pueden convergir en un punto dado en una sola cadena. Consecuencias: Cuando se escribe el archivo A, también se esta escribiendo el archivo B. La cadena común se trunca o se elonga conforme a la operación sobre A o B, indistintamente. En particular, así se borra A, B queda truncado, (la cadena común a ambos es eliminada, y posteriormente aparecerá una inconsistencia al acceder a B: el clusters en el que se producía el enlace cruzado aparecerá como libre, cuando se esperaba que formara parte de la cadena de B). • Enlace cruzado múltiple: mas de 2 archivos pueden convergir en una cadena única. • Cadenas circulares: El enlace cruzado puede involucrar a 1 solo archivo .D.O.S. leerá (o escribirá) cíclicamente el archivo, cuya secuencia de clusters codificada en la FAT podría ser, en un ejemplo arbitrario: 2033−3854−2033.... • Cadenas perdidas, una cadena normal o anómala puede no estar apuntada por ninguna entrada de directorio (o sea, no pertenecer a ningún archivo). • Anomalías en la entrada de directorio. El clusters definido en la entrada de directorio como 1ro. del archivo puede ser ilegal. Así mismo, el atributo del archivo puede ser erróneo (por ej.: un archivo de texto que aparezca con el atributo de subdirectorio). Perdidas de consistencia: posponiendo la consideración de posibles orígenes, se ve que la arquitectura del sistema de archivos de D.O.S. esta claramente expuesta a que un error aun puntual) en la información contenida en el área de sistemas genere inconsistencias graves e impida la recuperación de la información grabada. Paradójicamente, en esos casos, la información "perdida" sigue permaneciendo en el disco... mezclada con decenas de miles de clusters de otras piezas de información. Lo que se ha esfumado es la posibilidad de rescatarla adecuadamente 7 13 PC MAR 11 MDR IR PSW OR NOR AND NAND Desplazamiento Rotación Reg. a Reg. Reg. a Mem. Mem. A reg. Mem a mem. Reg. estados y control Reg. De información Memoria CPU Vídeo Almacenamiento Dispositivos de ENTRADA − SALIDA 12