Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Interrupciones y TemporizaciOn
Interrupciones y TemporizaciOn
Direccionamiento de memoria
El direccionamiento de la memoria puede considerarse desde dos puntos de vista: Fsico y lgico. El primero se refiere a los medios electrnicos utilizados en el ordenador para acceder a las diversas posiciones de memoria. El segundo, a la forma en que se expresan y guardan las direcciones. El sistema de numeracin utilizado por los informticos para representar las direcciones de memoria en el texto escrito no suele ser la decimal (como parecera razonable), sino el hexadecimal La razn es que los nmeros hexadecimales guardan cierta concordancia con las potencias de 2. Por ejemplo, un bus de direcciones de 8 bits puede acceder a 256 posiciones (en hexadecimal es el rango 00-FFh). En caso de direcciones de 16 bits, se puede acceder 65.536 posiciones (es el rango 0000-FFFFh). El bus de direcciones del PC XT, que tiene 20 bits, las posibilidades son 1.048.576 (es el rango 00000-FFFFFh). Como veremos a continuacin, puede utilizarse una doble notacin: Direcciones absolutas, indicadas por un hexadecimal de cinco dgitos, en el rango 00000-FFFFFh, o en direcciones segmentadas, que utiliza dos grupos de cuatro dgitos hexadecimales.
El SELECTOR, ubicado en el registro del segmento, elige uno de 8192 descriptores en una de las dos tablas de descriptores. El DESCRIPTOR especifica la ubicacin, la longitud y los derechos de acceso del segmento de memoria, aunque no directamente como en el modo real. Por ejemplo, en el modo real, si CS=0008H, el segmento de cdigo inicia en la localidad 00080H. En modo protegido, este nmero de segmento puede direccionar cualquier localidad de memoria en todo el sistema para el segmento de cdigo. Existen dos tablas de descriptores utilizadas con los registros de segmentos: una contiene descriptores globales y otra, descriptores locales. Los descriptores globales contienen las definiciones de los segmentos que se aplican a todos los programas, mientras que los descriptores locales son generalmente exclusivos de una aplicacin. Podramos llamar descriptor de sistema a un descriptor global, y descriptor de aplicacin a uno local. Cada tabla de descriptores contendr 8192 entradas, por lo tanto una aplicacin podra disponer en cualquier momento de 16.384 descriptores. Puesto que un descriptor describe un segmento de memoria, esto permite que puedan ser descriptos hasta 16.384 segmentos de una aplicacin.
En el modo real se puede lograr un pequeo grado de multitarea si interceptamos algunos de los vectores de interrupcin que se ejecutan peridicamente, como el temporizador, e insertamos una rutina de usuario bajo esa interrupcin. Como puede verse, este tipo de multitarea no tiene ni punto de comparacin con la que ofrece el modo protegido del 80386. En el modo real no se puede controlar que un programa, por ejemplo, no pueda acceder a una zona especfica de memoria. Un programa en modo real puede acceder a cualquier direccin de memoria direccionable por el procesador, con lo que un programa maligno puede modificar estructuras del sistema operativo o redireccionar vectores de interrupcin y tener un control total sobre el sistema. Debido a esta escasa proteccin que se ofrece en el modo real, aparecen los temibles virus informticos y otros programas malignos. Tras conocer el modo protegido y haber trabajado con l, me atrevo a afirmar que es imposible realizar un virus para un sistema operativo que trabaje en modo protegido, siempre y cuando ese sistema operativo no deje ninguna puerta de entrada libre al usuario para controlar el sistema. Todas las interrupciones hardware y software son controladas por el procesador en el modo real leyendo de una tabla de interrupciones que se encuentran en las primeras posiciones de memoria fsica. Cuando se produce una interrupcin, se lee de la tabla anterior la direccin donde encontrar su rutina de tratamiento. Como cualquier programa pude acceder a cualquier direccin de memoria, pude manipular este rea de memoria e interceptar diversos vectores de interrupcin y apuntarlas a rutinas propias, con lo que cualquier programa puede controlar el sistema segn desee.
tambin que el juego de instrucciones que tiene nuestro procesador bsico contiene entre otras, las instrucciones mostradas en la tabla.
incorrectamente o que la velocidad de transmisin de datos entre dos componentes sea distinta. Cuanto mayor sea la frecuencia del reloj mayor ser la velocidad de proceso de la computadora y podr realizar mayor cantidad de instrucciones elementales en un segundo. El rango de frecuencia de los microprocesadores oscila entre los 4,77 megaherzios del primer PC diseado por IBM y los 200 megaherzios de las actuales computadoras basadas en los chips Intel Pentium. En mquinas de arquitectura Von Neumann la mayora de las operaciones son serializadas, esto significa que la computadora ejecuta los comandos en un orden preestablecido. Para asegurarnos de que todas las operaciones ocurren justo en el tiempo adecuado, las mquinas 80x86 utilizan una seal alternante llamada el reloj del sistema. En su forma bsica, el reloj del sistema maneja toda la sincronizacin de un sistema de cmputo. El reloj del sistema es una seal elctrica en el bus de control que alterna entre los valores de cero y uno a una tasa dada. La frecuencia en la cual el reloj del sistema alterna entre cero y uno es llamada frecuencia del reloj de sistema. El timepo que toma para cambiar de cero a uno y luego volver a cero se le llama periodo de reloj, tambin llamado ciclo de reloj. La frecuencia del reloj es simplemente el nmero de ciclos de reloj que ocurren en un segundo, en sistemas actuales, ste valor excede los 200 ciclos por segundo, siendo ya comn frecuencias del orden de los 366 Mhz. (MegaHertz, que equivale a un milln de ciclos por segundo). Observe que el periodo de reloj es el valor inverso de la frecuencia, por lo tanto, para un sistema de 200 Mhz el periodo es igual a 5 nanosegundos. Para asegurar la sincronizacin, el CPU inicia una operacin ya sea en el flanco ascendente (cuando la seal cambia de cero a uno) en el descendente (cuando la seal cambia de uno a cero). Como todas las operaciones de un CPU estn sincronizadas en torno a su reloj, un CPU no puede ejecutar operaciones ms rpido que la velocidad del reloj.
en el caso del procesador 80x86 porque ste ltimo consume ms ciclos de reloj para el acceso a memoria adems del incremento en la velocidad de reloj. Los dispositivos de memoria presentan varias caractersticas pero las principales son su capacidad de almacenamiento y el tiempo de acceso. Una memoria de acceso aleatorio (RAM) tpica tiene una capacidad de 16 ms megabytes y un tiempo de acceso de 70 nanosegundos menos, con estos datos seguramente se estar preguntando cmo es posible que stas memorias relativamente lentas trabajan en procesadores mucho ms rpidos. La respuesta son los estados de espera. Un estado de espera es una seal que se coloca en el bus de control por parte del dispositivo de memoria para detener temporalmente el trabajo realizado por el CPU, como consecuencia utilizar uno o ms estados de espera tiene el mismo efecto que reducir proporcionalmente la velocidad de reloj, obviamente introducir estados de espera no es una opcin deseable por la reduccin en el desempeo del sistema. Los diseadores de hardware han encontrado un mecanismo que tiene un efecto similar a introducir estados de espera pero sin afectar notablemente el rendimiento de la computadora, a este mecanismo se le llama memoria cache ( se pronuncia "cash"). Una memoria cache es un dispositivo sin estados de espera que se encuentra construida como parte integral del CPU, fsicamente se encuentra entre el CPU y los mdulos de memoria RAM, su funcin es evitar la generacin de estados de espera por parte de los mdulos de memoria RAM y as aprovechar al mximo el rendimiento esperado por el CPU, sin embargo la memoria cache no es un dispositivo perfecto pues hay ocasiones en que no es posible colocar en memoria cache los datos que requiere el programa para ejecutarse forzando al sistema a leer dichos datos directamente de los mdulos de memoria RAM y por lo tanto generando estados de espera, cuando ocurre ste fenmeno se le llama prdida cache (cache miss), cuando tienen xito las operaciones en memoria cache se le llama xito cache (cache hit). Por lo general el radio entre xito y prdida en memoria cache est entre 85 y 90%. Este rendimiento disminuye al aumentar la cantidad de memoria cache y por esta razn la memoria cache es relativamente pequea, sus valores de almacenamiento oscilan entre 256 y 512 Kb.
ESTADOS DE ESPERA
Cuando se conectan tarjetas al bus de la PC, un problema comn es igualar la velocidad de los ciclos del bus con la de las tarjetas. Es comn que una tarjeta sea ms lenta que el bus. As, el bus de la PC esta diseado para resolver este problema. La seal READY del bus se puede usar para extender la longitud del ciclo del bus para igualar una tarjeta lenta o parar el bus del sistema hasta que se sincronice con el ciclo de la tarjeta. Como se mencion anteriormente, los ciclos del bus del 8088 normalmente son de cuatro pulsos y se describen por T1 hasta T4. En algunos ciclos el hardware de la PC, automticamente inserta un pulso ocioso extra llamado TW. La seal READY se usa para insertar estados nuevos o adicionales de espera. Debido a
que los diferentes ciclos del bus requieren distintos tiempos, la seal READY se debe controlar de manera diferente.
INTERRUPCIONES HARDWARE
Durante la ejecucin de un programa, el procesador debe interactuar con una serie de dispositivos de entrada/salida: El teclado, las unidades de disco, los puertos serie y paralelo, la tarjeta de red, etc. Normalmente, la velocidad de procesamiento de estos dispositivos es inferior a la del procesador. As que el procesador tendr que esperar un tiempo para que el dispositivo se desocupe antes de hacerle una nueva solicitud. Cmo sabe el procesador que el dispositivo ya est listo para la nueva peticin?. Tambin, algunos dispositivos requieren la atencin del procesador en forma asncrona, es decir, no en forma peridica. Cmo sabe el procesador que el dispositivo requiere que se le atienda? Hay dos formas en que el procesador puede saber si el dispositivo est listo o si el dispositivo requiere atencin: La primera forma es que el procesador est peridicamente sondeando al dispositivo en cuestin. A fin de asegurarse de poder atender rpidamente a un dispositivo cuando se lo solicita, la frecuencia con el que procesador sondea a los dispositivos debe ser muy alta. Lo anterior produce que el procesador ocupa mucho tiempo interrogando a los dispositivos y en la mayora de las veces stos no estn listos o requieren de la atencin del procesador. La segunda forma, una ms eficiente, es hacer que sea el dispositivo el que le avise al procesador cuando est listo o requiera atencin, interrumpiendo al procesador. El procesador dejar de hacer lo que est haciendo para atender al dispositivo para posteriormente regresar a la tarea que estaba ejecutando antes de ser interrumpido. Los dispositivos utilizan una de las lneas del procesador para interrumpirlo. A este tipo de interrupcin se le conoce
como Interrupcin por Hardware. Para atender a un dispositivo el procesador ejecuta una rutina especial llamada Rutina de Servicio a Interrupciones. Las rutinas de servicio a interrupciones, por lo general, se cargan a la memoria RAM como parte del proceso de iniciacin de la computadora. Las interrupciones de cada dispositivo estn priorizadas de tal manera que si dos dispositivos desean interrumpir al procesador al mismo tiempo, slo la de mayor prioridad interrumpir al procesador.
INTERRUPCIONES SOFTWARE
Un programa escrito en un lenguaje de alto nivel utiliza funciones de la biblioteca estndar, provistas por el compilador empleado, para realizar la mayora de las tareas relacionadas con el manejo de los dispositivos de entrada y salida, y la gestin de los archivos y memoria. La mayora de dichas funciones hacen su trabajo mediante llamadas al sistema. Una llamada al sistema invoca a una rutina provista por el sistema operativo para realizar una tarea. En algunas ocasiones la funcin de biblioteca accesa directamente al hardware para realizar su tarea si es que no existe una rutina del sistema operativo o el desempeo de sta no es adecuado. Si el programa escrito en un lenguaje de alto nivel necesita realizar una tarea para la cual no existe una funcin de biblioteca o si el desempeo de sta no es adecuado, entonces puede ejecutar una llamada al sistema operativo para realizar dicha tarea. De igual manera, si el sistema operativo no provee de una rutina para ejecutar esa tarea o si el desempeo de sta no es adecuado, entonces el programa puede accesar directamente al hardware. Un programa escrito en ensamblador, normalmente no tiene a su disposicin una biblioteca de funciones estndar y por lo tanto para realizar las tareas relacionadas con el manejo de los dispositivos de entrada y salida, y la gestin de los archivos y memoria deber hacerlo mediante llamadas al sistema. Tambin puede accesar directamente al hardware para realizar su tarea si es que no existe una rutina del sistema operativo o el desempeo de sta no es adecuado. En la figura 8-1 se muestra como un programa puede acceder a las funciones de biblioteca, rutinas del sistema operativo y hardware para realizar una tarea que implica el manejo del hardware. Las flechas representan las llamadas a funciones de la biblioteca, llamadas al sistema o acceso directo al hardware.