Professional Documents
Culture Documents
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
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.
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
Captulo 8- 4
.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.
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=<$88=>? L=?$;L /2
,?=D;D D$ P;I=?;8=> ?
D=<$88=>? .M2=8; /2
4A
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$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:
.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.
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
.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
4A
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.
Captulo 8- 9
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
2$ID$?T: ;
4 I7 DCG=D: 2/2
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.
2/ I DP7 9 ;JL
29 ;T<=7,T:2
9 7
DP L 7
T=P:
24 2/
29 19 LMD=T$ )191A+
1A 15
@4
7;2$ )15-9+
@9
Captulo 8- 11
;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.
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.
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.
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
D$28<=PT:< 8 7BT$2
Captulo 8- 16
.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.
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
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/+.
LDT 1
LDT /
LDT 4
LDT 5
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
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/
58
1A
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
$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
/1 9
,?=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.
$28;L;
.;8T:< $28;L; 1# 2# 4# 8
J=:L;8=>? $G8$P8=>?
*
D=<$88=>? L=?$;L /1 D=<$88=>? .M2=8; 9
P;I=?;D: V
Captulo 8- 21
2=
.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.
15 9 8222D2$2.2I22 $L$8T:<$2
Captulo 8- 22
9999 9999 S
.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