You are on page 1of 23

MEMORIA SEGMENTADA

8.1. - Organizacin de la memoria............................................ 1 8.2. - La memoria en Modo Real................................................ 2 8.3. - La memoria en Modo Protegido...................................... 4 8.4. - El espacio lgico o virt al................................................ 5 8.!. - El espacio lineal ................................................................ 7 8.5.1. - Descriptores de segmento.......................................... 9 8.5.2. - Tipos de segmentos normales..................................... 11 8.". - Mane#o de los descriptores.............................................. 12 8.$. - %a&las de descriptores..................................................... 14 8.8. - El modelo plano................................................................. 19

Captulo 8 - 1

Captulo 8: Memoria segmentada

8.1- ORGANIZACIN DE LA MEMORIA.


La memoria que controla en Pentium est organi ada en !"tes# pala!ras# do!les pala!ras " cudruples pala!ras. $l !"te es el elemento !sico de la memoria del Pentium. Las pala!ras se almacenan en dos !"tes# quedando el !"te de menor peso en la direcci%n in&erior. Las do!les pala!ras ocupan cuatro !"tes consecuti'os# depositndose el !"te in&erior en la direcci%n ms !a(a " el ms signi&icati'o en la direcci%n superior )num*rica+. ,na cudruple pala!ra consta de oc-o !"tes de direcciones consecuti'as.

D24-D/1

D1A-D2/

D8-D15 D$D:<=;

D9-D7

/1 9

24 2/

1A 15

87 7BT$ n@1A 7BT$ n@12 7BT$ n@8 7BT$ D$ D<$88=>? n@1A P;L;7<; D$ D=<$88=>? n@12 D:7L$ P;L;7<; D$ D=<$88=>? n@8 8,CD<,PL$ P;L;7<; D$ D=<$88=>? n

7BT$ n

.igura 8.1. Distri!uci%n en la memoria de !"tes# pala!ras# do!les pala!ras " cudruples pala!ras.

Dado que el !us de datos es de /2 l0neas di'ididas en 4 grupos de 8# los de do!les pala!ras con'iene que comiencen en una direcci%n m1ltiple de 4# para que un ciclo en un ciclo los /2 !its que se componen se trans&ieran por el !us de datos. 2i no cumple esta condici%n de trans&erencia de la do!le pala!ra se reali a en dos ciclos. Para e'itar estas penali aciones de tiempo las cudruples pala!ras de!en ocupar direcciones de m1ltiplo de 4 " las pala!ras las direcciones pares Para solucionar este pro!lema la memoria de!e estar 3alineadas4# es decir que las pala!ras se encuentren en direcci%n par " las do!les pala!ras en direcciones m1ltiplos de cuatro. Tam!i*n e5isten instrucciones que reconocen los siguientes tipos de datos6 enteros# ordinales# enteros 78D empaquetados " sin empaquetar# punteros de direcciones# campos# cadenas " n1meros en coma &lotante.

Captulo 8- 2

Captulo 8: Memoria segmentada ;dems de los tipos !sicos de estructuras de datos mencionadas# el Pentium mane(a otros dos muc-o ms comple(os6 1. 2egmentos 2. Pginas. Los segmentos son !loques de memoria de tamaEo 'aria!le# que contienen in&ormaci%n de la misma clase " constitu"en el o!(eto principal so!re el que se !asa el mecanismo de protecci%n. La segmentaci%n es e&ica para organi ar la memoria en m%dulos l%gicos de similares caracter0sticas# que son el soporte de la programaci%n estructurada. $s posi!le compartir recursos entre todas las tareas si se sit1an en el espacio glo!al# o !ien# ser e5clusi'os de una tarea concreta si estn u!icados en el rea local de la misma. 2e puede asignar a cada segmento un determinado ni'el de pri'ilegio. =ntel !asa el control de la memoria en la segmentaci%n por eso siempre est acti'ada. La paginaci%n di'ide el espacio de memoria en tro os de longitud &i(a# llamados pginas# que# en el caso del Pentium# tienen un tamaEo de 4 F7 % 4 D7. La paginaci%n simpli&ica la la!or del programador de sistemas al simpli&icar los algoritmos de intercam!io entre o!(etos de la memoria &0sica " la memoria 'irtual# al mane(ar elementos del mismo tamaEo lo que supone un incremento de la 'elocidad en la locali aci%n " relocali aci%n de pginas. La paginaci%n es optati'a " s%lo &unciona cuando la acti'a el programador. La paginaci%n " la segmentaci%n son t*cnicas complementarias " am!as introducen 'enta(as particulares en la gesti%n de la memoria 'irtual. Los sistemas operati'os ,?=G " D:2 son# respecti'amente# e(emplos representati'os de dic-as t*cnicas. $l Pentium es capa de com!inar am!os m*todos cuando &unciona con segmentaci%n paginada. De esta &orma# el programador de aplicaciones estructura la memoria l%gica en segmentos que soportan la multitarea# mientras el programador de sistemas emplea la paginaci%n en el mane(o " trans&erencia de !loques en la memoria &0sica. 8uando s%lo se precisa tra!a(ar con la paginaci%n# al estar acti'a siempre la segmentaci%n# es preciso que toda la memoria &0sica se considere como un 1nico segmento# que ocupa un espacio continuo o lineal. $l modelo 3plano4 permite esta posi!ilidad. $n la segmentaci%n paginada# el Pentium utili a la paginaci%n para descomponer los segmentos en pginas de 4 F7 % de 4 D7 de tamaEo# que se distri!u"en aleatoriamente en la memoria &0sica. ?o todas las que con&orman un segmento tienen que residir en ella# sino s%lo las que 'an a ser procesadas.

8.2- LA MEMORIA EN MODO REAL.


8uando el procesador tra!a(a en Dodo <eal# lo -ace de &orma similar al 898A con el &in de ser compati!le con el so&tHare creado para dic-o microprocesador de 1A !its. Captulo 8- 3

Captulo 8: Memoria segmentada

2iempre que se reali a la operaci%n <$2$T o de puesta en marc-a# el Pentium comien a tra!a(ando en Dodo <eal. $n la memoria en Dodo <eal# se encuentran 8 registros de prop%sito general de 1A !its );G# 7G# 8G# DG# 2P# 7P# 2= " D=+# aunque tam!i*n se pueden encontrar los registros e5tendidos de /2 !its )$;G# $7G# $8G# $DG# $2P# $7P# $2= " $D=+ que son accesi!les para programas que utili an una operaci%n para ignorar el tamaEo de los operandos. ;dems de estos registros generales se encuentran otros que son los denominados registros de segmento )82# D2# 22# $2# .2 " I2+. ;unque los registros .2 " I2 son para programas que e5pl0citamente acceden a ellos. $n este modo se contempla un espacio de direcciones directamente accesi!les por la 8P, de 1D7 )solo usa 29 l0neas de direcciones+# en el que s%lo es posi!le aplicar la t*cnica de la segmentaci%n. 2e multiplica el contenido del registro segmento por 1A )se le aEaden cuatro ceros+ para -allar la !ase del mismo " luego para calcular la direcci%n a acceder# se suma al resultado o!tenido# un despla amiento de 1A !its# lo que implica que el tamaEo m5imo del segmento es de A4 F7. 8omo se 'e en Dodo <eal los selectores de segmento son utili ados para &ormar la direcci%n lineal. D=<$88=>? $.$8T=J; K <2 5 1A @ D$2PL;L;D=$?T: Para direccionar una instrucci%n en el segmento de c%digo# se usa como registro de segmento a 82 " como despla amiento el contenido de =P# que es la parte !a(a )1A !its+ del <egistro Puntero de =nstrucciones )$P=+. 2i se -ace re&erencia a la pila# 22 act1a como registro de segmento " 2P como despla amiento )pala!ra !a(a de $2P+. .inalmente# si se desea direccionar un dato# se toma como registro a D2 por de&ecto# "a que tam!i*n puede actuar $2# .2 o I2# si se e5plicita en la instrucci%n. 8omo despla amiento se usa el que se indique en la propia instrucci%n del operando. $(emplo6 D:J $7G# $26 D$2PL;L;D=$?T: $sta instrucci%n mue'e al registro $7G una in&ormaci%n de /2 !its situada en la memoria en la direcci%n $2 5 1A @ D$2PL;L;D=$?T:. $n la &igura 8.2 se muestra un e(emploD$D:<=; de direccionamiento de la 99999 memoria en Dodo <eal. $n cada momento# la 8P, tiene acti'ados a un segmento de c%digo )re&erenciado por 82+# otro de pila )que selecciona con 22+ " -asta cuatro datos# re&erenciados por D2# $2# .2 " I2.
P<>G=D; =?2T<,88=>? 82 5 1A =P 8>D=I: A4 F7 )DCG+

D;T: $? 8,<2:

D2 5 1A D$2PL;L;D=$?T:

D;T:2

1 D7

22 5 1A 8=D; D$ L; P=L; )T:2+ 2P L:?; L=7<$ L:?; :8,P;D; P=L; .... .

Captulo 8- 4

Captulo 8: Memoria segmentada

.igura 8.2. La manipulaci%n de los registros de segmento " los despla amientos permite re&erenciar en cada momento a las posiciones de memoria que contienen la pr%5ima instrucci%n# el dato en curso " la cima de la pila.

;unque en Dodo <eal el Pentium manipula# por de&ecto# operandos " despla amientos de 1A !its# es posi!le usar elementos de /2 !its de longitud. ;dems# en este modo e5isten nue'as instrucciones respecto al 898A " se -an potenciado otras. Todo ello implica el uso de un 3compilador4 de lengua(e $nsam!lador ms comple(o si se desea alcan ar el m5imo rendimiento. Por otra parte# el Pentium precisa menos ciclos de relo( que el 898A para e(ecutar la ma"or0a de las instrucciones# de esta manera el tiempo de e(ecuci%n del so&tHare para el 898A se reduce nota!lemente cuando se usa el Pentium. $n Dodo <eal# todas de las instrucciones espec0&icas de protecci%n de modo como LLDT )load local descriptor ta!le+ son tan in1tiles como los c%digos innecesarios. 8omo el acceso a las posiciones de los segmentos se -ace mediante direccionamiento relati'o )despla amiento+ se o!tiene como 'enta(a adicional la &acilidad en la relocali aci%n# caracter0stica esencial para soportar la porta!ilidad de los programas so!re di&erentes con&iguraciones &0sicas.

8.3- LA MEMORIA EN MODO PROTEGIDO.


$l Dodo Protegido &ue originalmente implementado en el 8982A para proteger a las di&erentes tareas cuando el sistema est operando en multitarea# contra los posi!les accesos incorrectos o in'lidos. Dentro de la memoria contemplada por el Pentium# se pueden distinguir tres espacios6 $spacio 'irtual o l%gico. $spacio lineal. $spacio &0sico.

Captulo 8- 5

Captulo 8: Memoria segmentada $l espacio 'irtual a!arca toda la dimensi%n de la memoria 'irtual " es el que mane(a el programador de aplicaciones. 8omo la direcci%n 'irtual es de 4A !its el tamaEo del espacio 'irtual )memoria de masa o disco+ es de 2 4A KA4 T7. La ,nidad de 2egmentaci%n# cu"a acti'aci%n siempre es o!ligada# traduce las direcciones 'irtuales a lineales# que reci!en este nom!re porque -acen re&erencia a segmentos que# al situarse so!re la memoria &0sica# tienen dispuestas todas sus posiciones en orden consecuti'o o lineal. 8uando la ,nidad de Paginaci%n# optati'a# no est acti'ada# la direcci%n lineal coincide con la direcci%n &0sica# es decir# la de acceso a la memoria principal ligada directamente a la 8P,. 2i la ,nidad de Paginaci%n est acti'ada# cada segmento se descompone en un n1mero 'aria!le de pginas del mismo tamaEo )4F7 % 4D7+# " la ,nidad de Paginaci%n deposita a dic-as pginas so!re la memoria &0sica en los -uecos que encuentra li!res# no una detrs de otra# lo que signi&ica que la direcci%n lineal se de!e traducir a &0sica de acuerdo con esta distri!uci%n aleatoria de las pginas )&igura 8./+. La memoria &0sica o principal )D<;D+ al direccionarse con /2 !its admite un tamaEo de 2/2 K 4 I7.

,?=D;D D$D:<= ; J=<T,;L )D=28:+ A4 T7 D=<$88=>? L>I=8; D$ 4A 2$ID$?T;8=> ?

D=<$88=>? L=?$;L /2

,?=D;D D$ P;I=?;8=> ?

D=<$88=>? .M2=8; /2

D$D:<=; .M2=8; )<;D<:D+ 4 I7


ma5

4A

2= ?: $2T; ;8T=J;D; L; ,?=D;D D$ P;I=?;8=>?

.igura 8./.Traducci%n de la direcci%n l%gica en direcci%n lineal " &0sica.

Los programas de aplicaciones que procesa el computador s%lo -acen re&erencia a direcciones 'irtuales " es la DD, )integrada en el -ardHare del Pentium+ la que se encargaD=<$88=>? de traducirlas a direcciones &0sicas. 8omo la J=<T,;L memoria &0sica es muc-o ms pequeEa que la 'irtual# la DD, tam!i*n de!er detectar la ausencia de los elementos que no est*n cargados en la 4A memoria &0sica# para comunicrselo mediante una e5cepci%n al 2istema :perati'o# el cual reali a el traslado de dic-os elementos desde la memoria 'irtual a la &0sica )&igura 8.4+.

D$D:<=; J=<T,;L A4 T7 D;G

D$8;?=2D: D$ D=<$88=:?;D=$?T :

/2 D=<$88=>? .M2=8;

D$D:<= ; .M2=8;

4 I7 D;G.

(MMU)
;,2$?8=;

Captulo 8- 6
2=2T$D; :P$<;T=J:

Captulo 8: Memoria segmentada

.igura 8.4. $l mecanismo de direccionamiento traduce la direcci%n 'irtual a &0sica# "# caso de no -allarse el elemento en la memoria# se detecta su NausenciaO " se genera una e5cepci%n encargada de -acer la trans&erencia oportuna que es soportada por el 2istema :perati'o.

8.4- EL ESPACIO VIRTUAL O LGICO.


La direcci%n l%gica que usan los programadores de aplicaciones# consta de dos partes6 1. 'elector( $s un campo de 14 !its# que selecciona un determinado segmento del espacio 'irtual. 2. )esplazamiento( $s un campo reducido de /2 !its que determina una posici%n de un segmento cu"a capacidad m5ima es de 4 I7. $ste campo puede tener una longitud de 1A !its para mantener la compati!ilidad con el so&tHare procedente de los microprocesadores de 1A !its )898A-8928A+# en cu"o caso los segmentos admiten un tamaEo m5imo de A4 F7. $n realidad# el puntero de direcciones 'irtuales tiene el siguiente &ormato6 2$L$8T:<)14+6 D$2PL;L;D=$?T:)/2+# $l campo selector est contenido en los 14 !its de ms peso del registro de segmento " los dos restantes sir'en para re&erenciar al ni'el de pri'ilegio del peticionario del segmento " no se utili an en el direccionamiento propiamente dic-o. Dic-a pare(a de !its &orman el campo <PL. $l campo <PL puede tener 4 ni'eles# teniendo un 'alor m5imo cuando 'ale 99 " un 'alor m0nimo cuando 'ale 11. $n el campo selector est contenido tam!i*n el T= )=ndicador de Ta!la+# que indica que la Ta!la de Descriptor es local )T=K1+ o glo!al )T=K9+# a"udando a locali ar el segmento determinado en la memoria.

Captulo 8- 7

Captulo 8: Memoria segmentada 8omo selector# act1a uno de los registros de segmento de 1A !its# en donde los 14 !its de ms peso son discriminantes " direccionan un m5imo de 1A F descriptores de segmento.
2$L$8T:< / 2 =?D=8$ T= D$2PL;L;D=$?T: 1 /1 9

15 9

<P L )<$I=2T<: 2$ID$?T:+

.igura 8.5. ,na direcci%n l%gica consta de un campo 2$L$8T:< de 1A !its contenido en un registro segmento# " un campo D$2PL;L;D=$?T: de /2 !its.

$l despla amiento es un campo de /2 !its cu"o 'alor se suma a la !ase del segmento para -allar la direcci%n a acceder. 8uando se accede a c%digo " 82 act1a como selector el despla amiento lo con&orma el contenido de $=P. 2i se accede a la pila# 22 -ace de selector " $2P de despla amiento. .inalmente# cuando se accede a datos# uno de los registros de segmento D2# $2# .2 o I2# act1a como selector# " el despla amiento se calcula de acuerdo con el modo de direccionamiento utili ando en la instrucci%n en curso.
15 9 <2 2$L$8T: < 14 <P L /1 9

D$2PL;L;D=$?T:

/2

D. J=<T,;L D=<. J=<T,;L D=28: 24A KA4T7 4A )T<;?2.$<$?8= ;+ ).;LL:+ 2.:.

4A

DD, ,?=D;D D$ 2$ID$?T;8=> ? T;7L; D$ 2$ID$?T:2 /2 ,?=D;D D$ P;I=?;8=>?

D. P<=?8=P;L D<;D 2 K4I7


/2

D=<. L=?$;L

).;LL:+

T;7L; D$ PCI=?;2 /2

D=<. .M2=8;

.igura 8.A.

Captulo 8- 8

Captulo 8: Memoria segmentada Los 14 !its de ms peso del <egistro de 2egmento )<2+ determinan el selector del segmento en la memoria 'irtual " sus dos 1ltimos !its indican el ni'el de pri'ilegio del peticionario )<PL+# es decir# el ni'el de pri'ilegio del segmento que -a solicitado usar ese selector. $l Pentium dispone de un mecanismo -ardHare llamado DD,# ,nidad de Dane(o de Demoria# por el cual con'ierte la direcci%n 'irtual de 4A !its a direcci%n &0sica de /2 !its. La DD, recoge la direcci%n 'irtual de 4A !its " lo introduce en la ,nidad de 2egmentaci%n# que &unciona siempre. La ,nidad de 2egmentaci%n contiene la Ta!la de 2egmentos# que determina " registra los segmentos que estn en la memoria principal " qu* posici%n ocupan. 2i el segmento solicitado est en la memoria principal# se traduce la direcci%n 'irtual a direcci%n lineal de /2 !its " se accede a dic-a posici%n de memoria. 2i por el contrario# no est presente )&allo+# el 2istema :perati'o reali a una trans&erencia que consiste en coger el segmento del disco " lle'arlo a la memoria principal# actuali ando tam!i*n la Ta!la de 2egmentos# para dar curso a la traducci%n de direcci%n 'irtual a direcci%n lineal. $n el caso de que &uncione la paginaci%n# la direcci%n lineal que sale de la ,nidad de 2egmentaci%n pasa a la ,nidad de Paginaci%n. La ,nidad de Paginaci%n contiene la Ta!la de Pginas# que soporta la u!icaci%n de las pginas en que se -an di'idido los segmentos " que estn en memoria principal. 2i la pgina est presente en memoria# la direcci%n lineal se traduce a direcci%n &0sica de /2 !its. 2i no est presente )&allo+# a'isa al 2istema :perati'o para que este realice la trans&erencia correspondiente " actualice las ta!las.

8.5- EL ESPACIO LINEAL.


La ,nidad de 2egmentaci%n siempre se -alla acti'ada en el Pentium " se encarga de traducir la direcci%n l%gica de 4A !its en direcci%n lineal de /2 !its. La direcci%n lineal coincide con la &0sica correspondiente a la memoria principal si la ,nidad de Paginaci%n no est acti'ada. 2e supone que no &unciona la ,nidad de Paginaci%n de(ando para el siguiente cap0tulo la e5plicaci%n de su actuaci%n. Los o!(etos con los que opera la ,nidad de 2egmentaci%n son los segmentos# por lo tanto en la memoria principal sit1a " mue'e segmentos completos. De a-0 pro'iene el nom!re de direcci%n lineal# que signi&ica que la segmentaci%n re&erencia a !loques )segmentos+ que tienen todas sus posiciones ordenadas consecuti'a o linealmente. ;unque la segmentaci%n sea !ene&iciosa dada la adaptaci%n de la memoria a las modernas t*cnicas de programaci%n estructurada# tiene el incon'eniente de tra!a(ar con segmentos de tamaEo 'aria!le# lo que complica el mecanismo de trans&erencia entre las memorias 'irtual " &0sica# as0 como la optimi aci%n en el comportamiento del espacio de esta 1ltima )&igura 8.7+.

Captulo 8- 9

Captulo 8: Memoria segmentada

D=<$88=>? J=<T,;L

4A

DD, ,?=D;D 2$ID$?T: ; 2$ID$?T: 7 D$D:<=; 2$ID$?T: 8 J=<T,;L A4 T7 DCG=D: 24A D$ 2$D$?T;8=>? D$D:<=; P<=?8=P;L

14

/2

@ T;7L; D$28<=PT: < D$ 2$ID$?T: /2 D=<$88=>? L=?$;L )D=<$88=>? .M2=8;+

2$ID$?T: ;

4 I7 DCG=D: 2/2

2$ID$?T: 7 ;,2$?8=; 2$ID$?T: P;I=?;8=>? D$2;8T=J;D;

2=2T$D; :P$<;T=J:

.igura 8.7. La ,nidad de 2egmentaci%n# cuando est desacti'ada la Paginaci%n# traduce las direcciones 'irtuales en lineales )&0sicas+ " opera con segmentos completos# de &orma que en todo momento la memoria principal contiene una parte de los segmentos e5istentes en la memoria 'irtual.

8uando la direcci%n 'irtual -ace re&erencia a un segmento que no est cargado en la memoria principal )puesto que no ca!en todos los e5istentes en la memoria 'irtual+ la ,nidad de 2egmentaci%n detecta su ausencia# o sea# el &allo del segmento. $n esta situaci%n# pro'oca una e5cepci%n# que pone en marc-a una rutina del 2istema :perati'o que se encarga de Captulo 8- 10

Captulo 8: Memoria segmentada trasladar dic-o segmento desde la memoria 'irtual a la memoria &0sica. ;l tener que mane(ar esta rutina trans&erencias de !loques de tamaEo 'aria!le los algoritmos que la con&iguran son largos " comple(os. Tras cargar el segmento en la memoria principal la rutina actuali a la ta!la de segmentos " se da curso al acceso.

8.5.1- Descr !"#res $e se%&e'"#.


$n el modo protegido un segmento queda especi&icado por tres parmetros6 7ase de /2 !its# L0mite o tamaEo de 29 !its " ;tri!utos de 12 !its. ;l con(unto de estas in&ormaciones se llama 3Descriptor4 que es una estructura de 8 !"tes. Los 14 !its de ms peso del <egistro 2egmento )<2+ con&orman el 2elector del 2egmento que act1a como una entrada en la Ta!la de Descriptores# que re&erencia a los segmentos que mane(a la DD, en donde se encuentra la in&ormaci%n necesaria para de&inir al segmento re&erenciado. ,n descriptor de segmento es una estructura de datos compuesta por oc-o !"tes# que contiene los parmetros que de&inen completamente el segmento re&erenciado )!ase# l0mite " derec-os de acceso o atri!utos+. Los Descriptores son t0picamente creados por compiladores# '0nculos# cargadores# o por las operaciones del sistema# pero no aplicaciones de programa. $n la &igura 8.8 se muestra el &ormato que se utili a en la memoria para contener un descriptor de segmento.

2/ I DP7 9 ;JL

29 ;T<=7,T:2

9 7

DP L 7

T=P:

/1 9 D=<$88=>? n@4 D=<$88=>? n 7;2$ )/124+

24 2/

29 19 LMD=T$ )191A+

1A 15

7;2$ )2/-1A+ LMD=T$ )15-9+

@4

7;2$ )15-9+

@9

Captulo 8- 11

Captulo 8: Memoria segmentada


.igura 8.8. .ormato de un descriptor de segmento compuesto por oc-o !"tes# que ocupan dos posiciones de memoria de /2 !its cada una.

;l anali ar la estructura del descriptor# se comprue!a que en ella residen los tres parmetros que determinan un segmento6 1. *ase6 $s un campo de /2 !its que contiene la direcci%n lineal donde comien a el segmento. 2. L+mite6 8ampo de 29 !its que e5presa el tamaEo del segmento. 8omo con 29 !its el tamaEo m5imo es de 1 D7# -a" otro !it complementario en el campo de atri!utos# llamado de granularidad# I# que indica si el l0mite est e5presado en !"tes )IK9+ o en pginas de 4 F7 )IK1+. $n este 1ltimo caso# el tamaEo m5imo del segmento ser0a6 1 D 5 4 F7 K 4 I7 3. ,tri& to o derec-os de acceso6 2e trata de un campo de 12 !its# que proporciona las caracter0sticas rele'antes del segmento. ; continuaci%n se descri!e la &unci%n de di'ersos !its que componen el campo de atri!utos.

*it de presencia .P/( =ndica si el segmento al que re&erencia el descriptor est cargado# o sea# se -alla presente en la memoria principal )PK1+# o !ien# est ausente )PK9+. 2i PK1# la ,nidad de 2egmentaci%n accede a la ta!la de los Descriptores de 2egmento de la DD, " carga la !ase# el l0mite " los atri!utos en el registro cac-* 3in'isi!le4 asociado al registro de segmento correspondiente procediendo a continuaci%n al acceso en la memoria principal. 2i PK9# la ,nidad de 2egmentaci%n genera una e5cepci%n que pone en marc-a una rutina del 2istema :perati'o encargada de trans&erir el segmento re&erenciado desde la memoria 'irtual a la &0sica. Luego# actuali a el 'alor del descriptor en la Ta!la de 2egmentos " da paso a la carga de los parmetros en el registro cac-* " su posterior acceso.

0ivel de privilegio .)PL/( Indica el nivel de privilegio del segmento al que


referencia el descriptor. Su valor puede variar entre el de dos #its. ! el " ! es un campo que consta

%ipo de segmento .'/( Si S$%& el segmento correspondiente al selector es


'normal(& o sea& un segmento de c)digo& de datos o de pila.

2i 2K9# se re&iere a un segmento del sistema# que re&erencia un recurso especial del sistema# como puede ser una puerta de Captulo 8- 12

Captulo 8: Memoria segmentada llamada# un segmento T22# etc. $stos segmentos los mane(a el programador de sistemas. %ipo( Los tres !its de este campo distinguen en los normales si se trata de uno de c%digo# de datos o de pila. ;dems# determinan el acceso permitido6 lecturaPescrituraPe(ecuci%n. Posteriormente se estudian los !its de este campo. ,ccedido .,/( $ste !it se pone automticamente a 1 cada 'e que el procesador accede al segmento. $ste !it tam!i*n podr0a considerarse dentro del Tipo de segmento. Duc-os 2.:. se encargan de !orrar peri%dicamente a este !it " lle'ar la cuenta del n1mero de 'eces que es accedido cada segmento# con el &in de implementar adecuadamente los algoritmos que controlan las trans&erencias entre la memoria 'irtual " &0sica. $n muc-os casos# al estar llena la memoria &0sica# -a" que esta!lecer qu* segmento se -a de eliminar para de(ar sitio a uno nue'o. Para esta la!or se suele aplicar el algoritmo L<,# que selecciona al segmento que menos 'eces se -a"a usado recientemente. Para conocer este dato# el 2.:. lle'a la cuenta del n1mero de accesos a cada segmento. 1ran laridad .1/( Los 29 !its del campo LMD=T$ del descriptor indican el tamaEo del segmento# que estar e5presado en !"tes si IK9# " en pginas de 4 F7 si IK1. $n el primer caso# el tamaEo m5imo del segmento es de 1 D7 " en el segundo# de 4 I7. )e2ecto3grande .)3*/( $n los segmentos de c%digo el !it D )De&ecto+ " en los segmentos de datos de este mismo !it# llamado 7 )Irande+# permiten distinguir los segmentos nati'os de /2 !its para el Pentium. ;s0 se mantiene una compati!ilidad total con el so&tHare creado para el 8928A# sin penali ar las nue'as instrucciones que aporta el Pentium. 2i DK1 tanto las direcciones e&ecti'as como los operandos son de /2 !its. 2i DK9 se toman s%lo 1A. Por e(emplo# la instrucci%n D$8 8G# que decrementa el registro 8G# tendr el mismo c%digo en un segmento perteneciente al 8928A# que la instrucci%n D$8 $8G de un segmento del Pentium. ;dems# la instrucci%n D$8 $8G en un segmento del 8928A " D$8 8G en otro del Pentium# estarn precedidas por un pre&i(o de tamaEo !"te# que indica que el tamaEo del operando es el contrario al tamaEo por de&ecto del tipo de segmento que lo utili a. $n resumen# con este !it es posi!le mane(ar con(untamente segmentos pertenecientes al 8928A con otros del Pentium. )isponi&le .,4L/( $ste !it est en disposici%n del usuario para poder di&erenciar ciertos segmentos que contengan un Captulo 8- 13

Captulo 8: Memoria segmentada tipo determinado de in&ormaci%n o que cu!ran alguna &unci%n espec0&ica. Todos los componentes del descriptor son empleados por la ,nidad de 2egmentaci%n para compro!ar si se satis&ace el con(unto de reglas que protegen a los segmentos# tales como6 1. 2. /. 4. 2i 2i 2i 2i la direcci%n est dentro del tamaEo del segmento. el segmento est presente en la memoria. el ni'el de pri'ilegio del segmento -ace posi!le su acceso. se puede leer# escri!ir o e(ecutar.

8.5.2- T !#s $e se%&e'"#s '#r&()es.


Dentro de los segmentos normales# con el !it 2 K1 en el campo de los atri!utos# -a" dos grandes tipos# cada uno con di'ersas posi!ilidades. 'egmento de cdigo( 1. 2%lo e(ecuta!le. 2. $(ecuta!le " le0!le. /. ;(usta!le o con&orming. 'egmento de datos( 1. 2e puede leer " escri!ir. 2. 2%lo se puede leer. /. $s un segmento de pila.

De los tres !its que componen el campo T=P:# dentro de los atri!utos del descriptor# el !it de ms peso $ )$(ecuta!le+# di&erencia los segmentos de c%digo )$K1+# de los segmentos de datos que no se pueden e(ecutar )$K9+. .igura 8.9
8>D=I: 1 8 <

$ T=P: D;T :2 9 $D Q

.igura 8.9. $l !it $ del campo T=P:# distingue entre segmentos de c%digo )$K1+ " segmento de datos )$K9+. Los otros dos !its toman distinto signi&icado seg1n el tipo de segmento que se trate.

$n caso de que $K1# o sea# se re&erencia a un segmento de c%digo# los otros dos !its de este campo tienen el siguiente cometido6 ,# sta&le o 5on2orming .5/( 2i 8K9# al ser accedido el segmento no cam!ia su ni'el de pri'ilegio.

Captulo 8- 14

Captulo 8: Memoria segmentada 2i 8K1# se llama 3segmento a(usta!le4# porque# cuando se accede a *l# su ni'el de pri'ilegio toma el del segmento que lo -a pedido. $s decir pueden e(ecutarse " compartirse por programas con di&erentes ni'eles de pri'ilegio. Le+&le .R/( $l segmento de c%digo se puede leer si <K1. $n ning1n caso se puede escri!ir un segmento de c%digo.

8uando $K9 " se -ace re&erencia a un segmento de datos# los otros dos !its del campo T=P: tienen el siguiente signi&icado6 E6pansin decreciente .E)/( 2i $DK9# se trata de un segmento de datos normal# datos puros# lo que supone que el crecimiento del mismo se reali a incrementando el 'alor de la direcci%n. 8uando $DK1# se trata de un segmento de pila pues su crecimiento se e&ect1a decrementando el 'alor de la direcci%n que apunta a su cima# es decir# disminu"endo el 'alor de la direcci%n)&igura 8.19+.

D$D:<=; 8<$8$ D$8<$D$?T;?D: L; D=<$88=>? J;8=: 8=D; LL$?: 7;2 $ 2$ID$?T: D$ P=L;

.igura 8.19. Los segmentos de datos con el !it $D K 1# re&erencian a los segmentos de pila# los cuales crecen disminu"endo el 'alor de la direcci%n que apunta su cima.

Escri&i&le .7/( 2i QK1# el segmento de datos se puede leer " escri!ir# mientras que# si QK9 s%lo se puede leer.

8.*- MANE+O DE LOS DESCRIPTORES


; los descriptores de los segmentos s%lo los mane(a el procesador automticamente. ?i el programador de aplicaciones ni el de sistemas tienen acceso a ellos. Los descriptores determinan las caracter0sticas del segmento. Los descriptores estn agrupados en Ta!las disponi!les en la memoria principal. 8uando en un programa se desea acceder a un nue'o segmento Captulo 8- 15

Captulo 8: Memoria segmentada se e(ecuta una instrucci%n. Por e(emplo si se quiere cam!iar de segmento de c%digo se e(ecuta una 3 (mp 82O6D$2PL;L;D=$?T: 4. Dic-a instrucci%n carga el 'alor de 82O en el registro de segmento 82. =nmediatamente que se modi&ica un 'alor de cualquiera de los seis registros de segmento )82# 22# D2# $2# .2 " I2+ el procesador toma como puntero los 14 !its de ms peso de dic-o registro " direcciona una entrada de la Ta!la de descriptores de segmentos. $l contenido de dic-a entrada que son los 8 !"tes de un descriptor los carga en un registro cac-* ultrarpido de A4 !its asociado al registro de segmento modi&icado " a partir de ese momento el procesador toma los 'alores de la 7ase# L0mite " ;tri!utos del descriptor cargado en el registro oculto para direccionar el segmento. $n el caso de ser un segmento de c%digo el despla amiento se carga en el puntero de instrucciones $=P " su 'alor se suma al de la 7ase para determinar la siguiente instrucci%n a e(ecutar )'er &igura 8.11+. 8uando se cam!ie segmento de c%digo se cam!ia el de pila en los que el despla amiento lo determina el 'alor de $2P. 8omo se 'e cada registro de segmento tiene6 ,na parte 'isi!le# que se puede mane(ar con una instrucci%n que puede ser directa )D:J# P:P# LD2#R + o impl0cita# que carga el contenido del registro 82# " otra parte in'isi!le que es cargada por el propio procesador " que a la que no se puede acceder . La carga de los registros de segmento de datos se producen cuando se e(ecute en una instrucci%n un operando u!icado en un nue'o segmento de datos.
<$I=2T<:2 D$ 2$ID$?T: 8222D2$2.2I2 <$I=2T<:2 8;8ST =?J=2=7L$2 2 1 9 A/ /2 /1 12 11 7;2$ LMD=T$;T<=7,T:2 9

15

<PL 14

$L P<:8$2;D:< 8;<I; ;,T:DCT=8;D$?T$

D$28<=PT:< 8 7BT$2

)7;2$/2 @ LMD=T$29 @ ;T<=7,T:212+

T;7L; D$ D$28<=PT:<$2 D$ 2$ID$?T:

Captulo 8- 16

Captulo 8: Memoria segmentada

.igura 8.11. 8on los 14 !its de ms peso del registro de segmento modi&icado se accede a un descriptor de la Ta!la " su contenido )7ase# L0mite " ;tri!uto+ lo carga automticamente el procesador en el registro cac-* asociado.

8.,. - TA-LAS DE DESCRIPTORES.


;l entrar al Dodo Protegido# de!en estar residiendo en la memoria principal las ta!las de descriptores# que contienen las re&erencias precisas para los segmentos que 'a a usar el procesador. $n los Pentium se tra!a(a en un am!iente multitarea# en el que -a" 'arias tareas atendidas por la 8P,# " cada una de estas tareas est &ormada por segmentos. ,n sistema multitarea se compone de un rea glo!al# en la que residen los segmentos comunes a todas las tareas " de un rea local e5clusi'a de cada tarea# con los segmentos propios de cada una )&igura 8.12+.
PL K 9 ?=J$L D;G=D:

T;<$; / D//

PL K 1

PL K 2

8/2

P/2

PL K / ?=J$L D=?=D:

D/1 822 P/9 8I 9 8I / T;<$; IL:7;L PI/ DI / 8/9 D21 PI9 D22

D8 2 P2/

D2/

DI 9 DI 2 811 P11

T;<$; 2

D12

811

P11

T;<$; 1

Captulo 8- 17

Captulo 8: Memoria segmentada

.igura 8.12. ;m!iente multitarea en los Pentium.

8ada segmento del rea glo!al est de&inido por un descriptor# e5istiendo una ta!la# llamada Ta!la de descriptores glo!ales " tam!i*n Ta!la Ilo!al de Descriptores# )IDT+# que contiene todos los descriptores del rea glo!al. ;simismo# e5iste una ta!la para cada tarea# que recoge todos los descriptores de los segmentos de cada una de ellas. 2e trata de las Ta!las de descriptores locales o Ta!las Locales de Descriptores# )LDT+. $5istirn tantas LDT como tareas soporte el sistema. $n un momento determinado el Pentium estar e(ecutando una tarea concreta " tendr acti'as a la IDT " a la LDT correspondiente a la tarea en curso. Dos registros internos de la 8P,# mane(ados por el programador de sistemas# apuntan a la !ase de la IDT " a la !ase de LDT acti'a# denominndose IDT< " LDT<# respecti'amente )&igura 8.1/+.

T;7L;2 L:8;L$2 D$ D$28<=PT:<$2

LDT 1

LDT 2 LDT< T;<$; $? 8,<2:

LDT /

LDT 4

LDT 5

T;7L; IL:7;L D$ D$28<=PT:<$2 D=<$88=:?$2 D$L $2P;8=: J=<T,;L <$.$<$?8=;D :

IDT

IDT<

.igura 8.1/. $n cada instante el Pentium tiene acti'ados a la IDT " a una LDT# la correspondiente a la tarea en curso de procesamiento.

La IDT " la LDT act1an como segmentos del sistema " s%lo son accesi!les por el sistema de e5plotaci%n. La estructura interna de una ta!la de descriptores se muestra en la &igura IDT % 8.14 pudiendo contener un m5imo de 8 F descriptores de oc-o !"tes de LDTD$28<=PT:< tamaEo cada una. La LDT es una ta!la local propia de la tarea en curso " ?D$28<=PT:< D$28<=PT:< D$ 2$ID$?T: T;7L; D$ 2D$28<=PT:< una conmutaci%n de tarea pro'oca automticamente el cam!io D$28<=PT:<$ /1 9 de la LDT a 1D$28<=PT:< 9 2 modi&icaci%n del 'alor en el registro LDT<. tra'*s de la
A4 F7 DCG=D: )A4 7=T2+ IDT< % LDT<

Captulo 8- 18

Captulo 8: Memoria segmentada

.igura 8.14. $structura de ta!las de descriptores.

8omo la 8P, tiene acti'adas dos ta!las de descriptores# IDT " LDTn# -a" un !it en el selector de segmento del registro de segmento# que indica a cual de ellas se re&iere. $s el !it T=6 =ndicador de Ta!la. 8uando T=K1# se selecciona la LDTn# mientras que si T=K9# se -ace re&erencia a la IDT. Los 1/ !its ms signi&icati'os del selector# a los que se denomina M?D=8$# apuntan una de las entradas a la ta!la de descriptores seleccionada con T=. $n realidad# el 'alor de M?D=8$ se multiplica por oc-o para apuntar la direcci%n concreta de inicio del descriptor# puesto que cada uno consta de oc-o !"tes )&igura 8.15+. Las Ta!las de Descriptores tienen un tamaEo m5imo de A4 F7 " contiene un m5imo de 8 F descriptores.
15 =?D=8$ / T= 2 1 <PL 9 <$I=2T<: 2$ID$?T:

1/

?=J$L D$ P<=J=L$I=: D$L P$T=8=:?;<=: T= K 1 LDTnD$28<=PT :< ?D$28<=PT:< 1D$28<=PT:< 9 A4 F7 D;G T= K 9

)2$ L$ ;U;D$? / 8$<:2+

58

1A

IDTD$28<=PT: < DD$28<=PT:< 1D$28<=PT:< 9

IDT< LDT<

.igura 8.15. $l !it T= selecciona la ta!la de descriptores# mientras que el campo =?D=8$# multiplicado por 8# la direcci%n del descriptor seleccionado.

Captulo 8- 19

Captulo 8: Memoria segmentada

$l Pentium no usa al descriptor de la entrada 9 de la IDT# que es un selector nulo# o sea# con todos los !its a 9 )=?D=8$ K9 " T= K9+. $sta circunstancia posi!ilita que el sistema cargue en cualquier registro de segmento un selector nulo sin que se origine una condici%n de e5cepci%n. De esta &orma se puede !orrar el contenido de un registro de segmento cargndolo con ceros. $l descriptor 9 de las LDT puede usarse# puesto que no responde a un selector nulo# "a que el !it T=K1. ; partir del selector " a tra'*s de las ta!las de descriptores# la ,nidad de 2egmentaci%n locali a la !ase del segmento a la que suma el despla amiento para o!tener la direcci%n lineal# que se con'ierte en la direcci%n &0sica cuando se -alla desacti'ada la ,nidad de Paginaci%n )&igura 8.1A+.

15

2$L$8T:< =?D=8$ T= <P L

/1 9

D$2PL;L;D=$?T: D$D:<=; P<=?8=P;L P:2=8=>? ;88$D=D ; /2 LMD=T$ 2$ID$?T : ;88$D=D: /2

14 T;7L;D$28<= PT:<IDT % LDT 7;2$ 2$ID$?T:

,?=D;D D$ 2$ID$?T;8=>?

.igura 8.1A. :!tenci%n de la direcci%n lineal o &0sica por parte de la ,nidad de 2egmentaci%n# cuando est in-i!ida la Paginaci%n

8omo despla amiento del segmento de c%digo se utili a $=P. $2P act1a como despla amiento del segmento de pila. 8uando se accede a datos " se emplea como selector a uno de los registros D2# $2# .2 % I2 el despla amiento 'iene dado por la de&inici%n del operando " su modo de direccionamiento dentro de la instrucci%n a la que pertenece. $n el caso

Captulo 8- 20

Captulo 8: Memoria segmentada ms comple(o# este despla amiento puede 'enir &ormado por cuatro parmetros6 1. ,n registro !ase. 2. ,n registro despla amiento de -asta /2 !its# incluido en la propia instrucci%n. /. ,n registro 0ndice. 4. ,n &actor de escala )51# 52# 54 o 58+# seg1n el n1mero de !"tes del operando. $l organigrama de la &igura 8.17 muestra la o!tenci%n de la direcci%n &0sica correspondiente a una posici%n de un segmento de datos# con un modo de direccionamiento en el que participan un registro !ase# un despla amiento# un registro 0ndice " un &actor de escala.

/1 <$I=2T<: 7;2$6 D$2PL;L;D=$?T: /1 <$I. M?D=8$ M?D=8$ 9 7;2$ /1 9

$28;L;

.;8T:< $28;L; 1# 2# 4# 8

P<:8$D$?T$ D$L D$28<=PT:< 2$L$88=:?;D:

8:?T<:L D$L LMD=T$ D$ 2$ID$?T: 8:?T<:L D$ L:2 D$<$8S:2 D$ ;88$2: 9

J=:L;8=>? $G8$P8=>?

D=<. 7;2$ D$L 2$ID$?T:6

/1 7;2$ 2$ID$?T: D$L

*
D=<$88=>? L=?$;L /1 D=<$88=>? .M2=8; 9

P;I=?;D: V

?: D=<. L=?$;L K D=<. .M2=8;

Captulo 8- 21

2=

Captulo 8: Memoria segmentada

.igura 8.17. Procedimiento por el que se o!tiene la direcci%n &0sica de una posici%n en un segmento de datos# de&inida por un direccionamiento comple(o.

8.8- EL MODELO PLANO


$l mecanismo de segmentaci%n es intr0nseco al Pentium " no puede desacti'arse. $n aquellas aplicaciones " sistemas en los que no se use la segmentaci%n -a" un procedimiento para simular su in-a!ilitaci%n# llamndose plano al modelo de memoria al que se tiene acceso en esta situaci%n. 2e cargan todos los registros de segmento con selectores que apuntan en $2P;8=: las ta!las a descriptores caracteri ados porque el 'alor de su !ase es L=?$;L .... .... S 99999999S " el l0mite ........S. De esta manera# la 8P, s%lo mane(a un 1nico segmento# que a!arca todo el espacio lineal# o sea# los 4 I7 )&igura 8.18+. ?o alterando el 'alor de los registros de segmento# el procesador mane(a seis segmentos que se solapan en el espacio lineal# en !ase a los di&erentes despla amientos# que puesto que admiten /2 !its# pueden alcan ar los 4 I7.
4 I7 LMD=T $ 7;2$ LMD=T$ ;T<=7,T: A/ 9 9999 9999.....-9999 9999.....9999 9999.....-9999 9999.....9999 9999.....-9999 9999.....<$I=2T<:2 D$ 8;8ST :8,LT:2

15 9 8222D2$2.2I22 $L$8T:<$2

Captulo 8- 22

9999 9999 S

Captulo 8: Memoria segmentada

.igura 8.18. $n el modelo 3plano4 el procesador mane(a un 1nico segmento en el que se solapan los segmentos de c%digo# datos " pila# mediante los despla amientos de /2 !its correspondientes a cada uno.

,sando el modelo plano se puede acti'ar la Paginaci%n con o!(eto de conseguir un entorno protegido a ni'el de pginas.

Captulo 8- 23

You might also like