You are on page 1of 78

ndice

TEMA 1 INTRODUCCIN ...........................................................................................5


Apartado 1.1 Objetivos de la Asignatura .............................................................................................................5

Apartado 1.2 Introduccin a los SSOO multitarea............................................................................................5 Sub-Apartado 1.2.1 Llamada a los servicios del SO ..........................................................................................5 Sub-Apartado 1.2.2 Interrupciones........................................................................................................................5 Sub-Apartado 1.2.3 Excepciones ...........................................................................................................................6

TEMA 2 LA CPU............................................................................................................7
Apartado 2.1 Soporte de la CPU Terica a SS OO Multitarea......................................................................7 Paso 1: Ejecucin de tarea 0....................................................................................................................7 Paso 2: Manejo de Interrupcin..............................................................................................................7 Paso 3: Guardar los Registros.................................................................................................................8 Paso 4: Activacin de la pila del SO......................................................................................................8 Paso 5: Rutina de Planificacin ..............................................................................................................9 Paso 6: Restauracin de nueva tarea......................................................................................................9 Paso 7: Restauracin de los registros...................................................................................................10 Paso 8: IRET ............................................................................................................................................10 Paso 9: Ejecucin de la Tarea ...............................................................................................................11 Sub-Apartado 2.1.2 Deficiencias de la CPU Terica .......................................................................................11 Deficiencia 1: Instruccin CLI ..............................................................................................................11 Deficiencia 2: Acceso a memoria del sistema ....................................................................................11 Deficiencia 3: Acceso a memoria de otras tareas ..............................................................................12 Deficiencia 4: Mltiples pilas ...............................................................................................................12 Deficiencia 5: Excepciones ...................................................................................................................12 Sub-Apartado 2.1.3 Soluciones a las deficiencias.............................................................................................12 Deficiencia 1: Instruccin CLI ..............................................................................................................12 Deficiencia 2: Acceso a memoria del sistema ....................................................................................12 Deficiencia 3: Acceso a memoria de otras tareas ..............................................................................12 Deficiencia 4: Mltiples pilas ...............................................................................................................12 Deficiencia 5: Excepciones ...................................................................................................................13

Apartado 2.2 Mejora del Rendimiento............................................................................................................... 13 Sub-Apartado 2.2.1 Segmentacin en la ejecucin de las instrucciones.......................................................13 Sub-Apartado 2.2.2 Replicacin de unidades funcionales...............................................................................14

Apartado 2.3 Arquitectura IA-32 ........................................................................................................................ 14 Sub-Apartado 2.3.1 Historia de IA-32 ................................................................................................................14 Sub-Apartado 2.3.2 Soporte de IA-32 a Sistemas Operativos multitarea .....................................................14 Paso 1: Nmero de Interrupcin...........................................................................................................18 Paso 2: Direccin de la puerta...............................................................................................................18 Paso 3: Obtencin de la puerta..............................................................................................................18

Paso 4: Conmutacin de las pilas .........................................................................................................18 Paso 5: Desactivar las interrupciones ..................................................................................................18 Paso 6: Transferencia de control al manejador..................................................................................18 Paso 7: Comienzo de ejecucin del cdigo del manejador..............................................................19 Paso 8: Guardar estado de la tarea........................................................................................................19 Paso 9: Ejecucin del manejador..........................................................................................................19 Paso 10: Planificacin de procesos ......................................................................................................19 Paso 11: Preparacin de la nueva tarea ...............................................................................................19 Paso 12: Se ejecuta IRET .......................................................................................................................19 Paso 13: Se conmuta la pila de nuevo .................................................................................................19 Paso 14: Continua la ejecucin de la tarea..........................................................................................19

TEMA 3 LA JERARQUA DE MEMORIA ...............................................................20


Apartado 3.1 Introduccin .................................................................................................................................... 20

Apartado 3.2 Concepto de Jerarqua de Memoria ......................................................................................... 20 Sub-Apartado 3.2.1 Principio de Localidad .......................................................................................................20 Sub-Apartado 3.2.2 Tecnologas de Memoria ...................................................................................................21 Sub-Apartado 3.2.3 Niveles de Memoria ...........................................................................................................21

Apartado 3.3 Memoria Cache .............................................................................................................................. 21 Sub-Apartado 3.3.1 Conceptos Preliminares .....................................................................................................22 Sub-Apartado 3.3.2 Estrategia de Correspondencia .........................................................................................22 Sub-Apartado 3.3.3 Estrategias de reemplazo ...................................................................................................24 Sub-Apartado 3.3.4 Estrategias de escritura ......................................................................................................24 Sub-Apartado 3.3.5 El Problema de la Coherencia...........................................................................................25 Sub-Apartado 3.3.6 Organizacin de la Memoria Cach ................................................................................25 Sub-Apartado 3.3.7 Memoria Cach en la Arquitectura IA-32 ......................................................................26

Apartado 3.4 Memoria Principal ......................................................................................................................... 26 Sub-Apartado 3.4.1 Coste Temporal de un Fallo de Cach ............................................................................26 Sub-Apartado 3.4.2 Coste temporal de la actualizacin de un bloque de Memoria Principal ..................26 Sub-Apartado 3.4.3 Mejoras en la Organizacin de la Memoria Principal..................................................26

Apartado 3.5 Memoria Virtual ............................................................................................................................ 29 Sub-Apartado 3.5.1 Introducin...........................................................................................................................29 Sub-Apartado 3.5.2 Objetivos de la Memoria Virtual......................................................................................29 Sub-Apartado 3.5.3 Estrategias de memoria Virtual........................................................................................30 Sub-Apartado 3.5.4 La Memoria Virtual Paginada ..........................................................................................30 Sub-Apartado 3.5.5 Paginacin en IA-32...........................................................................................................34

TEMA 4 EL SISTEMA DE ENTRADA/SALIDA .....................................................37


Apartado 4.1 Introduccin .................................................................................................................................... 37

Apartado 4.2 Ubicacin del Sistema de E/S en los espacios de direcciones de la CPU......................... 37

Apartado 4.3 Proteccin del Sistema de Entrada/Salida .............................................................................. 37

Apartado 4.4 Tcnicas de Entrada/Salida......................................................................................................... 38 Sub-Apartado 4.4.1 E/S programada con Muestreo.........................................................................................38 Sub-Apartado 4.4.2 E/S con Interrupciones.......................................................................................................38 Sub-Apartado 4.4.3 E/S con DMA ......................................................................................................................39 Sub-Apartado 4.4.4 Procesadores de E/S ...........................................................................................................39

Apartado 4.5 Interrupciones en la arquitectura IA -32.................................................................................. 39

TEMA 5 CANALES .....................................................................................................41


Apartado 5.1 Topologas de interconexin........................................................................................................ 41

Apartado 5.2 Los Buses.......................................................................................................................................... 42 Sub-Apartado 5.2.1 Concepto de ciclo del bus..................................................................................................42 Sub-Apartado 5.2.2 Caractersticas de un bus ...................................................................................................43 Sub-Apartado 5.2.3 Bus con mltiples maestros: Concepto de arbitraje. .....................................................44 Sub-Apartado 5.2.4 Jerarqua de buses...............................................................................................................44 Sub-Apartado 5.2.5 El bus PCI ............................................................................................................................44

Apartado 5.3 Conexin de componentes en un PC moderno....................................................................... 46

TEMA 6 PERIFRICOS:............................................................................................48
Apartado 6.1 Introduccin .................................................................................................................................... 48

Apartado 6.2 Perifricos de almacenamiento................................................................................................... 48 Sub-Apartado 6.2.1 Almacenamiento magntico..............................................................................................48 Sub-Apartado 6.2.2 Almacenamiento ptico ....................................................................................................52 Sub-Apartado 6.2.3 Almacenamiento magnetoptico ...................................................................................54 Sub-Apartado 6.2.4 Almacenamiento en semiconductores .............................................................................54

Apartado 6.3 Perifricos de Entrada .................................................................................................................. 55 Sub-Apartado 6.3.1 Teclado .................................................................................................................................55 Sub-Apartado 6.3.2 Ratn.....................................................................................................................................56

Apartado 6.4 Perifricos de Salida ...................................................................................................................... 57 Sub-Apartado 6.4.1 Monitores .............................................................................................................................57

Sub-Apartado 6.4.2 Impresoras............................................................................................................................60

Apndice 1 Historia de IA-32 ..................................................................................63 Apndice 2 Introduccin al modo real de la arquitectura IA-32....................69 Apndice 3 Problemas de proteccin del DOS .................................................71 Apndice 4 Llamada a Servicios en Windows...................................................72 Apndice 5 Protected-Mode Memory Management..........................................73 Apndice 6 Paginacin en Windows ....................................................................78

TEMA 1 INTRODUCCIN
Apartado 1.1

Objetivos de la Asignatura

En la asignatura de primero se tratan todos aquellos aspectos relacionados con la representacin de la informacin y los sistemas digitales, adems de realizar una aproximacin a una rudimentaria CPU terica, para mostrar el funcionamiento bsico de una CPU. Pero sabemos que esa CPU no es real y en esta parte lo que haremos ser realizar una transicin, de la CPU terica a una CPU real, centrndonos en dos aspectos bsicos: Soporte Hardware a los Sistemas Operativos multitarea. Maximizar el rendimiento de la CPU, tanto a nivel de velocidad como a nivel de funcionalidad.

Para ello se ir viendo un elemento Hardware en cada tema. Primero veremos las mejoras que requiere una CPU, y el ordenador en general, para soportar la multitarea.

Apartado 1.2 Introduccin

a los SSOO multitarea

Como sabemos, un Sistema Operativo es un programa especial encargado de realizar la gestin del Hardware As, como unin de Hardware y SO, obtendremos una maquina virtual como, por ejemplo, wintel (Windows + Intel). En todo entorno multitarea el Sistema tiene que tomar el control de la maquina en diversos instantes. Aqu el Sistema operativo tomar el control en las siguientes ocasiones:

Sub-Apartado 1.2.1 Llamada a los servicios del SO


Se produce cada vez que una aplicacin necesita acceder a Hardware y dispone de unas instrucciones especficas. En el caso de Intel se trata de syscall, que nos llevar al servicio del Sistema Operativo, y sysret, que devuelve la ejecucin a su cauce.

Sub-Apartado 1.2.2 Interrupciones


Las interrupciones son un mecanismo hardware que notifica al procesador que tiene algo importante que procesar.

El perifrico genera las interrupciones a travs de su interfaz, en ese momento el procesador acepta la interrupcin (o la mete en una cola de interrupciones) y el compilador de instruccin en curso ejecuta la rutina de tratamiento. Al finalizar dicha rutina se continua ejecutando la tarea en el mismo sitio en que se interrumpi, haciendo uso de sysret, de nuevo.

La principal diferencia con las llamadas a servicios es que estas interrupciones no estn programadas de antemano, no sabemos cuando sucedern y, por tanto, no hay syscall.

Sub-Apartado 1.2.3 Excepciones


Es un mecanismo encargado de darle el control al Sistema Operativo ante una situacin anmala durante la ejecucin de una instruccin. Pueden verse las excepciones como interrupciones producidas por el propio procesador ante diversas situaciones: divis in por cero, cdigo de instruccin invlido En este caso la instruccin sysret puede llevar a cabo 3 acciones: 1. 2. 3. Devolver el control a la instruccin que gener la excepcin. Devolver el control a la instruccin siguiente a la que gener la excepcin. No poder retornar de la rutina de tratamiento. En este caso se produce el bloque del ordenador.

TEMA 2 LA CPU
Apartado 2.1

Soporte de la CPU Terica a SS OO Multitarea

Como ya dijimos, el hardware tuvo que sufrir cambios para poder aceptar los Sistemas operativos multitarea. La CPU es uno de los elementos cuyos cambios fueron ms notables. Hoy da casi todas las CPU son multitarea y tan solo aquellas que se dedican a tareas puntuales son monotarea. Para comprender los cambios que una CPU tiene que sufrir para ser monotarea, partiremos de la CPU Terica de Fundamentos de los Computadores, haciendo un Sistema operativo que trabaje sobre ella. Los principales problemas que hay que arreglar son: El cambio del valor de PC, bsico para poder pasar de una tarea a otra. Introducir un temporizador que permita al SO tomar el control cada cierto tiempo. Eso lo conseguiremos generando una interrupcin que, en este caso, haremos mediante el perifrico luces.

Podemos dividir la ejecucin en el Sistema Operativo en una serie de pasos.

Paso 1: Ejecucin de tarea 0


La tarea 0 se est ejecutando de manera normal y en ese momento el temporizador genera una interrupcin.

Paso 2: Manejo de Interrupcin


Se trata la interrupcin como una cualquiera. Se guarda el registro de estado (SR) y el contador de programa (PC) en la pila y se ejecuta el vector de interrupcin apropiado, que le da el control al SO.

Paso 3: Guardar los Registros


En una interrupcin normal vale con salvar el SR y el PC, cosa que ya se hizo en el paso anterior, pero en esta interrupcin se deben guardar tambin los registros de la CPU (R0 ~ R7) para que la ejecucin de la tarea 0 pueda continuar de manera normal, cuando deba.

Paso 4: Activacin de la pila del SO


No debemos interferir en la pila de la Tarea 0, por lo que cambiaremos el registro R7, de manera que apunte a la pila del SO. Esto no supone ningn problema, porque el antiguo valor de R7, y por tanto la localizacin de la pila de la tarea 0, se guard en el paso anterior.

Paso 5: Rutina de Planificacin


En este paso el Sistema Operativo realiza las tareas correspondientes, entre las que se poda encontrar una planificacin para escoger la siguiente tarea a ejecutar.

Paso 6: Restauracin de nueva tarea


La rutina de planificacin establece la prxima tarea a ejecutarse. El Sistema Operativo se encargar, a continuacin, de posibilitar su ejecucin.

Paso 7: Restauracin de los registros


Una vez que se identifica la nueva tarea, el Sistema operativo se encarga de restaurar los registros de la tarea. Junto a ellos se restaura el registro R7, con lo que la pila se cambia y deja de ser la pila del Sistema operativo, para pasar a ser la pila de la tarea.

Paso 8: IRET
Se ejecuta la instruccin IRET y con ello se sacan de la pila el SR y el PC. La tarea nueva ya est lista para ser usada.

10

Paso 9: Ejecucin de la Tarea


Se ejecuta la tarea 1 hasta que vuelve a haber una interrupcin del temporizador y se vuelve al paso 2.

Sub-Apartado 2.1.2 Deficiencias de la CPU Terica


Se pueden observar varias deficiencias que nuestra CPU Terica tendra a la hora de implementar un Sistema operativo como el descrito en los pasos anteriores. Las principales deficiencias son:

Deficiencia 1:Instruccin CLI


La principal deficiencia proviene del temporizador. El temporizador es la manera en que el Sistema operativo toma el control, gracias a las interrupciones que ste genera. Pero, para que esto surja efecto, el bit IF, dentro del Registro de Estado, tiene que estar a 1. Esto se consigue con la instruccin STI. Por otra parte, cuando el Sistema operativo est gestionando las tareas, no podemos permitir que una interrupcin corte esa ejecucin, por lo que tenemos que poner el bit IF a 0, con la instruccin CLI. Ahora bien, si una tarea ejecutara la instruccin CLI, desactivara las interrupciones del SO y por tanto monopolizara la CPU. As pues, habra que definir una serie de instrucciones prohibidas para las tareas.

Deficiencia 2: Acceso a memoria del sistema


El siguiente ejemplo: MOVL R4, 50h MOVH R4, 80h XOR R1, R1, R1 MOV [R4], R1 Es totalmente vlido. Precisamente ese es el problema. En esta instruccin estamos accediendo a una direccin del Sistema Operativo. Si bien este acceso es de lectura, podramos haber modificado zonas como la rutina de planificacin o la tabla de vectores de interrupcin, provocando que las interrupciones de reloj, en lugar de desencadenar los pasos vistos antes, simplemente muestren mensajes por pantalla.

11

Deficiencia 3: Acceso a memoria de otras tareas


En el ejemplo anterior accedamos a memoria del Sistema operativo, pero podramos acceder a las memorias de otras tareas, corrompiendo su cdigo o su pila.

Deficiencia 4: Mltiples pilas


Hay una pila por cada tarea, sin contar la del Sistema Operativo. Cada pila contiene informacin fundamental, incluyendo los valores de SR y PC, vitales para poder retornar a las tareas. Si alguna de esas zonas de memoria se corrompiera, los problemas seran numerosos.

Deficiencia 5: Excepciones
La CPU terica no acepta excepciones, condicin fundamental para la multitarea.

Sub-Apartado 2.1.3 Soluciones a las deficiencias


Las deficiencias propuestas se podran arreglar introduciendo unos cambios en la propia CPU.

Deficiencia 1: Instruccin CLI


Se pueden marcar ciertas instrucciones, de su juego de instrucciones, como instrucciones privilegiadas, que una tarea normal no pueda ejecutar. La solucin propuesta, establecer Niveles de Privilegio, se consigue aadiendo un simple bit al registro de estado. El bit de privilegio sera: 1: Nivel de Privilegio de Tarea. Ciertas instrucciones no se pueden ejecutar. 0: Nivel de Privilegio de SO. Se pueden ejecutar todas las instrucciones.

En esas instrucciones privilegiadas entrara CLI y otras.

Deficiencia 2: Acceso a memoria del sistema


Se vuelven a establecer privilegios, en este caso, marcando las zonas de memoria privilegiadas. El bit aadido antes nos dir si se puede acceder a las zonas de memoria o no. Pero Cmo se marca una zona de memoria? Dependiendo de la CPU se pueden contar con unas zonas fijas (reas Privilegiadas Fijas) o se podrn especificar (reas Privilegiadas Programables). INTEL usa reas fijas, aadiendo un poco de programabilidad.

Deficiencia 3: Acceso a memoria de otras tareas


Se lleva a cabo un proceso de proteccin entre tareas. Este cambio es algo ms complicado, ya que se establecen reas independientes y seguras para cada tarea, lo cual implica cambios ms all del procesador, tocando el mo delo de memoria. Estos cambios causan la jerarqua de memoria y la memoria Virtual, que se ven ms adelante.

Deficiencia 4: Mltiples pilas


Se sustituirn todas las pilas por una sola pila gestionada por el Sistema Operativo. En esta pila se almacenan tan solo los datos del camb io de contexto, quedando el resto de datos de las tareas en la pila de las mismas. Dependiendo de la plataforma hay varias maneras de enfocar el problema. As, PowerPC y MIPS guardan el SR y el PC (si durante esa copia se genera otra interrupcin, se machacan), se cambia el puntero de pila y se almacenan los valores en la nueva pila.

12

IA-32, en cambio, sustituye el puntero de pila actual por el del SO y guarda los valores en la pila.

Deficiencia 5: Excepciones
Se introducen manejadores de excepciones, que siguen el mismo comportamiento que los manejadores de interrupciones.

Apartado 2.2 Mejora del Rendimiento


Hay varias tcnicas para conseguir mejorar el rendimiento de un ordenador y, en concreto, de su CPU. Una manera es aumentar el nmero de ciclos de reloj de la CPU, es decir, aumentar su frecuencia. En los ltimos aos el aumento de la frecuencia de las CPUs ha sido enorme, alcanzando los varios GHz. Esto se consigue disminuyendo las distancias entre las puertas lgicas que conforman el procesador. Ahora mismo esa distancia anda sobre las 0.13 micras. Pero esta solucin es puramente tecnolgica y no concierne a la asignatura. Sin embargo hay ms soluciones, como la reduccin del nmero de pasos o la replicacin de unidades funcionales.

Sub-Apartado 2.2.1 Segmentacin instrucciones

en

la

ejecucin

de

las

Cmo reducir el nmero de pasos? Imaginemos el cdigo: ADD R4, R3, R2 SUB R2, R3, R4 XOR R5, R5, R5 AND R3, R4, R5 Las cuatro instrucciones llevaran 24 pasos o ciclos de reloj. Sin embargo, en cada tarea se observan dos fases comu nes: Bsqueda de instruccin y Ejecucin de instruccin. Si dividiramos esas dos tareas podramos compactar las bsquedas y las ejecuciones, logrando una disminucin de ciclos de reloj necesarios.

Pero esta solucin tiene sus problemas. En primer lugar, se aumenta la complejidad de la CPU al tener que tratar por separado ciertas instrucciones. Pero los verdaderos problemas surgen al tratar de acceder a memoria o a la ALU.

13

Si en la fase de ejecucin queremos acceder a memoria, la fase de bsqueda de instruccin se ver interrumpida, ya que el bus de datos solo puede servir un dato. Lo mismo ocurre si la fase de ejecucin trata de acceder a la ALU, ya que la ALU no puede hacer varias operaciones a la vez y la fase de bsqueda incrementa el PC. Por estos y otros problemas (como los saltos, donde se modifica el PC y se hace necesaria una nueva fase de bsqueda) la velocidad que ganamos no es la esperada tericamente.

Sub-Apartado 2.2.2 Replicacin de unidades funcionales


Los procesadores actuales han conseguido mitigar los problemas de la segmentacin de ejecucin de instrucciones mediante la replicacin de sus recursos internos, es decir, varias ALUs, varios buses internos Esto aumenta an ms la complejidad de las CPUs, pero mejora en gran medida su rendimiento. As, segn el grado de replicacin tendremos: Computador superescalar : El procesador puede ejecutar varias instrucciones simultneamente, gracias a la replicacin de alguno de sus componentes. Computador Multiprocesador : Se replica todo el procesador.

Apartado 2.3

Arquitectura IA-32

Sub-Apartado 2.3.1 Historia de IA-32


Ver Apndice 1

Sub-Apartado 2.3.2 Soporte de IA-32 a Sistemas Operativos multitarea


La arquitectura IA-32 presenta varias caractersticas que permiten una multitarea ms eficiente, solucionando los problemas que nuestra CPU terica planteaba. En primer lugar tenemos sus modos de funcionamiento. Cmo se indica en su introduccin histrica, a partir del 82086 Intel agreg varios modos de funcionamiento en sus CPUs para permitir la multitarea a la par que proporcionaba compatibilidad con los sistemas monotarea. As, tenemos: Protegido: Es el modo con soporte multitarea. Incluye el 8086 virtual. Real: Es el 8086 ultrarrpido, que se activa por defecto al arrancar. Gestin de Sistema (SSR): Permite que el Sistema Operativo lleve a cabo operaciones especiales de gestin Se pasa a este modo cuando el procesador recibe un tipo especial de interrupciones, que cuentan con su propia lnea de interrupcin dentro de la CPU. Al igual que el resto de las interrupciones, se trata de manera totalmente transparente al usuario.

Adems se han incorporado al procesador multitud de registros, de distintos tamaos y con diferentes propsitos. Los principales son: De propsito general (32 bits):

Estos registros sirven para varios propsitos, aunque alguno de ellos pueda estar especializado. As, los registros EAX, EBX, ECX y EDX no tienen una funcin especfica, si bien ESI, EDI, EBP y ESP se suelen usar para tareas ms concretas, como el manejo de la pila u otras. Para mantener la compatibilidad con el 8086 que, como se indicaba en la introduccin histrica, an trabajaba con registro de 16 bits, se pueden usar tan solo los ltimos 16 bits de los registros EAX, EBX, ECX y EDX como si fueran un registro, dando lugar a los registros AX, BX, CX y DX.

14

stos ltimo s, a su vez, se pueden dividir en dos partes, la alta y la baja, dando lugar a AH, AL, BH, BL 31 16 15 EAX AH EBX BH ECX CH EDX DH ESP SP EBP BP ESI SI EBI BI De segmento (16 bits): DX DL CX CL BX BL 8 7 AL 0 AX

Son 6 registros (CS, DS, ES, FS, GS y SS) que actan como selectores para determinar la direccin de memoria donde se ubica un segmento de memoria. Se suelen llamar directamente selectores, en lugar de registros de segmento. Tienen la siguiente estructura: 15 NDICE 3 TI 2 RPL 0

Donde: RPL se corresponde con el nivel de privilegio requerido (Requested Privilege Level) para poder acceder al segmento. Con 2 bits tendremos 4 posibles niveles. TI es el indicador de la tabla de traduccin que se usar (Table Indicador). As, nos podra indicar que usemos la GDT o Global Descriptor Table (TI = 0) o la LDT o Local Descriptor Table (TI = 1). Quedar a criterio del Sistema Operativo cual de las dos tablas se usa (en el caso de Linux ser la GDT). ndice es el ndice con que buscar en la tabla indicada por TI. Este ndice es lo que conocemos como descriptor de segmento o descriptor. El tamao del descriptor nos define el nmerod e entradas posibles de la tabla de segmentos, que en este caso ser 213 =8092. De estado y control o EFLAGS (32 bits):

Contiene los flags del sistema, pero no usa los 32 bits por completo. Los flags ms usados son: Bit 0: Flag de Acarreo Bit 6: Flag de Cero. Bit 7: Flag de Signo. Bit 8: Flag de Trap (TF). Se usa para hacer trazas y le da el control al Sistema Operativo si est a 1.

15

Bit 9 : Flag de Interrupciones (IF). 1 = Activadas ; 0 = Desactivadas. Bit 11: Flag de Overflow Bits 12 y 13: Flag IOPL (Input/Output Privilege Level). Se encarga de determinar el nivel de privilegio necesario para ejecutar una operacin de Entrada/Salida. Comprobamos que vuelve a haber 4 niveles, como en los registros de segmento. Puntero de Instruccin (32 bits):

Es el registro EIP, encargado de sealar la direccin de la siguiente instruccin a ejecutar. Equivale al registro PC de la CPU Terica. La siguiente caracterstica, que entra ms en el captulo de la memoria, es el modelo de memoria que presenta esta arquitectura. Espacio de Direcciones Lgicas:

Es la manera en que el programa har referencia a la memoria. Cada referencia constar de dos campos. Uno de ellos indicar el registro de segmento a usar mientras que el otro nos indica el desplazamiento a llevar a cabo cuando estemos en el segmento de memoria requerido. Espacio de Direcciones Lineal:

Representa la direccin lgica como una direccin de 32 bits, en la que ya se incluya la direccin del segmento que nos sealaba el selector usado. Espacio de Direcciones Fsicas:

Es la direccin lineal ya traducida y sealando a un lugar concreto y real dentro de la memoria, donde se encuentra aquel dato al que queremos acceder. Mecanismo de Segme ntacin:

Recibe la direccin lgica, con el siguiente esquema: Selector::Desplazamiento. El Selector nos dar el Descriptor del Segmento, con el que iremos a la tabla de segmentos. LA entrada de la tabla ocupar 64 bits, repartidos: 63 ATRIBUTOS 51 TAMAO 31 DIRECCIN BASE 0

Si est activada la paginacin el tamao del segmento indicado por la entrada podra llegar a las 220 pginas , lo cual equivaldra a 4 Gb (ya que cada pgina ocupa 4Kb). Obviamente, el tamao mnimo sera de 1 pgina, es decir, 4 Kb). Los atributos controlan aspectos como el nivel de acceso permitido (escritura, lectura o ejecucin) y su campo ms importante es el campo DPL (Descriptor Privilege Level) que nos indica el nivel de privilegio del segmento. A las tablas de segmentos accedemos gracias a los registros GDTR o LDTR, que almacenan las direcciones de la GDT o la LDT respectivamente. Adems, para evitar tener que ir a la DT cada vez que realizamos un acceso a memoria, se tiene el Registro de Sombra, de 64 bits, que almacena el valor del descriptor al que se accedi. Adems, no todos los registros de segmento se usan con el mismo fin. As, para acceder a una instruccin solo se usa el registro CS (Code Segment). Para acceder a datos dinmicos, que se guardan en

16

la pila, usamos el SS (Stack Segment). Para acceder a datos estticos se usan DS, ES, FS y GS, aunque de forma prioritaria se usa DS. Si queremos usar otro distinto, habr que indicarlo de forma explcita al programar en ensamblador: MOV EAX, FS:[ESI]. Se ve aqu el principal problema de la segmentacin, no es transparente al programador. Es una labor demasiado complicada llevar el control de todos los registros de segmento, por lo que se suele reducir la segmentacin, usando el denominado modelo de memoria plano. Este modelo consiste en: Usar solo la GDT. Usar el mnimo nmero de descriptores, 4. Todos los descriptores tienen como direccin base 0000 0000h y como tamao 4 Gb.

Con esto logramos que el desplazamiento de la direccin lgica sea la direccin lineal. A cambio de esa sencillez renunciamos al control de privilegios y la proteccin que ofreca este mecanismo, ya que, al tener direccin base 0000 0000h, cada segmento ocupa todo el espacio de direcciones posibles (excepto en sistemas con mas de 4 Gb de memoria) lo que le permitira escribir en cualquier zona de memoria. Para evitarlo haremos uso del mecanismo de paginacin, que veremos de manera ampliada en el tema de la memoria. Un esquema del modelo de memoria es:

Espacio Direcciones Lgicas

R. Segmento

Desplazamiento

Mecanismo De Segmentacin Espacio Direcciones Lineales

D. Lineal

Espacio Direcciones Fsicas

Mecanismo De Paginacin

D. Fsica Como vimos, la arquitectura IA -32 hace uso de unos niveles de privilegio. Los hemos visto tanto en los selectores como en el registro EFLAGS. IA-32 define 4 niveles de privilegios: Nivel 0: Kernel del SO. Niveles 1 y 2: Servicios del SO. Nivel 3: Aplicaciones de Usuario.

Los Sistemas Operativos comerciales, como Windows o Linux, prescinden de los niveles 1 y 2. Los niveles de privilegio hacen su aparicin en:

17

RPL: 2 bits en el Selector de Segmento. En el selector CS se denomina CPL (Current Privilege Level) y marca el privilegio del programa que se est ejecutando. DPL: 2 bits en la entrada de la DT. Establece quien puede acceder al segmento referenciado por el descriptor. IOPL: 2 bits en EFLAGS. Marcan el nivel de privilegio necesario para acceder al espacio de direcciones de entrada/salida. Para acceder a dicha zona se hace uso de las instrucciones IN y OUT. Linux y Windows tienen el IOPL a 0, evitando que cualquiera que no sea el Sistema operativo tenga acceso al espacio de direcciones de entrada/salida.

Tambin se han realizado cambios en la transferencia de control en una llamada al Sistema Operativo. Los 15 pasos de la transferencia de control comienzan con la instruccin INT 2Eh en un programa, usado para llamar a la mayora de los servicios. En este momento el programa se ejecuta en modo usuario, (con CPL = 3).

Paso 1: Nmero de Interrupcin


En primer lugar se obtiene cierta informacin acerca del tipo de transferencia. Se obtiene el nmero de interrupcin, que ser el nmero de puerta en la IDT (Interrupt Dispatch Table). Segn el tipo se obtiene de una manera distinta. Excepciones: Se obtiene del procesador. Interrupciones: Se obtiene del controlador de interrupciones. Servicios del Sistema Operativo: Se obtiene en la instruccin (INT 2Eh).

Paso 2: Direccin de la puerta


Se calcula mult iplicando por 8 el nmero de interrupcin y agregndole la direccin base de la IDT. As, en INT 2Eh: (2Eh * 8) + IDT= (46 * 8) + IDT = 368 + IDT = 170h + IDT

Paso 3: Obtencin de la puerta


Una vez que tenemos la direccin de la puerta la leemos. Leemos los atributos en los dos primeros bits y se comprueba que se tienen los privilegios suficientes para ejecutar la llamada. A continuacin leemos el nuevo selector, para poder acceder a la zona del cdigo a ejecutar. Elevamos el CPL a 0 (para tener permiso de ejecucin de un segmento del Sistema Operativo) y se comprueba con el RPL del nuevo selector y el DPL del descriptor. Si las comprobaciones son exitosas pasamos al siguiente paso.

Paso 4: Conmutacin de las pilas


SS y ESP se guardan de manera temporal en unos registros especializados de la C y se PU sobrescriben con los valores correspondientes al Sistema operativo. Una vez que est activada la pila del Sistema Operativo se guardan los antiguos SS y ESP que se haban guardado en los registros especiales.

Paso 5: Desactivar las interrupciones


Se ponen los bits IF y TF de EFLAGS a 0, para evitar interrupciones y excepciones de depurador.

Paso 6: Transferencia de control al manejador


Se coloca en CS y EIP los valores de comienzo del manejador.

18

As, CS se obtiene del selector que extrajimo s de la IDT y el EIP de la parte de desplazamiento de la IDT. Pero antes de eso hay que guardar los valores antiguos, junto con el registro EFLAGS, para poder retornar a la anterior ejecucin.

Paso 7: Comienzo de ejecucin del cdigo del manejador Paso 8: Guardar estado de la tarea
No tenemos porque volver a la misma tarea tras la interrupcin (imaginemos una planificacin de procesos), as que no valdr con guardar los registros en la pila, as que el Sistema operativo los desafila y los guarda.. Se guardan en ciertas estructuras de datos del Sistema operativo.

Paso 9: Ejecucin del manejador Paso 10: Planificacin de procesos Paso 11: Preparacin de la nueva tarea
La informacin se extrae del mismo sitio en que el Sistema operativo lo guard, el PCB, y lo apila.

Paso 12: Se ejecuta IRET


Es la ltima instruccin del manejador. As se restauran CS, EIP, EFLAGS, SS y ESP, dando el control a la tarea.

Paso 13: Se conmuta la pila de nuevo Paso 14: Continua la ejecucin de la tarea

19

TEMA 3 LA JERARQUA DE MEMORIA


Apartado 3.1

Introduccin

Es el apartado de la Arquitectura Von Neumann que ms cambios sufre para soportar la multitarea, si bien se mantiene su principal funcin, servir de almacn. Las caractersticas ideales de una memoria son: Gran Capacidad: Ya que al aumentar la capacidad aumenta el nmero de procesos que se pueden cargar. Rapidez: En la CPU Terica un acceso a memoria equivala a un ciclo, pero al hacerse ms corto el ciclo (por aumentar la frecuencia) el acceso tardar ms ciclos, que sern un despilfarro de tiempo. Hay una frmula que ilustra este concepto, que calcula la frecuencia real a la que est trabajando un procesador:

FrEf =

TRELOJ

1 . + TMemoria * AccesosMemoria

Segn esta frmula, un procesador a 1 GHz, con una memoria cuyo tiempo de acceso sean 60 ns y un 25% de accesos a memoria trabaja, en realidad, como un procesador a 62,5 MHz.

Apartado 3.2 Concepto de Jerarqua de Memoria


Al construir un Sistema de Memoria se persiguen 3 objetivos muy claros: alta velocidad, alta capacidad y bajo coste. Para esto se necesita que se cumplan dos aspectos bsicos: Las memorias rpidas y pequeas deben contener los datos que ms probabilidad de acceso tengan. Las memorias lentas y grandes deben contener los datos con menor probabilidad de acceso.

Pero esto solo se puede conseguir si: Conocemos a priori los datos con mayor probabilidad de ser accedidos, para almacenarlos en las memorias rpidas. Estos datos son pocos y su probabilidad de ser accedidos es muy alta.

No podemos conocer el futuro, pero nos podemos aproximar bastante si usamos el Principio de Localidad.

Sub-Apartado 3.2.1 Principio de Localidad


Este principio se ha observado en la ejecucin de los programas por parte de cualquier Cpu y es muy importante, tanto a la hora de disear el Sistema de Memoria como a la hora de elegir las polticas de gestin de memoria que seguir el Sistema Operativo. Prinicipio de Localidad Espacial: Si se accede a una posicin de memoria en un momento dado, es probable que poco despus se acceda a una direccin de memoria cercana. Ejemplos: Ejecucin secuencial de programas, acceso a datos de un array Principio de Localidad Temporal: Si se accede a una posicin de memoria en un momento dado, es probable que poco despus se acceda a esa misma posicin de memoria. Ejemplos: Ejecucin de bucles, variables contador

20

Sub-Apartado 3.2.2 Tecnologas de Memoria


Almacenamiento Magntico: o Es la de coste ms bajo (un disco de 120 GB puede costar 130 , unos 0,00108

MB ).

o Es la de mayor capacidad (son normales los discos de 120 GB). o Su tiempo de acceso es el mayor (del orden de unos 10 ms). DRAM: o Es sensiblemente ms cara que el almacenamiento magntico (unos 512 MB pueden costar unos 108, unos o o SRAM o o o

0,21 MB ).

Su capacidad est lejos de la de los discos magnticos (lo normal son 512 MB, aunque se empieza a hacer accesibles los sistemas de 1 GB). Su tiempo de acceso es unas 1000 veces menor (del orden de 10 ns) Es la ms cara de todas (el precio ronda los 100

MB ).

Por su precio, la capacidad est muy reducida (lo normal suelen ser 256 KB). Su tiempo de acceso es el menor de todos (ronda los 0,5 ns).

Sub-Apartado 3.2.3 Niveles de Memoria


El sistema de memoria se puede representar de la siguiente manera:

NIVEL 3

DISCO Bloques grandes (4KB)

Almacenamiento Magntico

NIVEL 2

MEMORIA PRINCIPAL Bloques pequeos (64 bytes)

Tecnologa DRAM

NIVEL 1

MEMORIA CACHE Dato (1byte) CPU

Tecnologa SRAM

Aunque se trata de una representacin muy esquemtica y se puede modificar. Por ejemplo, la memoria cach se puede dividir en varios subniveles de cach. Esta divisin en niveles implica que un fallo en el nivel N provocar ir a buscar el dato al nivel N + 1. De este nivel se copia el bloque de transferencia al nivel N y entonces se realiza el acceso. La unidad que se transfiere de un nivel a otro contiguo es el bloque. Como se ve en el esquema, el tamao del bloque no tiene porque ser el mismo en todos los puntos de la jerarqua.

Apartado 3.3 Memoria Cache


Es una pieza muy importante dentro de la jerarqua de memoria..

21

Sub-Apartado 3.3.1 Conceptos Preliminares


La cache es el primer nivel de memoria de la jerarqua de memoria, construida con tecnologa SRAM, de rpido acceso, pequeo tamao y elevado precio. De esta manera, cuando la CPU solicita un dato lo hace a la memoria cache. sta sirve el dato, si lo tiene, y sino lo solicita al siguiente nivel de memoria y cuando lo recibe lo enva a la CPU. La memoria cache se organiza en bloques, grupos de posiciones de memoria consecutivas, que denominamos palabras de memoria. Lo que la memoria cache recibe del siguiente nivel de memoria es un bloque de datos. Para la cache, la m emoria principal no es ms que un almacen de bloques, de manera que toda direccin se ve dividida en dos campos: Ndebloque::Desplazamiento. Aspectos importantes dentro de esta memoria cache son las 3 estrategias que ser necesario planificar: Estrategia de Correspondencia: Qu bloque se trae a cache? Cmo s que bloque de cache es qu bloque de Memoria Principal? Dnde coloco el nuevo bloque? Estrategia de Reemplazo: Qu bloque quito para poner otro? Estrategia de Escritura: Qu sucede si la CPU modifica la cache?

Sub-Apartado 3.3.2 Estrategia de Correspondencia


Hay 3 tipos de correspondencia: Correspondencia Directa:

Es la ms simple. Solo se hace uso de una frmula:

BloquedeCache = ( BloquedeMP) MOD ( N BloquesCache )


Normalmente el nmero de bloques de la cach es potencia de dos, as que el bloque vendr fijado por los bits menos significativos del bloque de Memoria Principal. Pero una memoria cach no tendr el mismo nmero de bloques que la principal, por lo que habr veces que dos bloques se deban introducir en el mismo hueco. Por ello se reservan los bits ms significativos a modo de etiqueta, que nos permita reconocer si el bloque que estamos leyendo es el que buscamos. Una direccin de 8 bits, con una cache de 8 bloques de 4 posiciones, tendra el siguiente esquema:

Etiqueta

Nmero de Bloque

Desplazamiento

As, en un acceso a memoria, se accede al bloque indicado por los 3 bits correspondientes. En caso de estar vaco, se va a Memoria Principal, para traer el bloque a cache. Si no est vaco, se debe comprobar la etiqueta. Si no es la misma, se va a Memoria principal a traer el bloque pedido. Si es la misma etiqueta, se sirve el dato. En la cach, adems, tendremos un bit ms para saber si la informacin contenida en cada bloque es vlida, ya que puede estar llena de datos bas ura.

22

Correspondencia (totalmente) asociativa

En este modelo ningn bloque ocupa una posicin especfica, por lo que toda la direccin excepto el desplazamiento se convierte en la etiqueta. Esto dota de mucha ms versatilidad a la memoria cache, ya que en la anterior correspondencia podramos tener un solo bloque ocupado y sin embargo tener que cargarlo con otro bloque, mientras que en sta, se cargara en otro espacio. Sin embargo, provoca que se tengan que hacer n comparaciones, en lugar de una sola.

Correspondencia asociativa por conjuntos

sta es una idea intermedia entre las anteriores correspondencias, que trata de aprovechar los beneficios de ambas correspondencias.

23

Lo que haremos ser definir en la cache unos conjuntos, es decir, grupos de bloques. Entonces aplicaremos correspondencia directa para escoger uno entre todos los conjuntos y correspondencia asociativa para escoger la posicin del bloque dentro del conjunto. As, contaremos con bit para indicar el desplazamiento dentro del bloque, bits para poder elegir el conjunto y bits de etiqueta para poder identificar los bloques dentro de los conjuntos.

Sub-Apartado 3.3.3 Estrategias de reemplazo


Hemos visto, sobre todo en correspondencia directa, que puede ocurrir que tengamos que quitar un bloque de cache para meter otro. Surge ahora la pregunta de qu bloque quito para meter el nuevo? En la correspondencia directa no hay tal problema, ya que cada bloque tiene un lugar exacto en el que insertarse, pero en la correspondencia (totalmente) asociativa el problema es importante. En esta correspondencia, no hay lmite a la hora de colocar el bloque en una posicin u otra, por lo que deberemos escoger una de entre todas. En la correspondencia asociativa por conjuntos el problema surgir dentro de cada conjunto, ya que el conjunto se elige de manera unvoca, pero la va (el hueco) dentro de cada conjunto no. Estos problemas se solucionan mediante la implementacin de algoritmos de reemplazo. Los principales son: LRU (Least Recent Used): Elimina el bloque que no se usa desde hace ms tiempo. Reemplazo Aleatorio: Este algoritmo nos podra parecer malo, pero nos da muy buenos resultados. Es obvio que algoritmos como LRU, ms complejos, nos darn mejores resultados, pero requerirn informacin, a nivel de hardware, que hace que su complejidad crezca demasiado. El reemplazo aleatorio, por el contrario, es mucho ms simple y est probado que da resultados parecidos.

Sub-Apartado 3.3.4 Estrategias de escritura

24

Sabemos que, e ocasiones, podemos modificar la memoria, ya que no solo hay operaciones de lectura. Ante esas operaciones de escritura, el procesador modificar la cach, por lo que se producir un problema de incoherencia entre los datos de la cache y los de la Memoria Principal. As, hay varias estrategias: Escritura Directa (Write -Through): La Memoria principal se modifica a la vez que la cache. Escritura Diferida o post-Escritura (Write -Back): La memoria no se modifica al hacerlo la cache. En lugar de eso, se espera a que el bloque sea reemplazado. Esta poltica es ms provechosa, pero implica tener que aadir informacin adicional para saber si el bloque se ha modificado, el llamado bit de dirty.

Sub-Apartado 3.3.5 El Problema de la Coherencia


Ya hemos visto que se produce cuando la cache se modifica y queda con datos distintos a los de la Memoria Principal. Puede parecer resuelto con el bit de dirty, pero debemos tener en cuenta que la CPU no es la nica que accede a memoria. Esto ocurre con los perifricos: Perifricos mapeados en memoria: Estos perifricos reservan parte del espacio de direcciones de memoria para su uso. Esto provocar que, por ejemplo, un teclado lea una pulsacin y la almacena en memoria principal, de manera que el dato cacheado es distinto al actual, ya no sirve. Perifricos con capacidad DMA: Estos perifricos son ms problemticos an. Acceden a memoria sin que el procesador lo sepa, por lo que pueden modificar memoria cacheada o leer memoria que ha sido modificada en la cache.

La solucin general es aplicar la tcnica de snooping, consistente en que el controlador de cache observe continuamente las lineas de control de lectura y escritura en memoria principal y las lneas del bus de direcciones. De esa manera se actualizarn los bloques de Memoria Principal. Normalmente este problema se resuelve actualizando los bloques que se leen o escriben.

Sub-Apartado 3.3.6 Organizacin de la Memoria Cach


Los aspectos bsicos en organizacin de la cach son: El nmero de niveles. La diferenciacin entre la cach de datos y la cach de cdigo.

Normalmente la cach tiene dos niveles, que se denominan L1 y L2. De esta manera se gana en capacidad, pero se pierde en tiempo de acceso. As mismo podemos diferenciar entre: Cach Unificada: Cach donde no se diferencia entre zona de datos y de cdigo. Presenta la ventaja de que los bloques se aprovechan al 100%, usndose para datos o cdigo. Cach Dividida: Separa la memoria en 2 partes, la cach de cdigo y la cach de datos. Aunque as se no se asegura un aprovechamiento del 100% del espacio, ya que pueden quedar bloques vacos en alguna zona.

Los primeros computadores usaban memoria cach unificada, pero ahora los computadores usan cach dividida. Puede parecer un error, ya que no se aprovecha bien la cach, pero as se facilita la ejecucin segmentada, vista anteriormente, al permitir hacer accesos a cdigo y datos de manera simultnea.

25

Sub-Apartado 3.3.7 Memoria Cach en la Arquitectura IA-32


Los procesadores disponen de dos niveles de cach, L1 y L2. La memoria L1 es una cach dividida, cuyas partes usan una estrategia de correspondencia asociativa por conjuntos. La memoria L2 es una cach unificada. Adems, la cach est dentro del procesador, para disminuir la distancia y aumentar el tiempo de respuesta.

Apartado 3.4 Memoria Principal


Es el siguiente nivel en la jerarqua de memoria.

Sub-Apartado 3.4.1 Coste Temporal de un Fallo de Cach


Cuando el procesador solicita un dato a la cach y no lo encuentra en la misma se produce un fallo de cach. En ese caso se debe buscar el dato en Memoria Principal. La comunicacin entre la Memoria Principal y la memoria Cach se realiza en bloques de X bytes a travs de un bus da datos de Y bytes. Esos dos parmetros marcarn el nmero de accesos necesarios (y por tanto, el tiempo necesario) para traer un dato de Memoria Principal a Cach. El proceso de transferencia tendr lugar en 3 pasos: 1. 2. 3. El controlador de Memoria Cach enva a la Memoria Principal la direccin del bloque a leer. Se busca el dato diseccionado en la Memoria Principal. Se transmiten los datos desde la memoria Principal a la Memoria Cach a travs del bus de datos.

Sub-Apartado 3.4.2 Coste temporal de la actualizacin de un bloque de Memoria Principal


Como hemos dicho al hablar de la Memoria Cach, la Memoria Principal se debe actualizar de tiempo en tiempo. Pero Cundo deberemos actualizar un bloque de Memoria Principal? Como ya vimos, hay dos polticas a la hora de actualizar un bloque modificado en la cache (escritura directa, write-through, o diferida, write-back ), pero adems puede surgir que, sin necesidad de reemplazo, un perifrico acceda a un bloque modificado en la cach, por lo que debemo s actualizar el bloque de Memoria Principal antes de servir el dato. El proceso de escritura de un bloque en Memoria Principal tambin consta de tres etapas: 1. 2. 3. El controlador de cach enva la direccin donde escribir a travs del bus de direcciones. Se transmite a travs del bus de datos la informacin a almacenar. Se escribe el dato enviado en la memoria.

Sub-Apartado 3.4.3 Mejoras en la Organizacin de la Memoria Principal


Como sabemos, unos de los objetivos es mejorar los tiempos de acceso, por lo que en la Memoria Principal, nuestro objetivo es el mismo. Pero cmo mejoramos los accesos a memoria Principal?

26

Una opcin, que tambin surgi al hablar de las mejoras en la CPU, es mejorar la tecnologa de la Memoria Principal, haciendo las celdas de memoria ms rpidas. Pero, al igual que ocurra al hablar de la CPU, este aspecto queda fuera del tema que se toca en la asignatura. Por eso mismo estudiaremos la otra opcin mejorar la organizacin. Para ello nos basaremos en el principio de localidad, tanto espacial como temp oral ya que, al transferirse bloques de informacin de Memoria Principal a Cach, se podrn aprovechar mejor. Tambin habr que tener en cuenta los dispositivos fsicos de la memoria, que se encuentran organizados en grupos (bancos, chips). Trabajaremos sobre un ejemplo: Disponemos de dos bancos (A y B) de memoria. Los bloques que transferimos son de 32 bytes y el bus de datos es de 8 bytes. Para leer las direcciones F000 0000 a F000 001F, con direccionamiento al byte, tendremos que leer 32 bytes, es decir, un bloque de memoria. El coste temporal para la operacin de lectura se dividir segn la etapa de la siguiente manera: 1. 2. 3. 1 ciclo. 3 ciclos. 1 ciclo. Caso 1: Memoria no entrelazada

En este caso, los bancos de memoria contienen informacin independiente. Para acceder a los datos, que hemos de mandar de 8 en 8 bytes por el tamao del bus, ser necesario ejecutar todos los ciclos de lectura de manera lineal, por lo que no hay ninguna mejora:

Caso 2: Memoria entrelazada

En este caso los bancos de memo ria se organizan de manera que los bloques de informacin se intercalan entre los dos bancos.

Con esto conseguimos que las dos primeras etapas se puedan llevar a cabo simultneamente, si bien para la tercera fase, la transmisin de los datos por el bus, har falta desaprovechar ciclos, ya que el bus no se puede ocupar con 2 datos de 8 bytes simultneamente.

27

As, con dos dispositivos hemos logrado dividir el tiempo necesario casi a la mitad. Si seguimos aadiendo n dispositivos se dividir entre n el tiempo de acceso? En teora debera ser as (siempre que se puedan atender las dos primeras fases n veces), pero en la prctica no es as. Caso 3: Ampliacin de Bus de Datos.

Si doblamos la capacidad del bus de datos, pasando de 8 a 16 bytes, permitiremos que las terceras etapas de cada operacin se puedan hacer de manera simultnea.

El problema de esta solucin es el coste que conlleva. No solo se trata de los materiales, sino del principal problema de los procesadores, las patillas o conectores. Al aumentar los cables, stos comenzarn a emitir ondas de radio que influirn en los dems cables, provocando un mal funcionamiento. Caso 4: Acceso mediante rfagas

Esta solucin consiste en eliminar la primera etapa de la operacin de lectura. Se necesita que la memoria sea suficientemente inteligente como para poder generar por s mismazas direcciones siguientes. Con memoria entrelazada ser:

28

Apartado 3.5 Memoria Virtual

Sub-Apartado 3.5.1 Introducin


La Memoria Virtual no es una tecnologa, sino una tcnica que permite que la Memoria Principal acte como cach de dispositivos de almacenamiento secundario, generalmente discos duros, tercer escaln de la jerarqua de memoria. La CPU trabaja con direcciones lgicas, que son todos los valores que se pueden formar con los registros, que en el caso de IA 32 son de 32 bits. Ese conjunto de direcciones lgicas da lugar a un espacio de direcciones lgicas. Pero la CPU no es consciente de la memoria de que disponemos, as que alguien tendr que encargarse de adaptar las direcciones a la cantidad de memoria que tenemos. Esas direcciones adaptadas son las direcciones fsicas, que en conjunto forman el espacio de direcciones fsicas, el conjunto de direcciones permitidas por la memoria. La parte encargada de esa traduccin es la MMU (Memory Managment Unit). Sin embargo, cada tarea va a disponer de 4 GB de direcciones lgicas, pero no podemos darle 4 GB de memoria a cada tarea. Adems, las direcciones lgicas de tareas distintas no deben machacarse en memoria. Normalmente solo hay una MMU en cada ordenador, sin embargo, en la arquitectura IA-32 hay dos MMUs, ya que hay varias traducciones (de las direcciones lgicas se pasa a direcciones lineales, y de ah a las direcciones fsicas). La MMU funciona haciendo uso de una tabla de traduccin, que se encarga de indicar la direccin fsica que le corresponde a una direccin virtual. Para que no haya conflictos cada tarea tendr su propia tabla de traduccin. Gracias a la Memoria Virtual, esas direcciones que obtenemos en la MMU pueden apuntar a memoria principal o Disco.

Sub-Apartado 3.5.2 Objetivos de la Memoria Virtual


Ampliacin de la capacidad de memoria

Como ya dijimos, cada tarea va a necesitar 4 GB de memoria fsica, lo que es inviable. As pues, usaremos cierta zona del disco como una zona de memoria ms. Esa zona recibe nombres variados (archivo de paginacin, rea de swap). Adems, en Windows, la zona de paginacin no es nica, ya que los archivos ejecutables actuan como ficheros de paginacin, ya que ser estpido cargar en otra zona de disco un cdigo ya presente en disco. Proteccin de memoria

Gracias a la propia tabla de traduccin podremos evitar que se repitan direcciones fsicas en distintas tareas, eliminando los riesgos de intrusismo. Para ello la tabla de traduccin debe estar bien programada En las tablas tambin se pueden aadir unos bits que se encarguen de controlar los privilegios de acceso. Comparticin de memoria

Puede parecer contradictorio con el anterior, ya que fomenta el solapamiento de las tareas.

29

Pero es muy til cuando se quiere que dos tareas compartan una zona de memoria o cuando ejecutan un miso cdigo (como es el caso de las DLLs) Para evitar problemas de seguridad, esta comparticin debe estar bien implementada y controlada por el SO. Simplificacin de herramientas de desarrollo y carga.

El programador, el compilador y el enlazador no tendrn que preocuparse en absoluto de la memoria, ya que el programa tan solo trabaja con direcciones virtuales. Ser el Sistema operativo el que se encargar de cargar el programa atendiendo a las condiciones de la memoria, rellenando la tabla de traduccin.

Sub-Apartado 3.5.3 Estrategias de memoria Virtual


Pero hay un gran problema. Para un espacio de direcciones de 4 GB, como el de la arquitectura IA-32, la tabla de traduccin necesitar 4G entradas, por lo que es inviable que se cargue en memoria. Lo que se hace entonces es agrupar las distintas direcciones en bloques, de manera que cada bloque tiene una entrada en la tabla de traduccin y sta se hace ms pequea y manejable. Ahora habr que elegir el tamao de bloque, pero antes habr que decidir si es mejor que ste sea fijo o variable. Haciendo un bloque de tamao variable aprovecharemos mejor la memoria, permitiendo dar a cada tarea lo que necesita. Pero la gestin del So se ver muy com plicada y se podra llegar a producir fragmentacin externa Sin embargo, un tamao fijo implicar usar el nmero de bloques necesarios para cada tarea, aunque se puede desperdiciar mucha memoria. En la estrategia de paginacin se usa un tamao fijo (4 KB en el caso de Linux), mientras que en la estrategia de segmentacin se usa un tamao variable. Esto dar lugar a la Memoria Virtual Paginada o Segmentada. La Memoria Virtual Segmentada de la arquitectura IA-32 nos ofrece un espacio de direcciones segmentado de 64 Terabytes. Sern necesarios 46 bits para direccionar esos 64 Terabytes, 32 de los cuales se usan para el desplazamiento e el segmento, 13 para la entrada en la tabla de descriptores de segmento y otro ms para escoger la tabla a usar (GDT o LDT). Sin embargo, como ya vimos al hablar de los registro de la CPU, es muy complicado gestionar esta segmentacin ya que no es transparente al programador. Adems, hace muy ineficiente al Sistema Operativo. En la Memoria Virtual Paginada el bloque tendr un tamao de 4 KB, lo que nos da 4 GB de espacio de direcciones lgicas. A diferencia de la anterior, esta tcnica es totalmente transparente al programador, que no interviene en el troceo del programa en pginas. Adems, el Sistema operativo lo tendr mucho ms fcil para hacer esta gestin y usar la memoria eficientemente.

Sub-Apartado 3.5.4 La Memoria Virtual Paginada


Pgina.

Con esta estrategia se divide la direccin virtual en dos campos: N Pgina Virtual Desplazamiento

De manera anloga a lo que hacamos en cache

30

El tamao de la parte de desplazamiento marca el tamao de la misma. En caso de IA-32 es de 12 bits, lo cual quiere decir que el tamao de la pagina ser de 4 KB. La direccin 00002A10 marca un desplazamiento A10 en la pagina 2. Marco.

Igualmente, la direccin fsica se va a dividir en otros dos campos: N Marco Desplazamiento

Si bien esta direccin puede variar en tamao respecto a la direccin virtual. Lo nico que ha de respetarse es que el tamao del marco sea igual al de la pgina. Para eso, los bits de desplazamiento deben ocupar lo mismo en las dos direcciones. Tabla de Pginas.

Una parte importante ser entonces la Tabla de Pginas. La Tabla de Pginas es la estructura encargada de transformar las direcciones virtuales en fsicas, sustituyendo el nmero de pgina virtual por el nmero de marco, que puede estar en memoria principal o secundaria. Para cada tarea habr una Tabla de Pginas, cargada en memoria y gestionada por el Sistema operativo. La direccin de la Tabla de Pginas se obtiene por hardware, ya que un registro especial de la CPU se encarga de direccionar la del proceso que se encuentra en ejecucin. Cada entrada de la Tabla de Pginas tiene unos campos: Bit de Presencia: indica si est en Memoria Principal. Marco de Pgina / Desplazamiento: Si la pgina est en Memoria Principal indica su direccin. Sino, indica el desplazamiento dentro del archivo de paginacin. Tambin puede dar un valor invlido, indicando que la pgina no est usando esa parte del espacio de direcciones y que no se puede usar. Bit de Proteccin: Indica quien puede acceder a la pgina. Bits de Estado: Indican si la pgina se ha modificado, cuando se accedi por ltima vez Ubicacin de programas

De esta manera se consigue que los programas tengan libertad a la hora de la carga en memoria. As, al compilar y enlazar un programa se llega a un cdigo maquina y unas instrucciones de carga. En el programa:

Float var[1500]; main(){ int i; for (i=0; i < 1500; i++){ var[i]=0; } } Hay pginas para datos locales y otras para datos globales. As, el array se guardar en pginas aparte (32 bits * 1500 elementos = 6 KB, 2 pginas), las instrucciones ocuparn una pgina y la i otra pgina. El proceso ocupar 4 pginas.

31

Adems, faltaran pginas para la llamada a la funcin main() y el retorno de la misma. Comparticin de memoria

Las tareas suelen realizar llamadas a servicios del Sistema Operativo, de hecho, la llamada al proceso main() ya conlleva un servicio del Operativo. Esto provoca que dentro del cdigo de cualquier tarea aparezcan zonas de cdigo correspondientes al sistema operativo. Adems, puede haber casos en los que procesos compartan zonas de cdigo o datos. Esas pginas pueden aparecer en todas las tareas cargadas, por lo que estarn repetidas en los espacios de direcciones virtuales, pero en el espacio de direcciones fsicas no se deben repetir, puesto que supondra un despilfarro de memoria.

Esta tcnica puede dar numerosos problemas de coherencia, al estar repetido el mismo marco en diversas tablas de pginas, y exige una buena programacin de las tablas. Proteccin de memoria

La paginacin tambin permite proteccin a 3 niveles distintos: Programacin adecuada de las Tablas de Pginas: Lo que se consigue as ser una total independencia de los espacios de direcciones de unos procesos a los de otros, ya que un proceso no acceder a zonas de otro. Bits de Tipo de Acceso: Estos bits nos indicarn si la pgina est disponible para lectura, escritura o ejecucin. Evitaremos as la escritura en zonas del Sistema operativo, o incluso la modificacin de cdigo de un programa durante su ejecucin. Niveles de Privilegio: Al igual que en la CPU, el ordenador har uso de los distintos niveles de privilegio para permitir el acceso a las distintas pginas.

Por otra parte, en IA-32 los procesos no tendrn a su disposicin todo el espacio de direcciones virtuales, sino que solo dispondrn de los 2 GB menos significativos (0000 0000 7FFF FFFF), mientras que los 2 GB restantes se colocarn cdigo y datos del Sistema operativo. De hecho, los 64 KB menos significativos se reservan para comprobacin de punteros nulos y no son usados por el proceso.

32

El TLB

Hemos visto los fundamentos de la paginacin, pero cul es su rendimiento? Esta tcnica implica dos acces os a memoria por cada acceso deseado, el primero para acceder a la entrada de la tabla de pginas asociada a la pgina que se desea acceder y el segundo para acceder a la direccin extrada de la tabla de pginas. As, esta tcnica nos disminuye demasiado el rendimiento de la memoria. Para evitar esto haremos uso del Principio de Localidad y haremos uso de una memoria cach especial, el TLB (Translation Lookaside Buffer), que se dedica a almacenar las entradas de la tabla de pginas ms recientemente usadas. La gestin del TLB se puede realizar por hardware, ganando en rendimiento, pero como esa ganancia no es demasiado alta se deja en manos del Sistema operativo, lo que permite flexibilizar la gestin. La gestin necesaria (gestin de reemplazo, de carga, de invalidez de entradas..) harn necesaria la creacin de instrucciones especiales. Pero el TLB no es una solucin ideal. 1) TLB y Cambios de Contexto: Habamos dicho que un registro se encarga de almacenar la direccin fsica de la tabla de pginas en ejecucin. Pero esto implica cambiar el contenido del registro en cada cambio de contexto. Adems hay que invalidar las entradas de la TLB que corresponden a la tarea saliente y sustituirlas por pginas nuevas. Esto conlleva una carga y descarga de la tabla que carece de sentido, sobre todo si la primera tarea entra a ejecutarse de nuevo inmediatamente. Para solucionar este problema lo que se hace es aadir bits a la entrada del TLB, encargados de identificar a las tareas. As, cuando la nueva tarea busque sus pginas no coger la de otras tareas, que no tendrn porque descargarse sino se requiere un reemplazo. Esto permitir identificar tambin pginas pertenecientes al Sistema Operativo, comunes a las tareas, que rara vez se descargarn. El problema es que se hace necesario gestionar los reemplazos. Hay que tener en cuenta que el TLB se pasar casi el 100% del tiempo lleno, por lo que la poltica usado no debe ser demasiado ineficiente (normalmente es el LRU) y el tamao del TLB debe ser significativo. 2) TLB y Cach: Hemos simplificado la situacin y hemos carecido de la memoria cach, pero no podemos olvidarnos de ella, ya que existen. Lo que ocurrir entonces es que a los dos accesos a la Memoria Principal se aaden los dos accesos a la Memoria Cach, que si bien son rpidos, hacen ms lento el proceso. Ahora bien. Si ya guardamos las pginas en el TLB necesitamos guardarlas en la cach? En realidad s, ya que de esta manera el TLB y la cach actuarn a modo de cach dividida y permitirn accesos en paralelo. 3) Traduccin de direcciones: A la cach normal se accede con direcciones fsicas, pero al TLB se hace con direcciones virtuales, por lo que la traduccin se debe hacer directamente sobre el TLB. Esto se podra solucionar si se construyera una cach que trabajara con direcciones virtuales, pero surgiran problemas, ya que datos con direccin virtual distinta acabaran teniendo la misma direccin fsica. Este problema se conoce como problema de los sinnimos o antialiassing. Fallo de pgina

El fallo de pgina se produce cuando la direccin virtual que se genera de una pgina no est almacenada en memoria fsica.

33

El fallo de pgina se detecta de manera muy sencilla por hardware, ya que la MMU al buscar la direccin virtual se encontrara con una entrada en la tabla de pginas que tiene el bit de presencia en memoria Principal a 0. Se llamar entonces al Sistema Operativo, que por medio de su manejador de fallo de pgina tratar de arreglarlo. El manejador determinar la causa del fallo (que se puede deber a que la pgina sea invlida o a que la pgina est en disco), para ello buscar en la entrada de la tabla de pginas. Si la causa es que la pgina es invlida se lanzar una excepcin de violacin de acceso a memoria y el programa se terminar. Si la pgina se encuentra en disco se producir una excepcin de pgina virtual en disco. Entonces habr que llevar la pgina en disco a Memoria Principal. Para llevar la pgina a memoria habr que comprobar si tiene espacio. Aqu se usa el concepto de Conjunto de Trabajo que es el nmero de pginas de memoria fsica que se asigna a un programa. Si en el Conjunto de Trabajo hay espacio entonces se pasa la pgina a memoria fsica directamente. Pero esto no suele ocurrir, por lo que habr que usar un algoritmo de reemplazo para hacerle sitio. Normalmente, el algoritmo es el LRU. Tras decidir la pgina a quitar se comprueba si sta ha sido modificada. Si ha sido modificada se guardar en disco antes de llevar a cabo el reemplazo. Sino simplemente se reemplazar. El reemplazo se completa poniendo el bit de presencia a 0 en la entrada de la tabla de pginas y almacenando el desplazamiento dentro del fichero de paginacin en el que se guarda la pgina.

Sub-Apartado 3.5.5 Paginacin en IA-32


Espacio de Direcciones

En IA-32 contamos con 3 espacios de direcciones distintos: Espacio de direcciones Lgicas o Virtuales: Las direcciones lgicas se forman de dos partes, un selector (de 16 bits) y un desplazamiento (de 32 bits). Esto hace que se puedan direccionar hasta 64 TBytes en compartimentos de 4 GBytes denominados segmentos. Espacio de direcciones Lineales: Es una direccin de 32 bits que permite direccionar hasta 4 GBytes. Espacio de direcciones Fsicas o Reales: Es una direccin de 32 bits que permite direccionar hasta 4 GBytes de la memoria real del ordenador. Los 4 GBytes es una limitacin impuesta por los buses del sistema.

La segmentacin no se usa y se ha reducido a su mnima expresin, poniendo todos los selectores a 0, formando un modelo de memoria plana. As, el desplazamiento de la direccin lgica coincidir con la direccin lineal, ahorrndonos la gestin del mecanismo de segmentacin. Tamao de Pgina

Si bien puede variar, el tamao de pgina en IA-32 suele ser de 4 Kbytes. Tabla de Pginas

Para conocer su tamao har falta saber la informacin que se almacena en cada entrada y el nmero de entradas.

34

En cada entrada se almacena el nmero de marco fsico donde se almacena la pgina y algunos bits de control. En Intel se dedican los 20 primeros bits a almacenar el nmero de marco y los 12 restantes a guardar informacin de control. En total, cada entrada almacena 4 Kbytes. En cuanto el nmero de entradas, coincidir con el nmero de pginas virtuales del espacio de direcciones. Es decir, las combinaciones posibles con el nmero de bytes que indican el nmero de la pgina. Dado que las pginas tienen un tamao de 4Kbytes, se usarn 12 bits para el desplazamiento y los otros 20 para numerar las pginas. Por tanto habr 220 pginas en el espacio de direcciones virtuales y 220 entradas en la tabla de pginas. El tamao que nos sale para la tabla de pginas es de 4 MBytes. Debido a que el tamao es demasiado alto se usan dos niveles de tablas de pginas. As, el nmero de pgina virtual se divide en dos partes, de 10 bits cada una. Los primeros 10 bits corresponden al directorio de pginas (DP). El DP es, en realidad, otra tabla de pginas ms. Pero lo que pagina esta tabla no es el espacio de direcciones virtuales, sino la tabla de pginas (TP) de 4 Mbytes que, a su vez, paginar al espacio de direcciones.

Entrada en DP

Entrada en TP TPs

Desplazamiento

E.D

DP

Si todas las pginas estuvieran cargadas la doble tabla de pginas ocupara los 4 Mbytes que se usan para direccionar todo el espacio de direcciones y 4 Kbytes ms donde se guarda el directorio de pginas. Cul es la ventaja de esta tcnica entonces? Con una sola tabla, incluso el ms simple programa necesitara ocupar 4 Mbytes para su tabla de pginas. Eso, obviamente, es un problema que se debe solucionar. Con la tabla de doble traduccin, en cambio, se ocupan los 4 Kbytes del DP y las TP que sean necesarias para direccionar las pginas usadas. Adems, las TP son paginables, por lo que se podrn llevar al archivo de paginacin, liberando espacio en memoria. Sin embargo, la estructura del DP no es paginable, por lo que debe quedarse permanentemente en memoria.

35

La direccin de comienzo del DP se conserva en el registro de tabla de pginas de la CPU, que en el caso de Intel es el registro CR3, de manera que cada vez que se cambia la tarea, se cambia el registro de CR3. Como tenemos dos tipos de tablas de pginas (DP y TP) tenemos dos tipos de entradas (EDP y ETP). La informacin en ambas entradas es la misma, salvo que la informacin de la EDP se aplica a la memoria ocupada por la tabla de pginas (TP) a usar y la informacin de la ETP se aplica a la memoria ocupada por la pgina virtual a traducir. Los 32 bits de informacin se reparten: Marco de Pgina (20 bits): Nmero del marco asociado (bien a la TP o bien a la pgina). Presencia (1 bit): Es un bit que indica si est almacenada en memoria fsica o no. Si est a 1 significa que est en memoria. Escritura (1 bit): Es un bit que indica si est disponible para escritura. Si est a 1 significa que est disponible para lectura/escritura. Ni vel de Acceso (1 bit): Es un bit que indica el nivel de acceso necesario para poder acceder a la pgina (Usuario o Supervisor). PWT (1 bit): Indica el tipo de poltica de escritura de la pgina (write-through si est a 1 y write-back si est a 0). PCD (1 bit): Permite deshabilitar la posibilidad de cachear esa pgina. Accedido (1 bit): Nos indica si la pgina ha sido accedido ltimamente. Es una ayuda en la poltica de reemplazo. Dirty (1 bit): Indica si la pgina ha sido modificada. En caso de estar a 1 la pgina ha sido modificada en la cach y se debe guardar al reemplazarla. Bits libres (3 bits): Son bits disponibles para el Sistema Operativo, que los usa para distintos fines como, por ejemplo, identificar las tareas que poseen las pginas.

Si el bit de presencia se encuentra a 0 el resto de bits pierden su significado. Se suele usar para escribir el desplazamiento en el disco. Dado que se hace un acceso a travs de dos tablas de pginas (el DP y el TP), en el peor de los casos pueden ocurrir dos fallos de pginas, al acceder a la TP (bit de presencia de la EDP a 0) y al acceder al marco de la pgina virtual (bit de presencia de la ETP a 0). Tabla de Pginas Locales y Globales

Las tablas de pginas locales son especficas para las tareas, mientras que las globales estn asociadas al Sistema Operativo. Con esta diferenciacin se mejora el rendimiento, ya que se evitan las entradas repetidas en el TLB y los cambiasen las tablas de pginas de las tareas al cambiar las pginas del Sistema Operativo.

36

TEMA 4 El Sistema de Entrada/Salida


Apartado 4.1

Introduccin

El sistema de Entrada/Salida est formado por las interfaces de todos los perifricos del sistema. Cada perifrico tendr su propio interfaz, que traduce la informacin del perifrico a informacin digital y que posee memoria asociada para poder acceder a l. Hay casos en que un mismo interfaz puede atender a varios perifricos, como el puerto PS/2, que atiende al teclado y al ratn a la vez. La comunicacin entre la interfaz depender de la orientacin del perifrico. Si es de entrada, la interfaz acceder a memoria. Si es de salida, la memoria acceder a la interfaz. Hasta ahora habamos visto que la CPU era la nica parte de la arquitectura que escriba en el bus de direcciones, pero ahora las interfaces, y por tanto el sistema de E/S, tambin lo podrn hacer. Es lo que conoce como DMA.

Ubicacin del Sistema de E/S en los espacios de direcciones de la CPU


Apartado 4.2
El sistema de E/S va a formar parte del espacio de direcciones de la CPU. Habr, entonces, dos posibilidades: El sistema de E/S usa el espacio de direcciones de memoria: Sabemos que ese espacio, 4 GBytes, es muy grande y parte queda desaprovechado, por lo que se ocupa ese espacio despilfarrado con la interfaz. El sistema de E/S usa un espacio de direcciones propio: Se dispone de un espacio de direcciones separado y exclusivo para la Entrada/Salida. Es lo que se conoce como el espacio de direcciones de Entrada/Salida.

La arquitectura IA-32 y otras compatibles optan por la segunda opcin. Pero Cmo se sabe si una direccin se refiere a un espacio de direcciones u otro? Para eso se aade al sistema una lnea en el bus de control, que se activa mediante instrucciones especiales, In y OUT. Si la lnea est activa la direccin hace referencia al espacio de la Entrada/Salida. Adems, se pueden combinas las dos alternativas, de manera que una interfaz tenga parte en el espacio de direcciones de memoria y parte en el espacio de direcciones de entrada/salida. Esto se hace porque el espacio de direcciones de Entrada/Salida es menor que el de la memoria.

Apartado 4.3 Proteccin del Sistema de Entrada/Salida


En los sistemas monotarea la tarea acceda directamente a la entrada/salida. Ahora, con la multitarea, se cambia esto y el Sistema Operativo se encarga de controlar quien accede a los perifricos. Pero cmo se garantiza eso? Si la interfaz est ubicada en el espacio de direcciones de memoria se le asignar un nivel de acceso supervisor a sus pginas de memoria. De esta manera solo el Sistema operativo accede al perifrico y se encarga de gestionarlo. En resumen, usamos los mecanismos que la paginacin nos otorga. Si la interfaz est en el espacio de direcciones de entrada/salida, separado de memoria, el acceso a la interfaz se realizar con instrucciones especiales. Con ellas el Sistema Operativo controlar la

37

ejecucin de estas instrucciones, al igual que se haca con STR y CLI en la CPU terica. Se har uso, pues, del campo IOPL del registro EFLAGS.

Apartado 4.4

Tcnicas de Entrada/Salida

Hemos visto los aspectos bsicos de la Entrada/Salida, pero Quin la realiza realmente? Cmo se realiza? En primer lugar la CPU escribir la informacin sobre la interfaz del perifrico. Si el perifrico est en modo read tratar de leer de la interfaz, y aqu surge el primer problema. La CPU no sabe cuando va a necesitar la informacin el interfaz, por lo que puede encontrarse sin nada que leer. Si el perifrico esta en modo write el problema ser mayor, ya que la CPU no puede ocuparse de mirar cada poco el estado de los perifricos, por lo que no sabe cuando se introduce el dato, que ha de ser movido a memoria. Nos encontramos as con dos aspectos importantes de la gestin de la Entrada/Salida Quin va a mover la informacin a memoria? Cmo sincronizamos la CPU y la entrada/salida? Hay 4 soluciones, o tcnicas, posibles:

Sub-Apartado 4.4.1 E/S programada con Muestreo


Es la solucin ms simple, pero es del todo ineficiente. En toda interfaz nos encontramos co un registro de estado y otro de datos. La Cpu comprobar continuamente el registro de estado, a la espera de que indique que el perifrico va a comunicar. Entonces la CPU recibe la informacin y la transmite. Se puede hacer un muestreo continuo (donde la CPU se queda esperando en un bucle, de manera incompatible con la multitarea) o peridico (donde la CPU lo comprueba cada cierto tiempo).

Sub-Apartado 4.4.2 E/S con Interrupciones


La CPU no mira el registro de estado constantemente, son que la interfaz generar una interrupcin para comunicarle a la CPU que el dato a enviar est listo. Al final de cada instruccin la CPU comprueba si se le ha solicitado una interrupcin. Si es as trata la interrupcin mediante el manejador de interrupciones o la rutina de tratamiento.. Pero con esta tcnica surgen varios problemas ms. Si se producen varias interrupciones simultneas cul atendemos primero? Es decir, la priorizacin. Si estamos e una tarea muy delicada, como modificar una tabla de pgnas, una interrupcin no debera interrumpirnos. Por ello se ha de permitir la posibilidad de deshabilitar las interrupciones, con un bit en EFLAGS. Bastar pues con deshabilitarlas cuando nos encontremos en una tarea delicada. Segn la interfaz que solicite la interrupcin se debern ofrecer servicios distintos. Es decir se debe hacer una identificacin de interfaces. Las soluciones al primer y ltimo problema lo tiene el controlador de interrupciones, que libera a la CPU de la responsabilidad.

38

Sub-Apartado 4.4.3 E/S con DMA


Trata de mejorar la solucionar la tcnica anterior, que aunque es eficiente se puede convertir en un proceso demasiado largo. Por eso, la CPU cede al controlador de DMA la tarea de mover los datos entre el sistema de memoria y la interfaz, cedindole los buses de control. As, usaremos la DMA cuando nos permite liberar a la CPU para realizar otras tareas o cuando realiza la transferencia de manera ms rpida que la propia CPU (al leer de diskette).. El controlador de DMA clsico, ya obsoleto, no tena ninguna inteligencia y haca tan solo lo que se le deca, sin ejecutar instrucciones. En este caso la CPU se encarga de programar al DMA, indicndole la operacin, el nmero de datos a transferir y la direccin de memoria implicada. Adems programar a la interfaz, de manera que cuando la interfaz est lista avise al controlador de DMA, que llevar a cabo la transferencia. Hoy da hay varias formas de DMA. La ms usada es la evolucin del DMA clsico, el Bus Mastering. En esta tcnica cada interfaz posee un controlador que acta como maestro de su bus (a diferencia del DMA clsico, donde un solo dispositivo DMA se usaba para todos los perifricos). Estos dispositivos, adems, son inteligentes, por lo que no necesitan ser programados por la CPU, por lo que la transferencia de informacin se realiza de manera ms eficiente. En todas las tcnicas de DMA, al acabar la transferencia se avisa a la Cpu mediante una interrupcin.

Sub-Apartado 4.4.4 Procesadores de E/S


Son interfaces con capacidad de Bus Mastering que incluyen una CPU propia, con alta capacidad de procesamiento, que puede llegar a ser ms compleja que la propia CPU principal. Ejemplo de estos elementos son: Las Tarjetas Aceleradoras Grficas: creadas porque el rtabajo en 3d para una Cpu es impensable. Ser la GPU la que se dedique a ello, liberando a la Cpu del trabajo. Las Tarjetas Descompresoras de Imagen y Sonido: Si las CPUs llevaran a cabo esta tarea, los videos y audios se veran y oiran a saltos.

La ventaja de estos dispositivos es que aceptan rdenes de alto nivel. El ordenador se convierte as en un ordenador multiprocesador, donde cada procesador se dedica a una tarea especfica.

Apartado 4.5

Interrupciones en la arquitectura IA -32

La tcnica de interrupciones en IA-32 se usa tan solo para perifricos cuya tasa de entrada no sea demasiado elevada, como el teclado o el ratn. La interfaz avisar a la CPU de que desea transmitir, por lo que lanzar la interrupcin y el controlador la gestionar. Si la CPU acepta la interrupcin se ejecutar la rutina de tratamiento. En el caso de la arquitectura IA-32: La lnea de interrupcin de la CPU se denomina INTR (INTerrupt Request). La habilitacin o no de las interrupciones depender del flan IF en EFLAGS. En caso de estar a 1 se aceptar la interrupcin. El tratamiento de las interrupciones se lleva a cabo al terminar la instruccin actual. Si se acepta la interrupcin se ejecutan dos ciclos especiales: se indica la aceptacin en la lnea IACK (Interruption ACKnowledge) y se leern los 8 bits ms bajos del bus de

39

datos, que identificarn al elemento que solicita la interrupcin y forman el vector de interrupcin. Con el vector de interrupcin se va a la IDT (Tabla de identificadores de traduccin), que nos dir donde comienza la rutina de tratamiento.

Como vimos la CPU puede decidir no aceptar las interrupciones, pero no puede ser as. Hay interrupciones que se deben aceptar inevitablemente, que suelen corresponder a graves fallos en el sistema, son las interrupciones no enmascarables. Estas interrupciones no tienen entrada en la IDT, sino en la NMI (interrupciones no enmascarables) de la CPU. Si bien esta solucin ha cado en desuso y, desde la llegada del Pentium, se usa el APIC (Advanced Programmable Interrupt Control). Su uso se adapta a los ordenadores multiprocesadores. As, cada dispositivo con procesador tendr un APIC que recibir sus interrupciones. As mismo, los APICs locales estn conectados a un APIC global, el del sistema de Entrada/Salida. As, cada lnea en el APIC (IRQ) tiene asociada un registro donde se encuentra su nmero de vector de interrupcin.

40

TEMA 5 CANALES
Apartado 5.1 Topologas de interconexin
El objetivo de las conexiones es comunicar la CPU, la memoria y la entrada/salida entre s. Adems habr otros componentes, como el controlador de interrupciones, el controlador DMA Hay varias posibilidades o topologas para la conexin entre los dispositivos: Conexin punto a punto: Es una solucin muy sencilla de implementar, rpida y que permite el tratamiento de la informacin en paralelo. El inconveniente es que puede ser muy cara, al haber tantos canales.

Conexin en estrella: Si bien reduce el nmero de canales y el concentrador podra permitir la transmisin en paralelo, siempre necesita de un concentrador que distribuya la informacin y habr que aadir informacin para indicar el destino de cada transferencia.

41

Conexin en bus: Esta tecnologa muy simple y consiste en conectar los dis positivos a un nico bus. Esto permite mandar la informacin a varios miembros del bus, pero requerir identificacin de destino. Adems, el bus puede limitar la velocidad de transmisin.

Apartado 5.2

Los Buses

Un bus es un canal de comunicaciones con ms de dos d ispositivos conectados, con la particularidad de que slo un dispositivo escribe en el bus, el maestro del bus, que adems lo controla. Los cables o lneas del bus pueden ser de distintos tipos: Datos. Direcciones. Control: o Operacin. o Sincronizacin. Alimentacin.

Sub-Apartado 5.2.1 Concepto de ciclo del bus


Cada bus es distinto y tiene sus caractersticas, por tanto la forma de trabajar con cada uno de ellos es distinta. A esa forma de trabajo se le llama protocolo y marca las reglas que debe cumplir el dispositivo conectado en el bus. Hay distintos tipo de protocolos (elctricos, mecnicos, ) pero nos centraremos en los de comunicaciones. Se denomina ciclo de bus a cada una de las operaciones que se pueden realizar sobre el bus. Cada ciclo viene especificado por una secuencia de bits en las lneas de bus. Los ciclos comunes a todos los buses son: Ciclo de lectura: El maestro del bus leer un dato de otro dispositivo. La secuencia de bits ser: o Lneas de Direcciones: Identificacin del dispositivo a leer. o Lneas de Control: Se activa la lnea de control que indica lectura. o Lneas de Datos: El dispositivo requerido enva el dato. -Ciclo de escritura: El maestro del bus escribir un dato sobre otro dispositivo: o Lneas de Direcciones: Identificacin del dispositivo donde escribir. o Lneas de Datos: El dispositivo enva el dato a escribir. o Lneas de Control: Se activa la lnea de control que indica escritura.

Otros ciclos en los buses son el de reconocimiento de interrupcin, configuracin, transferencia por bloques, etc.

42

Sub-Apartado 5.2.2 Caractersticas de un bus


No todos los canales tienen por qu tener las mismas caractersticas y algunas son comunes a los canales punto a punto. Sincronizacin

Hay buses que incluyen, entre sus lneas de control, una de reloj, encargada de secuenciar las etapas del ciclo de bus. Esto es til, sobre todo, en ciclos de lectura, donde no sabemos cunto va a tardar un acceso en el dispositivo. A estos buses se les conoce como buses sncronos y son ms simples y rpidos. Un ejemplo de esto es la memoria SDRAM. Los buses asncronos, en cambio, usan lneas de control adicionales para la secuenciacin de los ciclos. Esas lneas pueden ser lneas R (Request.) o ACK (Acknowledge o reconocimiento). Tamao de datos

Vendr dado por el nmero de lneas de datos con los que trabaja el bus. Serie o paralelo

En los buses en paralelo, todos los bits se envan simultneamente de manera que el tamao del dato va impuesto por el nmero de lneas de datos. En los buses en serie se transmiten los bits por un nmero de lneas (habitualmente una), unos tras otros. El problema de estos dispositivos es que la comunicacin es ms lenta, ya que para transmitir 32 bits por una lnea se requieren 32 ciclos, pero a cambio no tendremos limitacin de tamao. Multiplexacin

En los buses multiplexados algunas lneas se usan para ms de una tarea. Lo habitual es multiplexar las lneas de direcciones y las de datos, para que, previa indicacin en la lnea de control, los datos enviados se interpreten como una direccin o cmo un dato. Ancho de banda terico

Es la velocidad de transmisin mxima que podemos tener (en condiciones ideales), medida en MB/seg. Lamentablemente nunca se suelen alcanzar. Longitud mxima del bus

Existen limitaciones fsicas para la longitud del bus. Puede haber problemas de rendimiento (como es el caso de un bus sncrono, donde la seal de reloj se retarda y se pierde la sincronizacin) y de funcionamiento (ya que los cables funcionan como antenas, generando y recibiendo campos electromagnticos, lo que puede hacer que la informacin se altere). Plug and Play

Es la capacidad de reconocer y configurar de manera automtica un dispositivo que se conecte a un bus. Conexin en caliente

Se pueden conectar sin parar el equipo.

43

Sub-Apartado 5.2.3 Bus con mltiples maestros: Concepto de arbitraje.


En la CPU terica slo la CPU manejaba las lneas de datos. En la realidad esto no es as. Actualmente, como dijimos antes, muchos dispositivos tienen capacidad de controlar el bus (bus mastering). Para evitar el caos, es necesario un arbitraje o control, que tenga en cuenta ciertos aspectos, como son: Priorizacin: Ante peticiones simultneas se atiende al que tenga ms prioridad. Imparcialidad: Todos los que lo piden pueden ser maestros en alguna ocasin.

Hay ciertos tipos de arbitraje: Centralizado

Un dispositivo acta como rbitro. El rbitro no comunica nada, simplemente controla los accesos de los maestros con los que se comunica mediante una lnea de control y una lnea de concesin del bus. El inconveniente es que necesitamos un rbitro dedicado exclusivamente a esta tarea. Distribuido por autoseleccin

Los dispositivos colocan en el bus un cdigo identificativo. De esta manera, los maestros saben en qu momento pueden comunicar. Esto lo usan sistemas multiprocesadores basados en IA-32. Distribuido por deteccin de colisin

Cuando el bus no se usa el dispositivo acceder a l y si no se detecta una colisin (se pone un dato y se intenta leerlo) ser el maestro del bus. Un ejemplo de este arbitraje es la red Ethernet, considerada como bus.

Sub-Apartado 5.2.4 Jerarqua de buses


El problema surge cuando muchos dispositivos se deben conectar a un mismo bus. Las consecuencias son muy malas, ya que se necesita un bus muy largo (con la consiguiente prdida de sincronizacin e interferencias), que se puede convertir en un cuello de botella (afectando a la velocidad de los perifricos) y con problemas de sincronizacin (debido a las diferencias de velocidades en los dispositivos). Todo esto se soluciona con la jerarqua de buses. Es decir, se dividen los buses segn su velocidad. Esto reduce la longitud necesaria, ya que se conectarn menos dispositivos, adems permitir posibilidades de comunicacin distinta y no ralentizar los dispositivos rpidos.

Sub-Apartado 5.2.5 El bus PCI


IBM era consciente de que su power PC era muy bsico y que poda ser ampliado. Con ese fin se incorpor un bus donde conectar ampliaciones: el bus XT.

44

Al convertirse en un xito de ventas, se decidi ampliar el propio bus XT, que en un principio era bastante pobre, crendose la especificacin AT o ISA. A medida que las CPU se hacan ms rpidas, el bus ISA se quedaba atrs, alcanzando tan slo los 833 MHz, con el consiguiente perjuicio para la CPU. Se desarroll una alternativa, el bus EISA (Enhancement ISA), que no tuvo demasiado xito. Ms tarde vino el bus VESA, totalmente distinto al ISA, que conectaba directamente el bus a la CPU, de manera que trabajaba a la frecuencia de la misma. Pero surga entonces un problema de compatibilidad. La rpida evolucin de las CPUs exiga un cambio constante en las velocidades, de manera que una tarjeta VESA poda funcionar en una CPU y ser compatible con otra. La tercera alternativa fue el bus PCI (Peripherical Component Interconnect), desarrollado por Intel, de gran velocidad e independiente del bus del procesador. Es un bus sncrono (lo que le otorga rapidez y sencillez), paralelo ( lo que aumenta su rapidez) de 32 bits (aunque hay especificaciones de 64 bits), multiplexado (ralentiza, pero nos ahorramos 32 lneas) y con soporte Plug and Play. Por todas sus caractersticas, el bus PCI acab ganando al VESA. La especificacin ms comn consta de 32 lneas y trabaja a 33MHz. Eso nos da una ancho de banda ptimo de 132 Mbytes/s (32 lineas = 4 bytes * 33.000 transmisiones por segundo = 132 Mbytes). Pero solo se alcanza esa velocidad en condiciones ideales, suponiendo que cada transmisin ocupa un solo ciclo.

Caractersticas de la comunicacin

En toda transmisin participa un iniciador (el maestro del bus) y un destinatario (el dispositivo con que queremos comunicarnos). Tiene un arbitraje centralizado. Usando un dispositivo adicional, llamado arbitro del bus. Cada maestro tiene 2 lneas:

REQ (por la que solicita el bus) y GNT (por la que recibe el control del bus).

Al ser un bus sncrono, se sincroniza con la seal de reloj CLK. Ciclo de lectura PTIMO

Es el ciclo de lectura que menos tarda, ya que no tiene ciclos de espera. Obviando las seales iniciales de solicitud de bus y recibimiento de control, el ciclo tendr las siguientes fases: 1El iniciador activa la lnea FRAME para indicar que va a iniciar una operacin. Se pone en las lineas de datos (AD) la direccin y se indica, en las lnes de contro ( C / BE ), la rden leer. 2Deja libres las lneas AD y marca, en que escribir. Ej: 3-

C / BE , el nmero de bytes vlidos de los 4

C / BE = 0000 (4 bytes vlidos).

El destinatario lee el nmero de bytes necesarios, y los coloca en las lneas de AD. El maestro vuelve a indicar el nmero de bytes a leer, para el siguiente ciclo. Repetimos el anterior, leemos el n de bytes vlidos y se colocan en AD. Lo repetimos hasta terminar la transferencia.

4-

45

5-

Al llegar el penltimo dato (ciclo 7 en el ejemplo), el iniciador desactiva

FRAME , cancelando la transmisin, y libera las lneas C / BE . Adems, el destinatario recibe el ltimo dato. Al deshabilitarse FRAME se reconoce como el
ltimo dato.

1-

Ciclo de escritura ptimo El iniciador activa FRAME para indicar que se har una operacin. Adems, coloca en AD la direccin que identifica el dispositivo donde se va a escribir y en las lneas

C / BE el cdigo de la operacin de escritura. C / BE el nmero de bytes vlidos y en AD coloca el dato a enviar.

2-

El dispositivo destinatario ser avisado de la operacin de escritura. El iniciador coloca en

3-

El destinatario lee del bus el primer dato, mientras el iniciador coloca el segundo en AD y el nmero de bytes vlidos en C/BE. Cuando el destinatario lee el penltimo dato, el iniciador desactiva FRAME, indicando el fin de la operacin, coloca el ltimo dato en AD y en C/ BE el nmero de bytes vlidos.

4-

Apartado 5.3 Conexin de componentes en un PC moderno


Hoy en da se usa una jerarqua de buses , debido a la diversidad de los numerosos componentes conectados. En IA-32 hay 3 concentradores: North-Bridge, South-Bridge, y Super I/O. Al conjunto de los dos primeros se le denomina el chipset.

46

En el South-Bridge reside el controlador DMA y el de interrupciones, mientras que al NorthBridge se conectan los dispositivos de ms alta velocidad.

Como ejemplo, analizaremos una entrada de teclado. En ese caso, el procesador enva la direccin donde est mapeado el teclado al North-Bridge. El North Bridge no lo reconoce como suyo y se lo enva al SB, que tampoco lo reconoce y que lo enva al Super I/O. El Super I/O reconoce y detecta al teclado. Una vez realizada la entrada, los datos realizan el camino contrario.

47

TEMA 6 PERIFRICOS:
Apartado 6.1

Introduccin

Gran parte del xito de la informtica se debe al desarrollo de los perifricos. Esta evolucin ocurre a la vez que la gran diversificacin de tareas que una CPU puede llevar a cabo. Eso ha provocado que muchos perifricos queden obsoletos (lectora de tarjetas perforadas) , que otros estn siendo abandonados (disquetera, cintas magnticas) y que aparezcan nuevos perifricos cada poco (pendrive USB, webcam, bluetooth, etc.). Por su diversidad, una clasificacin resulta difcil. As, tenemos, segn el sentido del movimiento de la informacin: o o o o Entrada: Envan informacin al computador: teclado, ratn, escner, joystick, lector de cdigo de barras, reconocimiento de voz, Salida: Presentan la informacin de la que supone el computador: Pantalla, impresora, plotter, displays especficos, Entrada/Salida: Puede tanto recibir informacin como presentarla: Pantalla tctil, tarjeta de sonido, mdem, Memoria auxiliar o almacenamiento: Son un tipo especfico de perifrico. Pueden parecer de E/S, pero su objetivo no es leer ni mostrar la informacin, slo almacenarla.

Apartado 6.2

Perifricos de almacenamiento

En estos perifricos se persiguen ciertos objetivos: un bajo coste, una alta capacidad de almacenamiento, una elevada velocidad de acceso, persistencia de la informacin (que cuando se apague el PC la informacin siga all) y facilidad de transporte del dispositivo. Ninguna de las tecnologas actuales cubre todos los objetivos de m anera apropiada. As, el almacenamiento magntico lo tiene todo menos facilidad de transporte, los dispositivos de almacenamiento ptico son muy lentos, el almacenamiento magneto-ptico (minidisc de sony) tiene problemas al ser propiedad de una nica marca y el a lmacenamiento basado en semiconductores presenta problemas de persistencia (RAM) o de velocidad (pendrive).

Sub-Apartado 6.2.1 Almacenamiento magntico


Usan las propiedades magnticas de los materiales (materiales ferromagnticos) para almacenar la informacin. Lo que se hace es aplicar un campo magntico a esos materiales de manera que sus tomos queden orientados magnticamente en una direccin. Esta ordenacin se mantiene aunque el campo magntico se retire (es lo que se conoce como remanencia magntica). Caractersticas Generales

Para quitar la magnetizacin hemos de aplicar un campo magntico negativo cuya intensidad viene dada por la coercitividad o fuerza coercitiva.

48

Lo mismo pasa en el sentido negativo, formando el ciclo de histresis. Esa magnetizacin se puede traducir en bits de manera que cada bit sea magnetizado de manera homognea y donde el sentido de la magnetizacin indicar que su valor es 1 o 0. Esa informacin es permanente gracias a la propiedad de la remanencia, por lo que es interesante que la remanencia sea alta para que la informacin sea ms robusta. La sobreescritura se convierte entonces en el paso de 1 al 0 o viceversa. Pero este proceso de sobreescritura depende de la fuerza coercitiva, de manera que cuanto mayor fuerza ms tardamos en sobrescribir. As, nos interesa una coercitividad pequea. La densidad de almacenamiento es la relacin entre los bits almacenados y el rea usada. Para que esto aumente hemos de disminuir los dominios magnticos necesarios para almacenar un bit. Grabacin y lectura de datos

Para estas operaciones usamos los principios fsicos de la induccin electromagntica. La escritura se realiza con un e lectroimn cambiando la polarizacin gracias al paso de corrientes elctricas. La lectura se realiza con un electroimn detectando cambios de polarizacin y generando seales elctricas. Ya que lo que buscamos es un cambio de polarizacin, no importa lo grande que sea la superficie del bit, lo que importa es el cambio de la polarizacin. Codificacin de la informacin

Cmo almacenamos 1111, si slo lee cambios en la polarizacin? La regla de 1 en un sentido y 0 en otro no tiene ya lgica. Hay otras muchas tcnicas. Veremos la codificacin modulada en frecuencia (FM), que usa una seal intermedia entre los bits, y la polarizacin de manera que la frecuencia de esa seal viene determinada por la secuencia de los bits. La seal es un tren de pulsos en que cada pulso sera un cambio de magnetizacin. Aqu hay diversos cdigos (imaginemos la secuencia 111010001): Cdigo FM: Si hay un pulso en el centro del bit (llamado pulso de bit), el bit ser un 1. Adems hay un pulso al comienzo de cada bit (llamado pulso de reloj). Este cdigo tiene el inconveniente de que se generan muchos pulsos y algunos de ellos, los d reloj, ni siquiera aportan informacin.

Cdigo MFM: Se mantiene la presencia del pulso de bit, pero el pulso de reloj slo aparece si en el bit anterior no hubo pulso de bit y en el actual tampoco (se aumenta la densidad al haber menos pulsos).

Cdigo M2 FM o MMFM: Se mantiene la presencia del pulso de bit y de reloj. Slo aparece si en el anterior no hubo pulso de bit ni de reloj y en el actual no hay pulso de bit.

49

Organizacin de la informacin sobre el disco

El disco se organiza en pistas, sectores, superficies y cilindros. Las pistas, estn numeradas, siendo la ms externa la pista 0. A las pistas se les conoce tambin como traces. La unidad mnima que se puede usar para almacenar o leer es el sector. Normalmente almacena entre 512 y 1024 bytes. Cada cara del plato es una superficie. El cilindro corresponde a la superposicin de las pistas colocadas en la misma vertical (con el mismo nmero) en todos los discos. Adems, el Sistema operativo establecer una unidad superior, el cluster, que corresponde a una agrupacin (no necesariamente correlativa) de sectores en disco. Al formatear a bajo nivel se guarda informacin para identificar la pista y el sector, desaprovechando as parte del espacio de almacenamiento. Al formatear a alto nivel, lo que se hace es copiar en la pista 0 cierta informacin especial, como puede ser una FAT. Densidad de Almacenamiento

Segn hemos visto hasta ahora, los sectores pueden tener un tamao mayor en las zonas externas del disco. Pero los sectores , por facilidad de uso, suelen almacenar la misma informacin, por lo que los sectores externos estaran muy desaprovechados.

Otra opcin es hacer los sectores del mismo tamao. As no se desaprovechar memoria, pero en cada pista habr un nmero distinto de sectores, que complica la gestin del disco, al tener que controlar la velocidad de rotacin.

50

Parmetros de una unidad de disco La capacidad mide el total de informacin que se almacena, aunque ya sabemos que al formatear parte de esa informacin se pierde.

El Tiempo medio de acceso es el tiempo que se tarda en acceder a la informacin desde que el Sistema operativo da la orden. Ser la suma de: o Tiempo de Bsqueda: Es el tiempo que tarda la cabeza de lectura en ponerse en la pista deseada. o Tiempo de Latencia: Tiempo que la cabeza se pasa sobre la pista deseada esperando que llegue el sector buscado. Estadsticamente es la mitad del periodo del disco. o Tiempo de transferencia: Es el tiempo que se tarda en mover la informacin a la CPU. Normalmente es el ms pequeo de todos, al tratarse de un elemento electrnico y no mecnico. Densidad del Almacenamiento: Mide lo apretada que se encuentra la informacin. Consta de 2 indicadores, el TPI (Tracks Per Inch, Pista por Pulgada) y el BPI (Bitsper Inch, Bits por Pulgada). Disco Flexible

Consiste en una capa de plstico sobre la que se coloca el material magntico. Esa capa, y con ella el material, gira impulsada mediante un motor paso a paso, que lo hace girar en saltos siempre iguales. Las cabezas siempre estn en contacto con el material magntico. Ello conlleva un desgaste que har que el material magntico se estropee, quedando el disco inservible. Normalmente estn organizados en 80 pistas, con 18 sectores por pista, de 512 bytes cada uno. Disco ZIP

Es una evolucin del disco flexible, cuya tecnologa pertenece a Iomega, lo que impidi su correcta difusin (al ser la compaa la nica propietaria de sus derechos de venta).

51

Lo que se hace es hacer ms grueso el disco y ms pequeas las cabezas lectoras, de forma que hay una mayor capacidad de almacenamiento, que nos permite aumentar la capacidad a 100 o 200 MB. Adems, las cabezas tocan muy ligeramente el material, habiendo menos desgaste y permitiendo girar a 3000 revoluciones por minuto. Discos Duros

En estos dispositivos las cabezas son mu y pequeas y no toca el disco, mantenindose a 0.01 micras de separacin. El nico momento en que toca el disco es al apagarse, en cuyo caso se aparca en una zona especial del disco que se puede desgastar sin que el disco se resienta por ello. La separacin se consigue gracias al giro del propio disco, que genera una corriente de aire tal que levanta las cabezas lo justo. Cintas

Estos dispositivos se estn abandonando, si bien se usan an en empresas para almacenar grandes cantidades de datos. Su principal problema es que almacena la informacin de manera secuencial, por lo que conllevan un gran tiempo de acceso. Adems, las cabezas estn en contacto permanente con el material, lo que produce gran desgaste.

Sub-Apartado 6.2.2 Almacenamiento ptico


Se basa en las propiedades pticas de los materiales de los dispositivos. Principios de funcionamiento

Se basa en la misma tecnologa que los cds de audio, con la diferecia dde que en los CD-ROMs se introduce informacin adicional prale tratamiento y deteccin de errores. El dispositivo contar de un sustrato de plstico transparente, una capa de metal reflectante y una capa de proteccin. La informacin se graba realizando marcas (llamadas pits o hoyos, contra las zonas que no se modifican, los lands) sobre la superficie reflectante del dispositivo. Esto produce cambos en las propiedades de reflexin del material, de manera que se producirn periodos de luz oscuridad que interpretaremos como informacin. Las marcas, la informacin, se organizan en forma de una nica espiral, que avanza del centro a la periferia. Para leer la informacin, por tanto, se emitir un haz lser y se tratar de detectar el reflejo. Codificacin de la informacin

Cmo se codifica aqu la informacin? La codificacin ISO 9660 (cds de audio) establece que los cambios de reflexin (no luz a luz y luz a no luz) representarn un 1, mientras que las zonas de reflexin constante simbolizarn 0s. El nmero de 0s en cada zona uniforme depender de la longitud de la misma. Por ello es necesario ajustar la velocidad de giro del dispositivo, para que recorra con la misma velocidad lineal toda la espiral. El nmero de 0s ser pues la duracin total de la zona uniforme entre la duracin de un 0. Por otra parte, cada 8 bits vlidos se almacenarn en 17 bits reales. La razn es sencilla: La presencia de dos 1s llevara a cabo dos cambios que se realizaran en un intervalo de tiempo demasiado pequeo como para poder detectarlos. As pues, entre cada dos bits vlidos se guardar un 0.

52

Organizacin de la informacin

En un cd se denomina sector, o bloque, a la agrupacin de 2352 bits. En la reproduccin de audio se reproducen 75 bloques por segundo. As, en un cd de 74 minutos nos saldrn 330.000 b loques (75*74*60). Con los bits que tiene cada bloque obtendramos cds de 7469 MB. Pero no es as, ya que en el formato ISO 9660 solo 2043 se podrn usar, por lo que obtendremos unos 6504 MB, ms acorde con la realidad. Tipos de Almacenamiento ptico

CD-ROM : Slo lectura. CD-R: Cd Grabable (una sola vez) CD-RW: Cd regrabable (aproximadamente 1000 veces) DVD-ROM: Slo lectura. DVD-R: DVD grabable una sola vez. Realizado por Pioneer. DVD+R: DVD grabable una sola vez. Realizado por DVD Alliance. DVD-RW: DVD regrabable. DVD+RW: DVD regrabable. CD-ROM

Emplea un haz lser de 780 nanmetros, en la zona infrarroja del espectro. La velocidad se mide en mltiplos de una velocidad base conocida, 75 bloques/segundo, lo que equivale a 150 KB/s. As, la velocidad a 2x equivaldr a 300KB/s, 3x a 450 KB/s DVD-ROM

Fsicamente es idntico al cd. La diferencia entre ambos es la mayor capacidad del segundo, que en su versin ms simple alcanza los 47 GB. Esta tecnologa hace ms pequeos los pits y aprieta en mayor m edida la espiral. Lo que hace entonces es permitir una mayor densidad de almacenamiento, aumentando as la capacidad. Estos cambios hacen que la lente deba ser mucho ms precisa, por lo que se aumenta su frecuencia hasta el rojo, con una longitud de onda de unos 635 nanmetros.. Estos dispositivos tienen la posibilidad de usar una doble capa, que consistira en dividir la capa reflectante en una capa translcida reflectante y una opaca reflectante. De esta manera con cambiar la distancia de la lente leeramos una u otra capa y aumentaramos la capacidad a los 85 GB.

53

En la segunda capa la organizacin cambiara y consistira en una espiral (no superpuesta a la primera) con los primeros sectores en la periferia, en lugar de en el centro como ocurre en la otra capa o en los cds. Por otra parte, se puede usar la otra cara del DVD para lo mismo, por lo que podramos obtener 9,4 GB o hasta 17 GB si lo combinamos con la tecnologa de doble capa. En este caso se usarn 16 bits para codificar 8, en lugar de 17 como en el ISO 9660. La velocidad de transferencia tambin se medir en mltiplos de una veocidad base, que en este caso corresponde con 13 Mb/seg. De esta manera, una velocidad 1x corresponde a 13 MB/s, una velocidad 2x a 26 MB/s Cds y DVDs grabables

En estos dispositivos solo se puede escribir una vez. Estn formados por un polmero fotosensible (un tinte) depositado en un surco en espiral en el disco. El tinte tiene propiedades pticas especiales, de manera que al hacer incidirn lsser sobre l pierde su capacidad reflectante, crendose los pits y los lands. Cds y DVDs regrabables

En estos dispositivos se puede escribir varias veces, alrededor de unas 1000, tras un proceso de borrado. Esta posibilidad viene dada por los materiales empleados, una aleacin metlica de Plata, Indio, Antimonio y Telurio. La mezcla, a temperatura ambiente, tiene una estructura cristalina reflectante. Al incidir el lser sobre el cristal ste se funde (se alcanzan 600 C) y pierde la capacidad reflectante. Si la temperatura baja por debajo de los 200 C recuperar su estrctura anterior. Esto se corresponde con la operacin de borrado.

Sub-Apartado 6.2.3 Almacenamiento magnetoptico


Combina las dos tecnologas anteriores. El claro ejemplo es el mini-disc de Sony, que llega a almacenar 91 GB. El material usado es magntico, pero no se ve afectado por los campos magnticos a temperatura ambiente, sino que necesita ser calentado a 300 C. Esto se consigue al hacer incidir un lser en una zona del dispositivo. De esta manera el camp o magntico solo afectar a la zona, que normalmente ser microscpica, calentada por el lser. Para leer se emite una luz polarizada que saldr con un ngulo distinto dependiendo de que tengamos un 0 o un 1.

Sub-Apartado 6.2.4 Almacenamiento en semiconductores


Es en lo que se basan las memorias principales (es decir, RAM, ROM) y se caracterizan por su gran tamao y buen rendimiento. La idea no es nueva y en procesos industriales, donde los discos duros se estropean demasiado a menudo por las condiciones de trabajo, se usan los discos de estado slido, que consisten en meros bancos de memoria RAM. Actualmente surgen varios dispositivos nuevos, incluyendo el Pen-Drive o las tarjetas de memoria, basados en la tecnologa E2PROM (Electrical Erasable Programable ROM).

54

Apartado 6.3

Perifricos de Entrada

Su objetivo es introducir informacin en el ordenador, sirviendo de medio de comunicacin entre el usuario y el resto de la arquitectura.

Sub-Apartado 6.3.1 Teclado


El objetivo de este perifrico es la introduccin de caracteres y secuencias de control al ordenador. Pulsadores

La introduccin de los caracteres se consigue mediante los pulsadores. Su misin es poner en contacto unos contactos metlicos de manera que hagan circular la corriente sealando la pulsacin de la tecla. Los pulsadores pueden ser de distintos tipos:

Lo importante es que resuelvan el problema de reconocer una pulsacin. Reconocimiento de la tecla

La tctica que se sigue es realizar ciclos de exploracin para comprobar si alguna ha sido pulsada. Para ello se hace uso de una matriz de conexin. En dicha matriz se hace un barrido por filas y se detecta las columnas (es decir, las teclas) que han sido pulsadas. El chip del teclado detectar la pulsacin y liberacin de una tecla. Para cada evento generar un cdigo: Make: Corresponde a la pulsacin de la tecla. Break: Corresponde a la liberacin de la tecla. Es el cdigo Make + 80h.

Este cdigo simboliza la posicin de la tecla y no tiene nada que ver con el cdigo ASCII. Los cdigos se conocen como keycode. El controlador de la tecla mejora el rendimiento y la interaccin al permitir: Funcin de repeticin continua: Se produce cuando se mantiene pulsada una tecla. Conflicto de teclas pulsadas simultneamente: Se enva el cdigo de la ltima pulsada.

55

Combinaciones de teclas: Los cdigos se reciben de manera secuencial, por lo que se permite la combinacin de teclas (Ej: Ctrl + Esc) Transmisin

Los datos se envan a travs del cable, bit a bit. El conector PS2 del teclado tiene la siguiente configuracin:

Las lneas GROUND y POWER se encargan de la alimentacin del teclado, al estar conectados a tierra y a una fuente de tensin respectivamente. Por la lnea KBDATA, bit a bit, se envan los datos de las teclas pulsadas. La lnea KBCLOCK es el reloj encargado de sincronizar el envo de datos del teclado al PC. Se enva un bit por cada seal de reloj en KBCLOCK.

Sub-Apartado 6.3.2 Ratn


El ratn es un elemento de sealizacin en la pantalla. Su objetivo es traducir los movimientos en la superficie (izquierda, derecha, adelante, atrs) en movimientos en la pantalla (izquierda, derecha, arriba, abajo). Ahora bien, hay dos tipos claramente diferenciables de ratones, el mecnico y el ptico. Ratn mecnico

Consiste en una carcasa cuyo objetivo es hacer rodar una bola al moverse.

56

La bola, al moverse, har girar los rodillos de movimiento. stos a su vez hacen girar a los encoders, que interrumpirn un haz de luz con sus ranuras. Se almacenan el nmero de ranuras pasadas, de manera que se determina el sentido del movimiento y tambin su fuerza. Ratones pticos

Su funcionamiento es ms complejo que el ratn mecnico. Consta de un sistema de captura de imgenes que le permite detectar variaciones en las texturas. Esta capacidad le permite determinar el sentido y la velocidad del movimiento.

El led proyectar la luz que tras rebotar ir a parar al sensor ptico. La ventaja con respecto al ratn mecnico es que no lleva partes mviles, por lo que no tiene problemas de suciedad. Conexin

El ratn se conecta de muy diversas maneras con el PC. Puede realizar su conexin por el puerto RS-232 o el USB, en cuyo caso el funcionamiento es el mismo. Se enva un paquete de informacin a la interfaz incluyendo el estado de los botones y los desplazamientos. Despus de eso, la interfaz lanza una interrupcin. Tambin puede realizar su conexin por el puerto PS/2. En este caso puede enviar datos de manera continua (modo stream) o cuando se lo pidan (modo remote). Los datos se almacenan en un buffer y se genera la interrupcin. Controlador

Se encarga de detectar la secuencia de doble click, el arrastre adems de actualizar la posicin del ratn en pantalla.

Apartado 6.4 Perifricos de Salida


Su misin es presentar la informacin contenida en el PC al usuario.

Sub-Apartado 6.4.1 Monitores


El objetivo de este perifrico es m ostrar la informacin por pantalla, de una manera rpida, mejorando la interactividad. Caractersticas generales de los monitores

Tamao: Se mide en pulgadas y se ve reducido a causa de la carcasa. Resolucin: Es el nmero de puntos de la imagen, en horizontal y vertical.

57

Frecuencia de barrido horizontal: Es el nmero de lneas dibujadas por segundo. Frecuencia de barrido vertical: Es el nmero de veces que se refresca la pantalla por segundo. Tamao del punto (dot pitch): Distancia entre el centro de las tradas o los puntos de mismo color. Monitores CRT

Estos monitores son lo ms parecido a las antiguas televisiones. Al igual que ellas funcionan gracias a un tubo de rayos catdicos. Para lograr formar la imagen se aprovecha de las propiedades del material de la pantalla, la fluorescencia (el haz de electrones, al chocar con la pantalla hace que ste emita luz) y la persistencia (la emisin de luz se mantiene un tiempo, aunque no incida el haz).

As pues, para dibujar en la pantalla habr que controlar la intensidad del haz de electrones y las posiciones de incidencia en las placas deflectoras, que al final determinarn el punto en que se incide en la pantalla. Pero para no hacerlo catico se realiza un proceso ms sistemtico, el barrido. El barrido consiste en que el haz recorra toda la pantalla por filas y se active solo en las zonas en que se necesita. Para ello se varan las tensiones a las que se ven sometidas las placas deflectoras, de manera que los electrones se vean desviados a sitios distintos. En esta variacin de tensiones intervienen las seales VSYNC y HSYNC, que se activan al acabar el barrido de la pantalla o de una sola lnea, respectivamente. As, al barrer una lnea y llegar al final, se activa HSYNC, de manera que las placas deflectoras horizontales se ponen en su tensin inicial y repiten el proceso. Tras barrer todas las lneas se activa VSYNC y las placas deflectoras verticales se ponen en su tensin inicial. Montores CRT a color

Estos monitores tienen una peculiaridad. Cada punto del monitor est formado, a su vez por tres elementos fluorescentes de distintos colores (Rojo, Verde y Azul). Los monitores CRT a color cuentan con 3 haces de electrones que inciden en cada uno de los elementos.

58

A esa combinacin se le conoce como trada y permite formar todos los colores controlando las intensidades de los haces.

Monitores LCD

Son monitores basados en liquidos cuyo nivel de ordenacin les hace similares a los cristales slidos, en cuanto a su estructura. Por eso se les conoce como cristales lqudos y a estos monitores LCD (Liquid Cristal Display). Las molculas del cristal hacen girar a la luz que pasa a travs de ella para hacerla coincidir con su eje de orientacin, o eje ptico. Adems, son sensibles a los campos elctricos, que las hacen alinear sus ejes. A su vez, el LCD tendr unos cristales de vidrio a los lados del cristal lquido, encerrndolo. Estos cristales disponen de unos surcos microscpicos que alinean las molculas del cristal lquido. Una vez que se tiene al cristal lquido encerrado se gira uno de los cristales de vidrio 90, de manera que se retuerce al cristal lquido. Los ejes pticos de las molculas quedan desplazados y obligarn a la luz a realizar giros de 90 en su recorrido de una capa de vidrio a otra. En ambas capas de vidrio se encuentran unos polarizadores que solo permitirn dejar la luz que se oriente en cierta direccin. Si la luz pasa el primer polarizador, en condiciones normales, el segundo no la dejar pasar, ya que realiza un giro de 90. Si, en cambio, se aplica un campo elctrico a ambos lados de la placa, la luz no realizar el giro, ya que las molculas se alinearn, y pasar el segundo polarizador. Esto se hace para cada punto, de manera que cada punto actue como un interruptor lgico, dejando pasar la luz o impidiendo su paso. As pues, observamos que los LCD no crean luz, necesitan una para dejarla, o no, pasar. Normalmente la fuente de luz es un halgeno. Las diferencias tecnolgicas se basan en la herramienta a usar a la hora de permitir o denegar el paso. Se pueden usar electrodos para crear el campo elctrico, pero eso es muy impreciso y puede afectar a otros pxeles prximos. Se puede usar la tecnologa TFT (Transistores de capa delgada) para controlar cada pxel. Estos elementos son ms precisos y no afectan a otros. Monitores LCD a color

Surge el mismo problema que en los CRT. La fuente de luz es homognea, por lo que de donde sale el color? El color se forma al colocar unos filtros de color sobre el cristal lquido, con tres elementos para cada punto y un TFT controlando cada elemento de color. Las nicas diferencias vendrn al colocar los filtros.

59

Sub-Apartado 6.4.2 Impresoras


El objetivo de estos perifricos es mostrar informacin al usuario de manera impresa. Si bien esta informacin es mucho ms lenta, tambin es mucho ms persistente. Funcionamiento

El funcionamiento bsico es igual para todas las impresoras. La informacin a imprimir se enva a travs de la interfaz hasta un buffer de datos. Ah se divide en tres zonas especiales. En primer lugar se traduce en una serie de puntos sobre el papel en el Generador de puntos. Aqu cualquier informacin se convierte en una sucesin de puntos en el papel. Por otra parte, el controlador de la cabeza de la impresora se encarga de mover la cabeza para imprimir los puntos en su posicin correcta. Por ltimo, el controlador de posicin del papel ir haciendo avanzar el papel de manera que no se imprima fuera del mismo.

Tipos de Impresoras

Segn la manera de transformar la informacin al imprimir tenemos: Orientadas al carcter: Recibe del computador los cdigos ASCII a imprimir y consulta una ROM interna para comprobar las secuencias de puntos a imprimir. Normalmente se corresponden con antiguas impresoras de agujas o de tinta. Orientadas a la pgina: Recibe comandos en un lenguaje de descripcin de pginas. El microprocesador de la impresora convierte los comandos en un mapa de bits a partir del cual se generan los puntos.

60

Por el mecanismo de impresin tenemos: Impresoras de agujas. Impresoras de tinta. Impresoras lser. Impresoras de agujas

En estas impresoras las agujas presionan el papel contra una cinta con tinta, al estilo de las antiguas maquinas de escribir.

Sus caractersticas son una pobre calidad, dependiente del nmero de agujas, un gran consumo y ruido y una orientacin bastante marcada al carcter. Se suelen usar como soporte a documentos legales. Impresoras de inyeccin de tinta

En estas impresoras se tienen unos depsitos de tinta. Lo que se hace es lanzar la tinta (especial de secado rpido) en pequeas gotas al papel. Hay varias maneras de provocar la salida de las gotas. Por la accin de una corriente elctrica sobre un cristal piezoelctrico (que cambia de forma con la electricidad) que impulsa la tinta fuera, o bien mediante un elemento trmico que genere una burbuja de vapor que presione la tinta fuera. Estas impresoras pueden ser a color, si disponen de los depsitos adecuados, bien uno solo o bien tres, uno para cada color. El color se genera de manera opuesta a los monitores. Si en aquellos se superponan los efectos de los elementos de las tradas, aqu la tinta evita que se reflejen los colores, dando lugar al cdigo CYMK (Cyan, Yellow, Magenta, blacK).

61

Impresoras lser

Estas impresoras realizan una fotocomposicin de la pgina sobre un rodillo (tambor) mediante lser. El rodillo se ve afectado por el lser y aquellas partes incididas recogern una tinta plstica, denominada toner. Al girar el rodillo aplica el toner sobre la pgina y la imagen queda fijada a la pgina.

Estas impresoras son muy complejas y delicadas, por su uso de la electricidad esttica, el lser, el material sensible al lser, la tinta plstica

62

Apndice 1Historia de IA-32


Bajo el nombre de arquitectura IA-32 1 se recoge la evolucin que ha seguido la arquitectura de los procesadores de Intel destinada al mercado PC desde sus primeros procesadores hasta los procesadores ms populares existentes hoy en da. El calificativo 32 hace referencia al nmero de bits que utiliza internamente el procesador en sus registros y unidades de ejecucin. Si bien, este calificativo no es del todo correcto, ni actual. No es correcto, como ms adelante veremos, pues los primeros procesadores fabricados por Intel utilizaban una arquitectura de 16 bits, y no fue hasta bastante ms tarde cuando se pas a una arquitectura de 32 bits. Por otro lado tampoco es actual, pues fruto de la investigacin Intel y AMD fabrican procesadores actualmente procesadores de 64 bits para el mercado PC.

8086.- Puede decirse que el xito de la arquitectura IA-32 comienza a escribirse a partir de 1978, cuando Intel fabrica el procesador 8086. Esta CPU tena una arquitectura de 16 bits (aunque poda trabajar con datos de 8 bits gracias a sus registros de datos partidos) y poda direccionar hasta 1 MB de memoria gracias a sus 20 bits en el bus de direcciones.
Una versin econmica del 8086, el 8088 (su bus de datos tena 8 lneas en lugar de 16), fue la elegida por IBM para lanzar el PC (Personal Computer), un ordenador destinado a su uso en hogares. El PC fue un gran xito de ventas, sobre todo debido a que IBM public su arquitectura, permitiendo a otros fabricantes desarrollar interfaces, programas e incluso ordenadores compatibles, tambin llamados clnicos. A partir de este momento el xito de la arquitectura IA-32 queda ligado al PC. El 8086 con sus registros de 16 bits y el bus de direcciones de 20 bits introdujo el concepto de acceso a memoria segmentado. Cada segmento poda direccionar hasta 64 KB de memoria, como existan 4 registros de segmento podan llegar a direccionarse 256 KB sin modificar el contenido de los registros de segmento.

80286.- Despus de una versin mejorada del 8086, conocida como 80186, y que no result muy popular2 , se lleg en 1982 al 80286. Esta CPU supuso una revolucin, segua siendo una arquitectura de 16 bits, pero su bus de direcciones tena 24 lneas, lo que le permita direccionar hasta 16 MB. Con ella Intel pretenda cumplir un doble objetivo, por un lado proporcionar el soporte de proteccin necesario para los sistemas operativos multitarea y por otro lado mantener la compatibilidad con el 8086, de forma que fuera posible ejecutar la enorme cantidad de programas existentes para esta CPU. Esto dio lugar a que la CPU se comportara como 2 CPUs, cada una con un modo de funcionamiento diferenciado. As, al nuevo modo de funcionamiento en el que la CPU aportaba proteccin al sistema operativo recibi el nombre de modo protegido. En cambio, a la forma de funcionamiento en la que se comportaba como un 8086 se la denomin modo real.
Entre las mejoras en modo protegido que introdujo el procesador 80286, estaba el uso de los registros de segmento como selectores o punteros a una tabla de descriptores de segmento. Estos descriptores proporcionaban una direccin base de 24 bits que permita la gestin de la memoria virtual en una estructura de segmentos intercambiables. Otros mecanismos de proteccin que implementaba el 80286 incluan el control del lmite de acceso a segmentos, opciones de segmentos de slo lectura o slo ejecucin y hasta cuatro niveles de privilegio para la ejecucin de instrucciones. A pesar se las mejoras aportadas, el modo protegido del 80286 no cuaj y en cambio el 80286 s fue un xito de ventas como un 8086 mucho ms rpido (su frecuencia de reloj llegada hasta los 12.5MHz).

80386.- ms tarde, en 1985, lleg el procesador 80386, este procesador es el primer procesador de 32 bits de la arquitectura IA-32. Esto quiere decir, que tanto sus registros como l s a unidades de ejecucin y los buses de direcciones y datos tenan 32 bits. Con 32 bits en el bus de direcciones es capaz de direccionar 232, o lo que es lo mismo 4 GB.
1

Tambin denominada arquitectura x86.

Los procesadores 80186/80188 integraban dentro del chip del procesador elementos que en las versiones previas se encontraban en el exterior, como el temporizador, el controlador de interrupciones (PIC), el controlador de DMA, etc. Esta versin no result demasiado atractiva, as que se abandon e incluso Intel no la considera en su desarrollo histrico.

63

Con el 80386 Intel mantiene la poltica ya iniciada con el 80286 de establecer la compatibilidad de sus modelos. De esta forma, el 80386 tambin presenta dos modos de funcionamiento, modo real en el que funciona como un 8086 mejorado y modo protegido en el que se comporta como una nueva CPU. En modo real, esta CPU era totalmente comp atible con el 8086, pero adems presentaba la mejora de utilizar los registros de 32 bits. Esta nueva posibilidad fue inmediatamente aprovechada por los programadores. En cambio, las diferencias ms importantes las presentaba en modo protegido. En primer lugar, el modo protegido del 80386 era diferente del 80286, lo que los hacia por tanto incompatibles. Este hecho motivo la rpida desaparicin del 80286, para el cual de todas formas apenas se haban escrito programas en modo protegido. La nueva arquitectura de 32 bits en modo protegido estableca un espacio de direcciones lgico para cada proceso, utilizando para ello un modelo de memoria segmentado (la memoria se compartimentaba en trozos denominados segmentos y referenciados mediante un descriptor de segmento). La segmentacin de memoria del modo protegido poda utilizarse como tal, o bien de forma simplificada en lo que se llam modelo plano de memoria. En este caso todos los registros de segmento se inicializan con el mismo valor para acceder a los 4 GB del espacio de direcciones. El procesador 80386 tambin introdujo la paginacin en la arquitectura IA-32, con un tamao de pgina fijo de 4 KB. El mecanismo de paginacin aport un mtodo de manejo de la memoria virtual significativamente superior al uso de segmentos. La paginacin resulta mucho ms eficiente para la gestin de memoria en los sistemas operativos y adems es completamente transparente a las aplicaciones, y sin necesidad de sacrificar velocidad de ejecucin. Estas nuevas caractersticas hicieron que el 80386 fuera adecuado para soportar los sistemas operativos multitarea modernos como Windows y Linux. Pero, el modo protegido an presentaba otra novedad, el 80386 funcionando en modo protegido permita la posibilidad de ejecutar programas como si fuera un 8086, es lo que Intel denomin el modo 8086 virtual, aunque para utilizarlo es necesario disponer de un sistema operativo adecuado3 . El 80386 supuso un revulsivo en el desarrollo de los computadores, no slo por el establecimiento del nuevo modo protegido que daba soporte a los sistemas operativos multitarea, sino que adems introdujo mejoras tecnolgicas que aumentaron en gran medida el rendimiento del procesador. En este sentido, el 80386 fue el primer procesador de la arquitectura IA-32 en introducir varias etapas de procesamiento de las instrucciones trabajando en paralelo, en concreto seis etapas. La misin de cada una de estas etapas era: La unidad de interfaz al bus, para llevar a cabo el acceso a memoria y a los dispositivos de E/S. La unidad de prebsqueda de cdigo, encargada de recibir el cdigo mquina de la unidad de interfaz al bus y colocarlo en una cola de 16 bytes. La unidad de decodificacin de instrucciones, que decodificaba el cdigo mquina de la unidad de prebsqueda a microcdigo44 . La unidad de ejecucin, encargada de ejecutar el microcdigo de las instrucciones. La unidad de segmento, cuya misin era traducir las direcciones lgicas a direcciones lineales y llevar a cabo las comprobaciones de proteccin. La unidad de paginacin, que traduce las direcciones lineales a direcciones fsicas y lleva a cabo las comprobaciones de proteccin de acceso a pginas de memoria.

Resumiendo, se puede considerar al 80386 como la base de funcionamiento de los PCs modernos tal como los conocemos. El 80386 defini el modo protegido que soporta a los sistemas operativos multitarea actuales, Windows y Linux. A partir del 80386 los procesadores posteriores aportan

3 Cuando desde Windows se utiliza la interfaz de comandos y ejecutamos programas escritos en ensamblador estamos utilizando el modo 8086 virtual, obviamente en estos casos el operativo impone restricciones al tipo de instrucciones que se pueden ejecutar. 4 La arquitectura IA-32 utiliza una unidad de control microprogramada

64

fundamentalmente innovaciones tecnolgicas orientadas a mejorar el rendimiento y extender su funcionalidad, incorporando para ello nuevas instrucciones orientadas a tareas especficas. 80486.- El procesador 80486, aparecido en 1989, aport una mayor capacidad de ejecucin en paralelo. En el 80486 las unidades de decodificacin y de ejecucin se dividieron en cinco etapas segmentadas cada una de ellas, de forma que podan estar ejecutndose simultneamente hasta 5 instrucciones. Hasta este momento, todos los procesadores vistos eran capaces de manejar nmeros enteros en la ALU, pero no tenan hardware capaz de operar con nmeros reales. Las operaciones con reales se lograban por software mediante largos y complicados programas. Para agilizar estos clculos se poda aadir a la CPU un compaero llamado coprocesador matemtico, que es como una ALU especializada en operar con nmeros reales. Este coprocesador reciba el mismo nombre que la CPU pero terminado en 7. As por ejemplo, el coprocesador para el 80386 era el 80387. Sin embargo, el 80486 fue el primer procesador en el cual el coprocesador matemtico se integraba dentro de la CPU. El 80486, adems, fue el primer procesador en incorporar una memoria ultrarrpida en el propio chip de la CPU. Esta memoria recibi el nombre de cache de primer nivel, tena una capacidad de 8 KB y su misin era mantener los datos ms frecuentemente usados. Las mejoras tecnolgicas en el proceso de fabricacin permitieron tambin ir incrementando paulatinamente la frecuencia de reloj, llegando a alcanzar al final de la serie los 100 MHz. tambin al final de la serie, se incorporaron al procesador opciones para el manejo de energa, para usarse con las primeras versiones de ordenadores operados con bateras.

Pentium.- En 1993 aparece el Pentium, rompiendo con la nomenclatura que Intel haba
seguido hasta entonces con sus procesadores. Esta CPU incorpora una gran cantidad de mejoras internas destinadas a lograr que las instrucciones se ejecuten muchsimo ms rpido, sin necesidad de incrementar mucho la velocidad de reloj, inicialmente de 66 MHz, sino logrando que se ejecuten ms instrucciones en menos ciclos. Esto se consigui a costa de triplicar la complejidad interna de la CPU. As, el Pentium estaba dotado de dos cauces de ejecucin, o lo que es lo mismo, poda ejecutar dos instrucciones a la vez replicando todas las unidades de ejecucin (dos ALUs, dos unidades de control, etc). Tambin se duplic el tamao de la memoria cache de primer nivel dividindola en 8 KB para datos y 8 KB para cdigo. En esta memoria cache se permiti por primera vez la tcnica de escritura diferida (write-back) aparte de la de la existente de escritura a travs (write-through). Se le incorpora adems una unidad encargada de realizar la prediccin del destino de los saltos, el gran problema de la segmentacin, utilizando para ello una tabla que recordaba los saltos ms recientes, e integrada en el propio chip. Aunque los registros se mantienen en 32 bits, los buses internos se amplan llegando a 128 y 256 bits, de forma que se aceleran las transferencias internas, mientras que el bus de datos externo crece hasta 64 bits. A medida que fue avanzando la serie, se fue incrementando la frecuencia de reloj llegando a alcanzar los 166 MHz. Se le incorpor tambin al Pentium un controlador de interrupciones avanzado (APIC Advanced Programmable Interrupt Controller) para soportar sistemas con varios procesadores, y finalmente la incorporacin de la tecnologa MMX (Matrix Math Extensions). Las instrucciones MMX, basadas en registros de 64 bits, permiten que una nica instruccin se lleve a cabo sobre un conjunto de datos, en lo que se conoce como modelo de ejecucin SIMD (Simple instruccin mltiples datos) y estn orientadas a la computacin paralela. Estas instrucciones aceleran el procesamiento de imgenes, sonido y aplicaciones de compresin.

La familia P6.- En 1995 Intel introdujo una nueva familia de procesadores conocida con el nombre en clave de P6 y de los cuales el primer representante fue el Pentium Pro, y al que siguieron el Pentium II, Pentium II Xeon, Pentium Celeron, Pentium III y Pentium III Xeon. El objetivo de esta nueva familia era utilizar una nueva micro arquitectura que permitiera incrementar el rendimiento del procesador Pentium manteniendo la misma tecnologa de fabricacin (0.6 micras) y por tanto sin aumentar la frecuencia de trabajo. De esta forma, el procesador Pentium Pro es un procesador superescalar de 3 vas (tiene tres cauces de ejecucin) con 12 etapas en cada una de ellas. En este nuevo procesador se introduce el

65

concepto de ejecucin dinmica (anlisis del flujo de micro-datos5 , ejecucin fuera de orden6 , mejora de la prediccin de salto y ejecucin especulativa7 ) en la implementacin superescalar. Las tres unidades de decodificacin de instrucciones trabajan en paralelo para decodificar el cdigo mquina en operaciones ms pequeas llamadas micro operaciones ( icro-ops cdigos de m operacin de la microarquitectura). Las microoperaciones se llevan a un almacn (pool) de instrucciones, y cuando las interdependencias lo permiten, pueden ser ejecutadas fuera de orden por las cinco unidades de ejecucin paralelas (2 de enteros, 2 de coma flotante y una de interfaz con la memoria). La unidad de retirada se encarga de retirar las microoperaciones completadas en el orden original del programa teniendo en cuenta cualquier salto. La familia P6 tambin incorpor mejoras en el sistema de caches, introduciendo un segundo nivel de caches de 256 KB en el propio chip del procesador y aumentando la velocidad de acceso al primer nivel. Externamente, el bus de direcciones se increment hasta 36 bits, lo que le permita direccionar hasta 64 GB. En 1997 aparece el Pentium II, el cual adems de seguir incrementando la velocidad de reloj (que llega ya a los 300 MHz) y la complejidad interna, aade instrucciones nuevas a la familia P6. Las nuevas instrucciones aadidas son las MMX (Matrix Math Extensions), que permiten a esta CPU trabajar con datos enteros de 64 bits segmentndolos en varios trozos con los que puede operar simultneamente gracias a sus mltiples ALUs. Este tipo de operaciones resultan tiles cuando los datos a procesar representan imgenes o sonido, por lo que la CPU est pensada para mejorar la velocidad de los programas multimedia. Paralelamente, se incrementa el tamao de las caches de primer nivel, pasando a 16 KB para datos y 16 KB para instrucciones y la cache de segundo nivel puede soportar 256 KB, 512 KB 1 MB, a la vez que incrementa su velocidad. Posteriormente van apareciendo nuevas versiones derivadas de la familia P6 que aportan incrementos de rendimiento a la par que la frecuencia de reloj, gracias a las mejoras en la tecnologa de fabricacin. El procesador Pentium II Xeon, orientado a servidores, mantiene las caractersticas de sus predecesores pero adems est pensado para trabajar en entornos de multiprocesamiento, colocando 4, 8 ms de estos procesadores. El tamao de la cache de segundo nivel llega hasta los 2 MB. Por el contrario, el procesador Intel Celeron es una versin barata de procesador orientado a PC domsticos. Este procesador reduce el coste al implementar una cache de segundo nivel de slo 128 KB y utilizar un encapsulado para el chip de plstico. En 1999 aparece el procesador Pentium III que eleva la frecuencia de reloj, introduce las extensiones al procesamiento de instrucciones SIMD (SSE). Las instrucciones SSE extendan el modelo de ejecucin SIMD ya introducido con la tecnologa MMX con un nuevo conjunto de registros de 128 bits y la capacidad de llevar a cabo operaciones SIMD sobre datos flotantes en simple precisin y no slo sobre enteros. Por ltimo , el procesador Pentium III Xeon incrementa los niveles de prestaciones por la ganancia en velocidad al utilizar una tecnologa de fabricacin de 0.18 micras.

Pentium 4.- El procesador Intel Pentium 4 es el primer procesador basado en una nueva micro arquitectura denominada NetBurst que permite al procesador funcionar a velocidades de reloj significativamente ms altas que sus predecesores y por tanto presentar valores de rendimiento muy superiores. De forma muy breve, las mejoras que introduce esta nueva microarquitectura son las siguientes:
5El analisis dinamico del flujo de datos implica el analisis en tiempo real del flujo de datos a traves del procesador, para determinar las dependencias de datos y registros, y de esta forma detectar las oportunidades para ejecutar instrucciones fuera de orden. 6 La unidad de ejecucion fuera de orden puede supervisar simultaneamente muchas instrucciones y ejecuta estas instrucciones en el orden que optimize el uso de las multiples unidades de ejecucion del procesador, manteniendo la integridad de los datos. La ejecucion especulativa se refiere a la capacidad de ejecutar instrucciones que estan ms alla de un salto condicional que todava no ha sido resuelto, y posteriormente devolver los resultados en el orden del flujo de instrucciones original.
7

66

Mejora la velocidad del motor de ejecucin al conseguir que las unidades aritmtico lgicas funcionen al doble de velocidad que el procesador. De esta forma, las operaciones bsicas con enteros se ejecutan en medio ciclo de reloj. El cauce de ejecucin de instrucciones alcanza las 20 etapas de segmentacin Se mejora la unidad de ejecucin dinmica, permitiendo que la unidad de ejecucin especulativa tenga en cuenta hasta 128 instrucciones a ejecutar. Se mejora tambin la capacidad de prediccin de saltos. Se mejora el subsistema de memoria cache. En el primer nivel se introduce un nuevo concepto cache de micro operaciones para las instrucciones 8 . tambin mejora la velocidad de acceso a la cache de segundo nivel.

La ltima innovacin de Intel introducida en el Pentium 4 es lo que denomina tecnologa Hyper-Threading. Esta tecnologa est orientada a la ejecucin simultnea de porciones o instancias de un programa denominadas threads o hilos. Con esta nueva tecnologa, el procesador es capaz de ejecutar en paralelo dos threads o hilos, aprovechando la replicacin de unidades funcionales. Sin embargo, para conseguirlo ha sido necesario duplicar el estado del procesador, o lo que es lo mismo la mayor parte de sus registros. Estas mejoras estn orientadas a programas que trabajan con muchas instancias o rplicas, como son los servidores de pginas web y las aplicaciones de ebusiness en general. Estas y otras mejoras en la microarquitectura, as como la mejora en el proceso tecnolgico de fabricacin han permitido alcanzar las velocidades de procesamiento tan elevadas de los PCs actuales.

Resumen.- A modo de resumen en la Tabla 1 se muestra la evolucin que ha seguido la arquitectura IA-32 en sus poco ms de 25 aos de vida. Se puede observar como se ha incrementado tanto la complejidad como la capacidad de los PCs con unas prestaciones cada vez ms elevadas.

Es una nueva cache situada a continuacion de la unidad de decodificacion. En esta memoria cache en lugar de almacenar el codigo maquina de las instrucciones ms recientemente accedidas, se almacena su decodificacion en micro operaciones, es lo que se llama una traza de micro operaciones. Este paso acelera la ejecucion al no tener que llevar a cabo la decodificacion de la instruccion a ejecutar.

67

El futuro: las arquitecturas de 64 bits.- El siguiente paso en el incremento de las prestaciones de los PCs es incrementar el ancho de sus registros y buses hasta alcanzar los 64 bits, como hace tiempo que han hecho los procesadores de los grandes computadores. El principal impacto de incrementar el bus de direcciones (el datos hace tiempo que se utiliza con 64 bits) sera incrementar el espacio de memoria direccionable que pasara a ser de 264, si bien por motivos tecnolgicos an no se utilizan todos los bits disponibles.
En la actualidad existen varias arquitecturas de 64 bits para los PCs: La arquitectura IA-64 actual, representada por el Itanium. Este procesador fue el fruto de una aventura tecnolgica entre Intel y Hewllet Packard para crear un procesador de 64 bits. Las principales caractersticas de este procesador son sus registros de 64 bits, la incorporacin de un tercer nivel de cache, el uso de un bus de direcciones de 44 bits, lo que le permite direccionar 16 TB (TeraBytes). Este procesador est pensado para la integracin en sistemas multiprocesadores densos. Plantea el inconveniente que rompe con la compatibilidad de la arquitectura IA-32, aunque si puede ejecutar todas las aplicaciones escritas para la arquitectura IA-32, pero mediante emulacin, lo que reduce sensiblemente el rendimiento. La arquitectura AMD64. AMD es el gran rival de Intel en la fabricacin de procesadores y que hasta ahora siempre haba ido a la zaga de Intel. Sin embargo con la arquitectura AMD64, implementada en los procesadores Athlon 64 y Opterom, incorpora registros de 64 bits y un bus de direcciones de 40 bits, lo que le permite direccionar hasta 1 TB. A diferencia de la arquitectura IA-64, la arquitectura AMD64 mantiene la compatibilidad con la arquitectura IA-32, con lo que no existen problemas para ejecutar las aplicaciones escritas para esta arquitectura.

68

Apndice 2 Introduccin al modo real de la arquitectura IA-32


El modo real de la arquitectura IA -32 era el nico modo presente en los procesadores 8088 y 8086, empleados en los primeros PC's. Estos eran procesadores de 16 bits que no proporcionaban ningn tipo de soporte a sistemas operativos multitarea, pues estaban pensados para ejecutar una nica tarea. Por cuestiones de compatibilidad, este modo forma parte de las CPU's IA -32 actuales, aunque estas disponen de modos adicionales, como son el modo protegido y el modo de gestin del sistema A continuacin, se resumen las caractersticas que distinguen el modo real del modo protegido: No existen niveles de privilegio. Por lo tanto, todas las instrucciones asociadas al modo real son accesibles y los mecanismos de proteccin estn desactivados. No proporciona proteccin de memoria. Es decir, no es posible proteger e l rea de memoria que se asigne al sistema operativo de lecturas o escrituras por parte de la tarea.

La figura muestra los espacios de direcciones en modo real y un ejemplo de conversin. Yendo de abajo hacia arriba en la figura, apreciamos en primer lugar como el espacio de direcciones fsicas est definido por 20 bits (los 12 bits ms significativos son siempre cero), es decir, tiene un tamao de 1 Mbyte. A continuacin se aprecia que el mecanismo de paginacin est desconectado, por lo que la direccin lineal coincide con la direccin fsica. Finalmente, tenemos el mecanismo de segmentacin, el cual es una versin muy simplificada del que hay presente en modo protegido. En modo real, el mecanismo de segmentacin recibe un desplazamiento de 16 bits en lugar de un desplazamiento de 32 bits. Adems, no existe tabla de descriptores de segmento, pues todos los segmentos tienen un tamao fijo de 64 Kbytes y la direccin base de 20 bits la proporciona directamente el registro segmento. La direccin base se obtiene multiplicando por 16 el valor almacenado en uno de los registros segmento1 . La figura muestra adems un ejemp lo de conversin de direccin lgica (o segmentada) a direccin fsica.

Los operandos son de 8 16 bits. Hay 8 registros de propsito general de 16 bits: AX, BX, CX, DX, SP, BP, SI y DI, con una funcionalidad anloga a sus versiones extendidas de 32 bits en el modo protegido.

69

Algunos de estos registros permiten acceder independientemente al byte menos significativo y al ms significativo. Este es el caso del registro AX, dividido en los registros AH (byte alto de AX) y AL (byte bajo de AX), el registro BX, dividido en los registros BH (byte alto de BX) y BL (byte bajo de BX), el registro CX, dividido en los registros CH (byte alto de CX) y CL (byte bajo de CX), y el registro DX, dividido en los registros DH (byte alto de DX) y DL (byte bajo de DX). El registro puntero de instruccin en modo real es un registro de 16 bits denominado IP. Este registro contiene los 16 bits menos significativos del registro EIP de modo protegido. El registro FLAGS contiene los 16 bits menos significativos del registro EFLA GS de modo protegido. La pila es nica y est definida por los registros SS y SP. El funcionamiento de la pila es anlogo al de la CPU terica. Cuando se llama a un procedimiento se apila la direccin de retorno, definida en este caso por los registros CS e IP. Cuando se genera una interrupcin se almacena adems el registro FLAGS, anlogo al registro de estado de la CPU terica. Por lo tanto, no existe conmutacin automtica de la pila como en modo protegido y aparecen los mismos problemas con la pila que en la CPU terica.

La tabla de vectores de interrupcin tiene un tamao fijo y ocupa un rango de direcciones tambin fijo. En particular, ocupa el Kbyte ms bajo del espacio de direcciones fsicas (direcciones 00000h-003FFh). En lugar de puertas de 8 bytes contiene vectores de interrupcin de 4 bytes, los cuales proporcionan la direccin lgica de comienzo de la rutina de servicio de interrupcin. De los 4 bytes del vector de interrupcin, los 2 bytes almacenados en las posiciones ms bajas del vector de interrupcin contienen el campo desplazamiento y los dos restantes el campo segmento de la direccin lgica. El modo real de la arquitectura IA-32 incluye adems las siguientes ampliaciones al cdigo nativo 8086 (el que se ejecuta sobre los procesadores 8088, 8086 y el modo real del 80286): Los registros segmento FS y GS pueden usarse. Algunas instrucciones aadidas a la arquitectura IA-32 pueden usarse en modo real. Se define un prefijo de instruccin que permite el uso de operandos de memoria de 32 bits, as como el uso de los registros de propsito general de 32 bits (EAX, EBX, etc.). Se define otro prefijo de instruccin que permite el uso de desplazamientos de 32 bits. Debe tenerse en cuenta que cualquier programa escrito para el modo real de la arquitectura IA-32 que incorpore alguna de las caractersticas anteriores no podr ejecutarse en los procesadores 8088, 8086 y 80286, aunque esto rara vez supondr un problema.

70

Apndice 3 Problemas de proteccin del DOS


Problemtica de la ausencia de niveles de privilegio

Veremos como la ausencia de niveles de privilegio permite que una tarea bloquee el sistema. main() { long int i,j; long int imax; printf("Introduce un entero: "); scanf("%ld", &imax); _asm{ cli ; Pone a 0 el bit IF (bit 9) de FLAGS } /* Bucle de retardo */ for (i = 0; i <= imax; i++) for(j = 0; j <= 1000000; j++); _asm{ sti ; Pone a 1 el bit IF (bit 9) de FLAGS } } Problemtica del espacio de direcciones de memoria no protegido

Realizaremos un programa que escribe en el rea de memoria reservada al sistema operativo DOS. En particular, escribe en la tabla de vectores de interrupcin, en el vector asociado al teclado, provocando que el PC se inicialice. La inicializacin del PC se consigue ejecutando la instruccin ubicada en la direccin FFFF0h. La primera instruccin que ejecutan los procesadores que implementan la arquitectura IA-32 la traen de esa direccin y es por tanto donde comienza la rutina de arranque del PC. main() { /* Direccin de comienzo del vector de interrupcin asociado al teclado. El entero es de tamao 16 bits */ int _far *p = (int _far *)0x00000024; /* Escritura de la tabla de vectores de interrupcin por parte de una aplicacin */ *p = 0xFFF0; /* Escribe el campo desplazamiento de la direccin lineal */ p++; *p = 0xF000; /* Escribe el campo segmento de la direccin lineal*/ }

71

Apndice 4 Llamada a Servicios en Windows


Todos los sistemas operativos definen un conjunto de servicios que definen la mquina virtual. Para llamar directamente a los servicios de un sistema operativo Windows deben realizarse tpicamente las siguientes operaciones: (1) Escribir en un rea de memoria los parmetros del servicio. (2) Escribir en el registro EBX la direccin (lineal) de comienzo del rea anterior. EBX es por tanto un puntero a los parmetros. (3) Llevar al registro EAX el nmero de servicio solicitado. (4) Ejecutar la instruccin INT 2Eh.

En la prctica la llamada a los servicios de Windows no se hace directamente, tal como se indicaba en los pasos anteriores, debido a los siguientes problemas: Los servicios nativos de cada versin del operativo son diferentes. A estos servicios nativos se les llama siguiendo los cuatro pasos anteriores. Esto hace que un programa que use los servicios nativos se ejecutara en una versin del operativo pero no en otra. Los servicios nativos de cada versin de Windows no estn documentados. Los servicios nativos de Windows estn definidos en un conjunto de libreras dinmicas, ubicadas en ficheros con extensin .DLL. Las libreras de enlace dinmico. Las libreras de enlace dinmico permiten economizar memoria y disco, y reducir el tiempo de carga de los programas. Dentro de un sistema multitarea muchas tareas usan habitualmente las mismas libreras, por ejemplo libreras que permiten llamar a servicios del sistema, libreras matemticas, etc. Empleando libreras estticas es necesario disponer de una copia de la librera en memoria para cada tarea que la use, lo que implica un desaprovechamiento de la memoria. Empleando libreras dinmicas hay una sola copia en memoria, compartida por todas las tareas que necesitan acceder a la librera. Adems, el fichero ejecutable de estas tareas no contiene la librera, lo que reduce el tamao del ejecutable y por lo tanto su tiempo de carga. El proceso de enlazado con la librera se retrasa entonces hasta el momento de la carga del programa.

Microsoft proporciona para cada versin de Windows un conjunto de libreras de importacin. Estas libreras proporcionan un conjunto de servicios idnticos a todas las versiones de Windows. De esta forma, los programas que utilizan estas libreras se ejecutan sobre cualquier versin de Windows. Las libreras de importacin son pequeas libreras estticas, almacenadas en ficheros con extensin .LIB, las cuales bsicamente se encargan del enlace y llamada a las DLLs que definen los servicios nativos. Las libreras de importacin y los ficheros de cabecera 6 se encuentran en el SDK o System Development Kit (kit de desarrollo del sistema). Se trata de un paquete de software que Microsoft distribuye gratuitamente7 . Las libreras de importacin definen los servicios como funciones C, a las cuales se puede llamar dentro del programa fuente. Todos estos servicios estn documentados y se pueden encontrar en la ayuda. A la hora de enlazar debe ponerse en la lnea de comandos la librera o libreras requeridas. Por ejemplo CL PROGRAMA.C LIBRERIA.LIB.

72

Apndice 5 Protected-Mode Memory Management


Linear Address Translation (4 -KByte Pages)

Figure 3-12 shows the page directory and page-table hierarchy when mapping linear addresses to 4-KByte pages. The entries in the page directory point to page tables, and the entries in a page table point to pages in physical memory. This paging method can be used to address up to 220 pages, which spans a linear address space of 232 bytes (4 GBytes).

To select the various table entries, the linear address is divided into three sections: Page-directory entryBits 22 through 31 provide an offset to an entry in the page directory. The selected entry provides the base physical address of a page table. Page-table entryBits 12 through 21 of the linear address provide an offset to an entry in the selected page table. This entry provides the base physical address of a page in physical memory. Page offsetBits 0 through 11 provides an offset to a physical address in the page.

Memory management software has the option of using one page directory for all programs and tasks, one page directory for each task, or some combination of the two. Linear Address Translation (4 -MByte Pages)

Figure 3-12 shows how a page directory can be used to map linear addresses to 4-MByte pages.

73

The entries in the page directory point to 4 -MByte pages in physical memory. This paging method can be used to map up to 1024 pages into a 4-GByte linear address space. The 4-MByte page size is selected by setting the PSE flag in control register CR4 and setting the page size (PS) flag in a page-directory entry (see Figure 3-14). With these flags set, the linear address is divided into two sections: Page directory entryBits 22 through 31 provide an offset to an entry in the page directory. The selected entry provides the base physical address of a 4-MByte page. Page offsetBits 0 through 21 provides an offset to a physical address in the page.

(For the Pentium processor only.) When enabling or disabling large page sizes, the TLBs must be invalidated (flushed) after the PSE flag in control register CR4 has been set or cleared. Otherwise, incorrect page translation might occur due to the processor using outdated page translation information stored in the TLBs. Mixing 4-KByte and 4-MByte Pages

When the PSE flag in CR4 is set, both 4-MByte pages and page tables for 4-KByte pages can be accessed from the same page directory. If the PSE flag is clear, only page tables for 4-Kbyte pages can be accessed (regardless of the setting of the PS flag in a page-directory entry). A typical example of mixing 4-KByte and 4-MByte pages is to place the operating system or executives kernel in a large page to reduce TLB mis ses and thus improve overall system performance. The processor maintains 4-MByte page entries and 4-KByte page entries in separate TLBs. So, placing often used code such as the kernel in a large page, frees up 4 -KByte-page TLB entries for application programs and tasks. Memory Aliasing

The IA-32 architecture permits memory aliasing by allowing two page-directory entries to point to a common page-table entry. Software that needs to implement memory aliasing in this manner must manage the consistency of the accessed and dirty bits in the page-directory and page-table entries. Allowing the accessed and dirty bits for the two page-directory entries to become inconsistent may lead to a processor deadlock. Base Address of the Page Directory

The physical address of the current page directory is stored in the CR3 register (also called the page directory base register or PDBR). If paging is to be used, the PDBR must be loaded as part of the processor initialization process (prior to enabling paging). The PDBR can then be changed either explicitly by loading a new value in CR3 with a MOV instruction or implicitly as part of a task switch. There is no present flag in the PDBR for the page directory. The page directory may be notpresent (paged out of physical me mory) while its associated task is suspended, but the operating system must ensure that the page directory indicated by the PDBR image in a task's TSS is present in physical memory before the task is dispatched. The page directory must also remain in memory as long as the task is active.

Page-Directory and Page-Table Entries

Figure 3-14 shows the format for the page-directory and page-table entries when 4-Kbyte pages and 32-bit physical addresses are being used.

74

Figure 3 -15 shows the format for the page-directory entries when 4-MByte pages and 32-bit physical addresses are being used.

The functions of the flags and fields in the entries in Figures 3-14 and 3-15 are as follows: Page base address, bits 12 through 32: o (Page-table entries for 4 -KByte pages.) Specifies the physical address of the first byte of a 4-KByte page. The bits in this field are interpreted as the 20

75

most significant bits of the physical address, which forces pages to be aligned on. (Page-directory entries for 4-KByte page tables.) Specifies the physical address of the first byte of a page table. The bits in this field are interpreted as the 20 most-significant bits of the physical address, which forces page tables to be aligned on 4-KByte boundaries. (Page-directory entries for 4-MByte pages.) Specifies the physical address of the first byte of a 4-MByte page. Only bits 22 through 31 of this field are used (and bits 12 through 21 are reserved and must be set to 0, for IA-32 processors through the Pentium II processor). The base address bits are interpreted as the 10 most-significant bits of the physical address, which forces 4-MByte pages to be aligned on 4-MByte boundaries.

Present (P) flag, bit 0: Indicates whether the page or page table being pointed to by the entry is currently loaded in physical memory. When the flag is set, the page is in physical memory and address translation is carried out. When the flag is clear, the page is not in memory and, if the processor attempts to access the page, it generates a page-fault exception (#PF). The processor does not set or clear this flag; it is up to the operating system or executive to maintain the state of the flag. Read/write (R/W) flag, bit 1: Specifies the read-write privileges for a page or group of pages (in the case of a page-directory entry that points to a page table). When this flag is clear, the page is read only; when the flag is set, the page can be read and written into. This flag interacts with the U/S flag and the WP flag in register CR0. User/supervisor (U/S) flag, bit 2: Specifies the user-supervisor privileges for a page or group of pages (in the case of a page-directory entry that points to a page table). When this flag is clear, the page is assigned the supervisor privilege level; when the flag is set, the page is assigned the user privilege level. This flag interacts with the R/W flag and the WP flag in register CR0. Page-level write-through (PWT) flag, bit 3: Controls the write-through or write-back caching policy of individual pages or page tables. When the PWT flag is set, write-through caching is enabled for the associated page or page table; when the flag is clear, write-back caching is enabled for the associated page or page table. The processor ignores this flag if the CD (cache disable) flag in CR0 is set. Page-level cache disable (PCD) flag, bit 4: Controls the caching of individual pages or page tables. When the PCD flag is set, caching of the associated page or page table is prevented; when the flag is clear, the page or page table can be cached. This flag permits caching to be disabled for pages that contain memory-mapped I/O ports or that do not provide a performance benefit when cached. The processor ignores this flan (assumes it is set) if the CD (cache disable) flag in CR0 is set. Accessed (A) flag, bit 5: Indicates whether a page or page table has been accessed (read from or written to) when set. Memory management software typically clears this flag when a page or page table is initially loaded into physical memory. The processor then sets this flag the first time a page or page table is accessed. This flag is a sticky flag, meaning that once set, the processor does not implicitly clear it.Only software can clear this flag. The accessed and dirty flags are provided for use by memo ry management software to manage the transfer of pages and page tables into and out of physical memory. Dirty (D) flag, bit 6: Indicates whether a page has been written to when set. (This flag is not used in page-directory entries that point to page tables.)

76

Page size (PS) flag, bit 7 page-directory entries for 4-KByte pages: Determines the page size. When this flag is clear, the page size is 4 KBytes and the page-directory entry points to a page table. When the flag is set, the page size is 4 MBytes for normal 32-bit addressing (and 2 MBytes if extended physical addressing is enabled) and the page-directory entry points to a page. If the page-directory entry points to a page table, all the pages associated with that page table will be 4-KByte pages. Page attribute table index (PAT) flag, bit 7 in page-table entries for 4-KByte pages and bit 12 in page-directory entries for 4-MByte pages (Introduced in the Pentium III processor): Selects PAT entry. For processors that support the page attribute table (PAT), this flag is used along with the PCD and PWT flags to select an entry in the PAT, which in turn selects the memory type for the page For processors that do not support the PAT, this bit is reserved and should be set to 0. Global (G) flag, bit 8 (Introduced in the Pentium Pro processor): Indicates a global page when set. When a page is marked global and the page global enable (PGE) flag in register CR4 is set, the page-table or page-directory entry for the page is not invalidated in the TLB when regis ter CR3 is loaded or a task switch occurs. This flag is provided to prevent frequently used pages (such as pages that contain kernel or other operating system or executive code) from being flushed from the TLB. Only software can set or clear this flag. For page-directory entries that point to page tables, this flag is ignored and the global characteristics of a page are set in the pagetable entries.

Reserved and available-to-software bits: For all IA-32 processors. Bits 9, 10, and 11 are available for use by software. (When the present bit is clear, bits 1 through 31 are available to software ). In a page-directory entry that points to a page table, bit 6 is reserved and should be set to 0. When the PSE and PAE flags in control register CR4 are set, the processor generates a page fault if reserved bits are not set to 0. For Pentium II and earlier processors. Bit 7 in a page-table entry is reserved and should be set to 0. For a page-directory entry for a 4-MByte page, bits 12 through 21 are reserved and mu st be set to 0. For Pentium III and later processors. For a page-directory entry for a 4-Mbyte page, bits 13 through 21 are reserved and must be set to 0. Not Present Page-Directory and Page-Table Entries

When the present flag is clear for a page-table or page-directory entry, the operating system or executive may use the rest of the entry for storage of information such as the location of the page in the disk storage system.

77

Apndice 6 Paginacin en Windows

78

You might also like