Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DIRECCIONAMIENTO DEL
PROCESADOR Y CONJUNTO
DE INSTRUCCIONES
Direccionamiento de memoria
El sistema de numeración utilizado por los informáticos para representar las direcciones
de memoria en el texto escrito no suele ser la decimal (como parecería razonable), sino
el hexadecimal
La razón es que los números 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).
Bajo el modo real no existe ningún mecanismo para tener varias tareas ejecutándose
concurrentemente, aunque si se pueden tener varios programas cargados en memoria al
mismo tiempo, pero inactivos.
En el modo real se puede lograr un pequeño grado de multitarea si interceptamos
algunos de los vectores de interrupción que se ejecutan periódicamente, como el
temporizador, e insertamos una rutina de usuario bajo esa interrupción. Como puede
verse, este tipo de multitarea no tiene ni punto de comparación 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 específica de memoria. Un programa en modo real puede acceder a cualquier
dirección de memoria direccionable por el procesador, con lo que un programa maligno
puede modificar estructuras del sistema operativo o redireccionar vectores de
interrupción y tener un control total sobre el sistema.
Debido a esta escasa protección que se ofrece en el modo real, aparecen los temibles
virus informáticos 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.
Las mayoría de las instrucciones están formadas por dos partes: la operación y los
operandos. La operación es la acción que debe realizarse. Los operandos son los
elementos sobre los que se realizará ésta acción. Por lo tanto, dependiendo de su tipo,
las instrucciones pueden tener cero uno o más operandos. Sin embargo en todas las
instrucciones existe la operación.
Cada operación está codificada mediante una secuencia binaria única llamada código de
la operación. Como los operandos son también secuencias binarias, cada instrucción se
codifica mediante una secuencia de bytes: uno o más para el código de la operación y
cero, uno o más para los operandos. Un programa donde sus instrucciones están
codificadas como secuencias binarias está en lenguajemáquina.
TÉCNICAS DE
SINCRONIZACIÓN DE DATOS
TEMPORIZACIÓN DEL SISTEMA
Reloj del sistema
La frecuencia del reloj se mide en Ciclos por Segundo, también llamados Hertzios,
siendo cada ciclo un pulso del reloj. Como la frecuencia del reloj es de varios millones
de pulsos por segundo se expresa habitualmente en Megaherzios.
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 diseñado por IBM y los 200 megaherzios de las actuales computadoras
basadas en los chips Intel Pentium.
Los dispositivos de memoria presentan varias características pero las principales son su
capacidad de almacenamiento y el tiempo de acceso. Una memoria de acceso aleatorio
(RAM) típica tiene una capacidad de 16 ó más megabytes y un tiempo de acceso de 70
nanosegundos ó menos, con estos datos seguramente se estará preguntando cómo es
posible que éstas memorias relativamente lentas trabajan en procesadores mucho más
rápidos. La respuesta son los estados de espera. Un estado de espera es una señal 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 más
estados de espera tiene el mismo efecto que reducir proporcionalmente la velocidad de
reloj, obviamente introducir estados de espera no es una opción deseable por la
reducción en el desempeño del sistema. Los diseñadores 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, físicamente se encuentra entre el CPU y los módulos de
memoria RAM, su función es evitar la generación de estados de espera por parte de los
módulos de memoria RAM y así aprovechar al máximo 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 módulos de
memoria RAM y por lo tanto generando estados de espera, cuando ocurre éste
fenómeno se le llama pérdida 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 pérdida en memoria cache está entre 85 y 90%. Este rendimiento disminuye al
aumentar la cantidad de memoria cache y por esta razón la memoria cache es
relativamente pequeña, sus valores de almacenamiento oscilan entre 256 y 512 Kb.
ESTADOS DE ESPERA
Cuando se conectan tarjetas al bus de la PC, un problema común es igualar la
velocidad de los ciclos del bus con la de las tarjetas. Es común que una tarjeta
sea más lenta que el bus. Así, el bus de la PC esta diseñado para resolver este
problema. La señal 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, automáticamente inserta un pulso ocioso extra llamado TW. La señal
READY se usa para insertar estados nuevos o adicionales de espera. Debido a
que los diferentes ciclos del bus requieren distintos tiempos, la señal READY
se debe controlar de manera diferente.
INTERRUPCIONES HARDWARE
Durante la ejecución 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. ¿Cómo
sabe el procesador que el dispositivo ya está listo para la nueva petición?. También,
algunos dispositivos requieren la atención del procesador en forma asíncrona, es decir,
no en forma periódica. ¿Cómo 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 atención: La primera forma es que el procesador esté
periódicamente sondeando al dispositivo en cuestión. A fin de asegurarse de poder
atender rápidamente 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 mayoría de las
veces éstos no están listos o requieren de la atención del procesador. La segunda forma,
una más eficiente, es hacer que sea el dispositivo el que le avise al procesador cuando
esté listo o requiera atención, 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 líneas del procesador para interrumpirlo. A este tipo de interrupción se le conoce
como Interrupción 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 iniciación de la computadora.
Las interrupciones de cada dispositivo están priorizadas de tal manera que si dos
dispositivos desean interrumpir al procesador al mismo tiempo, sólo la de mayor
prioridad interrumpirá al procesador.
INTERRUPCIONES SOFTWARE
Un programa escrito en un lenguaje de alto nivel utiliza funciones de la biblioteca
estándar, provistas por el compilador empleado, para realizar la mayoría de las tareas
relacionadas con el manejo de los dispositivos de entrada y salida, y la gestión de los
archivos y memoria. La mayoría 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 función de biblioteca accesa
directamente al hardware para realizar su tarea si es que no existe una rutina del sistema
operativo o el desempeño 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 función de biblioteca o si el desempeño 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 desempeño de ésta no es adecuado, entonces el programa puede accesar directamente
al hardware.