Está en la página 1de 23

PAGINACIÓN Y SEGMENTACIÓN

Sistemas Operativos
Jorge Boscan Gregory Carrasco Daniel Morillo

ADMINISTRACIÓN DE LA MEMORIA Depende de factores como del diseño del Hardware del sistema

PAGINACIÓN
Dividen los programas en pequeñas páginas , y a la memoria en marcos de página. Permite que el espacio de direcciones lógicas de un proceso no sea contiguo.

SEGMENTACIÓN
Tanto la memoria física como la memoria virtual se dividen en bloques (en general de distinto tamaño, llamados segmentos), que son las que van a disco a medida que se va llenando la memoria física, o se recuperan del disco cuando vuelven a ser necesarias.

Las referencias a la memoria constan de una dirección de la forma (número de segmento. Cada segmento tendrá un nombre y un largo.En un esquema de segmentación un espacio de direcciones lógicas es un conjunto de segmentos. La segmentación permite al programador contemplar la memoria como si constara de varios espacios de direcciones o segmentos. Los segmentos pueden ser de distintos tamaños. . incluso de forma dinámica. desplazamiento).

. 3. Permite modificar y recopilar los programas independientemente. Se presta a la compartición entre procesos.Esta organización ofrece al programador varias ventajas sobre un espacio de direcciones no segmentado: 1. 2. Se presta a la protección. 4. Simplifica la gestión de estructuras de datos crecientes.

Cada entrada de la tabla contiene la dirección de comienzo del segmento correspondiente de la memoria principal.En el estudio de la segmentación simple. se llegó a la conclusión de que cada proceso tiene su propia tabla de segmento y que. la entrada incluye también la dirección de comienzo y la longitud del segmento. se necesita un bit en cada entrada de la tabla de segmentos para indicar si el segmento correspondiente está presente en la memoria principal. Puesto que sólo algunos de los segmentos de un proceso estarán en la memoria principal. así como su longitud. . Si el bit indica que el segmento está en la memoria. la tabla de segmentos del proceso se crea y se carga en la memoria. cuando todos los segmentos se encuentran en la memoria principal. La misma estructura se necesitará al hablar de un esquema de memoria virtual basado en la segmentación donde las entradas de la tabla de segmentos pasan a ser más complejas.

es posible que un segmento se referencia desde las tablas de segmentos de más de un proceso. puesto que cada entrada de la tabla de segmentos incluye la longitud. además de la dirección base. Para conseguir la compartición.Además la segmentación se presta a la implementación de políticas de protección. un programa no podrá acceder por descuido a una posición de la memoria principal más allá de los límites de un segmento. Este mismo mecanismo es válido en un sistema de paginación. .

limite base tabla de segmentos CPU s d < sí + memoria física no trampa: error de direccionamiento .

se ocasiona una trampa al sistema operativo (intento de direccionamiento lógico más allá del final del segmento).Una dirección lógica consta de dos partes: un número de segmentos (s). El número de segmentos se utiliza como un índice en la tabla de segmentos.(d). El desplazamiento (d) de la dirección lógica debe estar entre 0 y el limite del segmento. . y un desplazamiento de dicho segmento . De no ser así. se agrega a la base del segmento para producir la dirección en la memoria física del byte deseado. Si este desplazamiento es legal.

Dada la siguiente tabla de segmentos cuales son las direcciones físicas en las direcciones lógicas. Segmentos Base Limite S a) 0 D 430 0 1 2 3 4 219 2300 90 1327 1952 600 14 100 580 96 b) c) d) e) 1 2 3 4 10 500 400 112 .

b=1327. L= 96. d=400 d<L 400 < 580 1327+400= 1727 e) s=4. b=1952. d=430 d<L 430 <600 219+430= 649 b) s=1. L= 14. b=90. d=10 d) s=3. b=2300. d<L 500 <100 “ERROR” L= 100. L= 600. d=500 .a) s=0. d<L 112 <96 “ERROR” d=112 d<L 10 <14 2300+10= 2310 c) s=2. b=219. L= 580.

90 190 219 819 S2 S0 1327 1907 1952 2048 2300 2314 S3 S4 S1 .

este puede dividirse en páginas. En lugar de tratar un segmento como una unidad contigua. Cada segmento puede ser descrito por su propia tabla de páginas. no necesitan estarlo en memoria real.La segmentación Paginada ayuda al proceso de gestión de memoria •Puede hacerse una combinación de segmentación y paginación para obtener las ventajas de ambas. aunque se encuentren contiguas en memoria virtual. además las páginas de un mismo segmento. . •Los segmentos son usualmente múltiplos de páginas en tamaño. y no es necesario que todas las páginas se encuentren en memoria principal a la vez.

no se necesita tener la correspondiente PMT puede arreglarse un bit adicional (S) a cada entrada de la SMT. de que un segmento sea de tamaño inferior o igual al de una pagina. En cada entrada de la SMT se almacena la información descrita bajo segmentación pura. pero en el campo de dirección se indicara la dirección de la PMT (tabla de mapas de páginas) que describe a las diferentes páginas de cada segmento. en la forma que se presento la pagina pura.•SMT (tabla de mapas de segmentos): una para cada proceso. En el caso. •PMT (tabla de mapas de páginas): una por segmento. cada entrada de la PMT describe una página de un segmento. . que indicara si el segmento esta paginado o no. •JT (tabla de Jobs): que contiene las direcciones de comienzo de cada una de las SMT de los procesos que se ejecutan en memoria. •TBM (tabla de bloques de memoria): para controlar asignación de páginas por parte del sistema operativo.

•El direccionamiento es tridimensional con una dirección de almacenamiento virtual “v=(s. que son contiguas en este almacenamiento.•Las páginas de almacenamiento virtual. no necesitan ser contiguas en el almacenamiento real.p.d)”: .

•Debido a que es posible separar los módulos se hace más fácil la modificación de los mismos. incluso podría retardar la asignación de memoria hasta el momento en el cual se referencia el Array u otra estructura de dato por primera vez. Cambios dentro de un modulo no afecta al resto de los módulos. Así. •Es posible compilar módulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos. •Es posible que los segmentos crezcan dinámicamente según las necesidades del programa en ejecución. . Un ejemplo de esto. •Existe la posibilidad de definir segmentos que aun no existan.•El programador puede conocer las unidades lógicas de su programa. no se asignara memoria. dándoles un tratamiento particular. serian los Arrays cuya dimensión no se conoce hasta tanto no se comienza a ejecutar el programa. En algunos casos. •Es fácil el compartir segmentos. sino a partir del momento que sea necesario hacer usos del segmento.

sin embargo esta también tiene desventajas y ventajas . si los segmentos son devueltos a dicho dispositivo. puede ser necesarios planes de reubicación a nivel de los discos. Estas desventajas bien pueden ser minimizadas por la Segmentación Paginada. mientras los segmentos son de tamaño variable.•Hay un incremento en los costos de hardware y de software para llevar a cabo la implantación. •Debido a que los segmentos tienen un tamaño variable se pueden presentar problemas de fragmentación externas. este pueda ser traído fácilmente de nuevo. pero requiere de mecanismos adicionales de hardware y software. ya que será necesario encontrar nuevamente un área de memoria libre ajustada a su tamaño. tiempo de CPU. lo que conlleva a nuevos costos. •Al permitir que los segmentos varíen de tamaño. que al salir un segmento de la memoria. Esto hace necesaria la existencia de mecanismos más costosos que los existentes para paginación. ya que los discos almacenan la información en bloques de tamaños fijos. lo que puede ameritar un plan de reubicación de segmentos en memoria principal. •Se complica el manejo de memoria virtual. •No se puede garantizar. •La compartición de segmentos permite ahorrar memoria. etc. así como un mayor consumo de recursos: memoria.

•Como los espacios de memoria son paginados. se simplifican las estrategias de almacenamiento. El costo es mayor que en el caso de segmentación pura o paginación pura. . •Se elimina el problema de la fragmentación externa y la necesidad de compactación. •Se hace necesario mantener un número mayor de tablas en memoria. se garantiza la facilidad de implantar la compartición y enlace. lo que implica un mayor costo de almacenamiento. Desventajas de la segmentación paginada •Las tres componentes de la dirección y el proceso de formación de direcciones hace que se incremente el costo de su implantación.Ventajas de la segmentación paginada El esquema de segmentación paginada tiene todas las ventajas de la segmentación y la paginación: •Debido a que los espacios de memorias son segmentados.

La Peor de las Desventajas: Sigue existiendo el problema de fragmentación interna de todas o casi-todas las páginas finales de cada uno de los segmentos. Bajo paginación pura se desperdician solo la última página asignada. mientras que bajo segmentación – paginada el desperdicio puede ocurrir en todos los segmentos asignados. .

porque 2^10=1024 -> suficiente para identificar cada word dentro de la página Entonces. y una dirección base simplemente. . Se dividen los segmentos en páginas de 1K words. Tiene además un campo que indica el tamaño del segmento. el offset del segmento de 16bits esta dividido en 6bits para la página y 10 bits para el offset dentro de la página. Si se usa segmenación pura: Segmentos de 16bits -> 64k x 2bytes -> Segmentos de 128kb -> habría mucha segmentación.Multics 18bit segmentos + 16bit offset. El offset de una página es de 10 bits. (Notar como se definen las páginas dentro de los segmentos). que indica dónde comienza la tabla de segmentos. La tabla de segmentos tiene una dirección base para la tabla de páginas. Hay un registro general. kw=kwords= 1024 words = 2048 bytes. Alineación en words. -> 64kw/1kw -> 64 páginas por segmento -> 6 bits para identificar una página en un segmento. y este se compara directamente con el offset de la dirección original.

•Finalmente. como podría haber 2^18 segmentos y la tabla sería muy grande. se pagina también la tabla de segmentos en 8bits+10 bits. . (páginas de 1K) •Hay una TBL de 16 entradas.

8K propios y 8K compartidos. Cada segmentos tiene hasta 4Gb 3. 2. Las direcciones lógicas tiene 48 bits: 16 para el selector de segmento y 32 para el offset (4Gb por segmento). 6. El selector tiene 13 bits para definir el segmento (8k segmentos). y 2 bits para protección. . Hay 6 selectores. Hay dos tablas de segmentos. Cada proceso puede tener 16K segmentos. una global y compartidas por todos los 5. 4. 1 bits para definir si esta en la tabla pública o privada. Los marcos pueden estar en RAM o en la memoria Swap.Intel 386 y OS/2 1. 8. El offset esta paginado en dos niveles: 10+10+12 bits. para usar en los programas. procesos (GDT) y otra privada sólo para el proceso. 7. Están paginados en marcos de 4Kb.