1. SEGMENTACIÓN
• Organiza a la memoria como una colección de unidades de
tamaño variables llamadas segmentos, el concepto de
segmentación es eficaz, pero no flexible; por este motivo,
los procesadores 386 y posteriores poseen, la función de
paginación.
• La admón de memoria por segmentación se parece más a un
programa, ya que tiene subrutinas, procedimientos,
funciones, arreglos, stacks, y cada una de éstas estructuras
tiene un identificador asociado y son de longitud variable. Una
dirección específica dentro de ella se puede ver como un
offset de la dirección de inicio.
• La implementación consiste en transformar una dirección de 2
dimensiones <segment,offset> en una dirección física
unidimensional, esta transformación se realiza a través de la
tabla de páginas, donde cada entrada tiene la dirección física
de inicio y la longitud <base,limit>.
2. La tabla es apuntada por el STBR <segment table base
register> y la medida de ella se mantiene en STLR <segment
table length register>Dada una dirección lógica(s,p,d) donde s
es el numero del segmento, p el numero de pagina dentro del
segmento y d es el desplazamiento dentro de la página. Si d
supere el limite del segmento tendría un direccionamiento
ilegal de lo contrario se obtiene la dirección real. 0
1400
Seg 0
Subrutina S0 2400
Num. seg Base Longitud
Programa S1
principal 0 1400 1000 3200
Seg 3
Sqrt S2 1 6300 400 4300
2 4300 400 Seg 2
Pila S3 4700
3 3200 1100 5700 Seg 4
Tabla de S4
simbolos 6300
Seg 1
Mem Virtual 6700
Tabla de segmentos Mem física
3. • Para los procesadores 8086-8088, un segmento es una porción
de memoria de 64Kb como máximo.
• Un "Registro de Segmento" señala el inicio de un segmento en la
memoria mediante una dirección de 16 bits. Para obtener una
dirección completa en un espacio de 1 Mb se multiplica esta
dirección por 16; agregando cuatro 0 a la derecha de la dirección
en binario. Un puntero de 16 bits indica un "desplazamiento" en
relación con su comienzo.
• Una dirección completa se indica en hexadecimales
especificando: El segmento : el desplazamiento. Por
ejemplo, para el segmento lB53, es decir, lB530 y con un
desplazamiento 0100 a partir del comienzo de este segmento, la
dirección será: 1B53:0100
• La segmentación permite fragmentar los programas en
particiones lógicas y aplicarles protecciones. Pero obliga a
cargar la totalidad de un segmento en la memoria física, lo que
no es sencillo si el segmento es importante; por otra parte, un
segmento debe estar ordenado en forma continua en la memoria
central. Esto implica que se perderán posibles "agujeros"
eventualmente disponibles.
4. PAGINACIÓN
• A diferencia de la segmentación la paginación se hace con
tamaños de memoria fijos llamados "páginas".
Gracias a este concepto de paginación, el DOS 6 contiene en la
memoria superior (en la zona libre de los 384 Kb por encima de los
primeros 640 Kb) programas residentes y 'drivers', en las
computadoras 386 y 486.
Se reservan 128 Kb para la RAM video, en las direcciones OAOOOO
a OBFFFE Asimismo, se reservan 128 Kb en la parte superior del
primer megabyte para el DOS, direcciones OEOOOO a
100000, siempre en hexadecimales.
Participación individual.
FRAGMENTACION
5. •Consiste en dividir el proceso en páginas y
cargarlas en marcos de memoria física a medida
que se van necesitando y en el primer marco vacio
que se encuentre. 1 Pg.0-A
2
3 Pg.0-B
4 Pg.1-A
5 Pg.1-B
6 Pg.2-B
1 3
Pag 0 7 Pg.2-A
Pag 1 Pag 0 4 5
Pag 1 8 Pg.3-A
Pag 2 7 6
Pag 3 Pag 2 8 9
Tabla de pag Tabla de pag
Proceso A proceso B del proceso B Pag físicas
del proceso A
6. •Ejemplo. Supongamos que tenemos una máq. de 32 kb de
memoria física y que puede generar direcciones de 16 bits, de 0
a 64k éstas son direcciones virtuales. Las paginas y los marcos
deben ser de igual tamaño, en nuestro ej. Serán de 4k. Por lo
tanto tengo 16 páginas virtuales y 8 marcos.
1 El programa accede a la dirección 0 por la instrucción Move
reg 0, la dirección 0 se manda a MMU que checa que la dir virtual
0 queda en la pag. 0 (0-4095) y que el cuadro de pagina que le
corresponde es 2 (8192-12287).Por lo tanto se transforma a la
dirección en 8192
2 La memoria advierte que hay una solicitud de memoria a la
dirección 8192. En la tabla de pagina la correspondencia
siguiente es de 2 virtual a 6 física entonces Move Reg 8192 se
transforma en Move reg 24576.
3 la dirección virtual 20500 tiene 20 bytes desde el inicio de la
pagina virtual 5 (20480-24575), en la tabla de paginas la pagina
virtual 5 apunta al cuadro de pagina 3 por lo tanto se transforma
en 12288+20= 12308.
7. • Existen 2 notaciones: Direcciones absolutas, indicadas por
un hexadecimal de cinco dígitos, en el rango 00000-FFFFFh, o
en direcciones segmentadas, que utiliza dos grupos de cuatro
dígitos hexadecimales.
• PC XT tenia un Bdir de 20 bits equivalente a 1.048.576. Sin
embargo, el procesador 8088 solo tiene registros de 16 bits, por
lo que solo puede contener 216 posiciones (65.536). La
solución era expresar las direcciones mediante dos palabras de
16 bits, denominadas desplazamiento y segmento que
pueden ser representadas mediante un hexadecimal de cuatro
cifras en el rango 0000-FFFFh. Estas dos palabras pueden ser
traducidas a una dirección de 20 bits mediante la operación
denominada suma con desplazamiento.
• Por ejemplo, el desplazamiento y el segmento es
respectivamente ABCDh y E1FAh, entonces al desplazamiento
se le pone un cero a la derecha ABCD0h (se transforma en un
hexadecimal de 5 cifras). El valor obtenido se suma con el
valor del segmento (E1FAh), así que la dirección
resultante, sería B9ECAh. Para distinguirla de la anterior, esta
última forma se denomina dirección absoluta