lunes, 15 de abril de 2013

Paginación y segmentación

Paginación
Es una forma de disminuir la fragmentación externa.

Es usada por casi todas las arquitecturas de hardware y por los SO.

Las direcciones lógicas no se disponen continuamente en la memoria física.
Consiste en dividir la memoria física en secciones de memoria, llamadas marcos, y dividir la memoria lógica en secciones del mismo tamaño, llamadas páginas.
El tamaño es fijo, y determinado por el hardware (4kb, 2Mb y 4Mb en i386)

Implementación de Segmentación

El hardware tiene que soportar protección de memoria por registros base/limite.
Las direcciones lógicas determinan el segmento y el offset dentro del segmento y al igual que en paginación, se divide la dirección en dos: una parte define el segmento y otra el offset.
El SO mantiene una tabla de segmentos: La tabla es propia de cada programa. Se guardan las direcciones base y límite del segmento y otra información como ‘tipo de acceso’.
En paginación, los compiladores no tienen que saber si el sistema esta usando paginación o no, ya que siempre crean un continuo de direcciones lógicas. En segmentación, en cambio, los compiladores deben saber si tienen que generar direcciones utilizando segmentos diferentes, tienen que saber por ejemplo que parte de la dirección lógica define el segmento.
Al igual que en paginación, también se puede guardar la tabla de segmentos en registos o en memoria. Si es en memoria, existe un registro especial que indica dónde comienza la tabla de segmentos
En segmentación, la división lógica de la memoria permite definir segmentos RO de texto y compartirlos entre diferentes programas. En paginación pura es mas complicado, ya que una misma página podría tener parte de texto y parte de data




No hay comentarios:

Publicar un comentario