Volver a la portada de Duiops
Volver al Web de Duiops
 
   
Menú
Secciones destacadas
Artículos y FAQs
Trucos de Windows
Versiones de Windows
y suites de software
Windows Vista
Windows Media Center
Windows XP
Windows 2000
Windows Millenium
Windows 98/98 SE
Windows 95 OSR-2
Internet Explorer
Office
Otros
Tutorial muy básico
   
Portada
Portada - Artículos y FAQs - Memoria virtual (parte II)
 
Memoria virtual (parte II)

 

Por Jose Manuel Tella Llop, extraído de microsoft.public.es.windows98

(Ver el articulo previo sobre el tema)

NOTA: Como veremos mas adelante, una vez introducidos los conceptos, TODO (casi) es manejado por el HARDWARE del procesador. Esto es lo importante. Por tanto, ningun sistema operativo serio (de 32 bits) puede alejarse de esto en el entorno PC. Lo dicho hasta ahora, y en este capitulo, es valido tanto para win95 / 98, NT así como Linux, por poner un ejemplo. Otra cosa es que ciertos sistema *w95/w98* dejen "abierta" la mano, y ya veremos "cuanto" para compatibilizar hacia abajo el sistema.

=========================================================

SEGMENTACION
-------------

La segmentacion organiza la memoria virtual como una coleccion de unidades de tamaño variable llamadas segmentos. Los segmentos forman la base del mecanismo de tradciion de direcciones virtuales a la dirección lineal (o fisica). Cada segmento queda definido por tres parametros:

1) dirección de base: dirección de comienzo del segmento en el espacio de direcciones lineal.

2) Limite del segmento: el mayor desplazamiento que se puede usar con ese segmento de dirección virtual.

3) Los "atributos" del segmento, que indican por ejemplo, si el segmento se puede leer, escribir o es unicamente de ejecucion de programa, y una cosa muy importante: el nivel de privilegio (recordad =: maximo privilegio, 3 minimo privilegio).

TABLAS DE DESCRIPTORES DE SEGMENTOS
------------------------------------

Un sistema operativo, guarda una tabla de descriptores global (GDT) y la tabla de descriptores local (LDT) correspondiente a una determinada tarea. Las tablas de descriptores, "tambien" se almacenan en segmentos. En este caso unos especiales mantenidos por el sistema operativo y referenciados por el HARDWARE directamente. Esto es lo que lo hace importante. Lo maneja ya el hard.

Está claro, que estos segmentos "deberian" guardarse en memoria superprotegida, accesible unicamente por el propio sistema operativo.

El espacio de direcciones virtual está mapeada en dos secciones iguale:una para la GDT y otra para la LDT.

Cuando entra en funcionamiento la MULTITAREA real, la LDT se cambia por la LDT de la nueva tarea, pero la GDT permanece inalterable. Esto es por lo que la mitad del espacio de direcciones virtuales, pertenece al sistema operativo.

Esto es lo que se denomina "conmutacion de tarea".

La LDT, ademas, contiene descriptores de segmento para los segmentos privados de una tarea. Pero..... varia tareas podrían compartir una LDT comun. En este caso el mismo conjunto de segmentos está disponible para todas ellas ya que tienen la misma LDT compartiendo una unica GDT.

IMPORTANTE:

***** Lo anterior es el caso del subsistema de 16 bits de windows98. Una sola LDT. Por tanto, un "casque" en una tarea de 16 bits, por desgracia, nos influye en "todo" el resto de tareas de 16 bits. Como bastate parte del núcleo de Windows,por compatibilidad, es de 16 bits, esto implica que el casque de una aplicacion de 16 bits, "puede" dejar al sistema totalmente inestable.

Dos tareas pueden tener tambien el mismo descriptor para un segmento compartido en sus LDT respectivas, de esta manera se puede compartir un segmento sin tener que poner su descriptor en la GDT. En este caso, el segmento compartido debe ser tratado con especial atencion por el sistema operativo ya que realmente tiene dos descriptores en dos LDT distintas que deben ser actualizados simultaneamente.

SELECTORES DE SEGMENTO:
------------------------

Un selector de segmento identifica a un segmento. Aunque sea un poco tencico, diremos que en la arquitectura de nuestro PC, un selector de segmento, es de 16 bites de tamaño y contiene tres subcampos:

1) los dos primeros bits, contienen el llamado RPL (Requested Privilege Level) o nivel de privilegio solicitado. Un valor de 2 bits, puede contener de 0 a 3. Es decir el sistema de proteccion anteriormente citado.

2) El siguiente bit, indica un 0 para saber que este selector pertened a la GDT, o un 1 si pertenece a la LDT,

3) y los otros 13 bits, es un indice (numero de orden) del descriptor en las tablas GDT o LDT en funcion del contenido del punto anterior.

USO DEL CAMPO RPL
------------------

Cada vez que un progrma intenta acceder a un segmento, el nivel de privilegio actual (CPL) se compara con el nivel de privilegio del segmento para determinar si el acceso está permitido. En caso de no estar permitido, disparará una "excepcion" y por tanto el sistema operativo tomará control.

==================================================

Bien, si hemos digerido la parte uno, y meditamos un poco sobre esta parte y somos capaces de asimilarla, estaremos ya en disposicion e ver los "descriptores" de segmento y el mecanismo real de la paginacion.

*** Un poco más duro de lo que parecía ¿no?


Volver a Artículos y FAQs

 

     
 

Volver arriba Volver arriba

© 1997-2009 Duiops (http://www.duiops.net)
Prohibida la reproducción parcial o total de los textos o las imágenes

Para comentarios, usa las direcciones e-mail de contacto.