Documentos de Académico
Documentos de Profesional
Documentos de Cultura
E Scribd
E Scribd
Los datos e instrucciones con los que se trabaja deben estar en memoria principal
Los datos e instrucciones con los que no se trabaja pueden estar descargados a
memoria secundaria
Se debe evitar los fallos de página (necesitar algo que está en memoria secundaria, lo
que nos obliga a esperar a que se traiga hasta memoria principal)
Reubicación:
Como la memoria disponible estará compartida por varios procesos, el programador no
puede conocer mientras programa qué área de memoria se asignará al proceso que está
programando. Cuando se ejecute el programa, el SO asignará un bloque de memoria libre,
que podrá ser diferente en cada ejecución.
Protección:
No resulta conveniente que un proceso pueda acceder (para leer y/o modificar) al espacio
de memoria asignado a otro proceso. El SO debe garantizar la protección de memoria, de
manera que se eviten accesos indebidos accidentales o intencionados.
Compartición:
En ocasiones algunos procesos necesitan intercambiar datos. Estos procesos pueden
querer compartir un área de memoria a la que ambos tengan acceso. El sistema de gestión
de memoria debe permitir en estos casos que los procesos autorizados accedan al bloque
de memoria que comparten, de manera similar a como el sistema de ficheros permite a
través de los permisos que varios usuarios compartan un fichero.
Organización lógica:
Normalmente en un sistema informático la memoria principal está organizada de forma
lineal como una secuencia de posiciones de memoria. Del mismo modo la memoria
secundaria se puede ver como una secuencia de bloques. Esta organización física no se
corresponde con la visión del programador que estructura su programa en diferentes
módulos. El sistema gestor de memoria debe permitir organizar lógicamente partes de la
memoria para acercarse a la visión del programador. La técnica que más fácilmente
sastisface esta necesidad es la segmentación.
Organización física:
Físicamente la memoria está organizada en dos espacios claramente diferenciados:
Memoria principal rápida, volátil y escasa
Permite que la cantidad de espacio dedicado a los procesos no esté limitado por la cantidad de
memoria principal instalada. Es posible tener cargados más procesos y es posible cargar
procesos más grandes.
Cercanía de referencias
Cuando se ejecuta un proceso, la práctica demuestra que no todas sus partes tienen el mismo peso.
En cualquier proceso hay bucles, las instrucciones que están en un bucle se pueden ejecutar
muchas más veces que el resto de instrucciones. Si el SO utiliza memoria virtual, puede mantener
en memoria principal, como conjunto residente, la información con la que se trabaja más a menudo.
En este caso puede que tener el resto de información del proceso en memoria secundaria no
represente una gran pérdida de rendimiento.
Segmentación
La segmentación es una técnica de gestión de memoria que divide dinámicamente la memoria en
diferentes segmentos.
Un segmento:
Tiene un tamaño que se ajusta a lo que va a contener. Cada segmento puede tener un tamaño
diferente.
Es un área contigua de memoria, tiene una dirección de inicio (base) y determinado tamaño
(número de posiciones de memoria que ocupa).
Cuando se utiliza segmentación:
No existe la fragmentación interna, pero sí hay fragmentación externa. Pueden ser necesarias
operaciones de compactación.
Es fácil compartir datos entre procesos. A cada segmento se le puede asignar unos permisos
diferentes, de manera similar a como se realiza la compartición de información en el sistema
de ficheros.
Paginación
La paginación es una técnica de gestión de memoria en la que se divide toda la memoria principal
en marcos de página. Todos los marcos de página tienen el mismo tamaño (típicamente 4K). Los
datos con los que se trabaja están agrupados en páginas, cuando se necesita una página se puede
cargar en cualquier marco de página que esté disponible.
No existe fragmentación externa, pero sí hay una pequeña cantidad de fragmentación interna.
Por cada proceso una tabla de páginas, con una entrada para cada página
correspondiente al proceso.
Descriptor de bloques de disco, para cada página hay una entrada que indica dónde está
almacenada.
Traducción de direcciones
Cuando se utiliza memoria virtual, los procesos utilizan referencias lógicas a otras posiciones de
memoria. Sin embargo el SO, para acabar accediendo a los datos correctos, debe traducir las
direcciones lógicas en direcciones físicas. La manera en la que se realiza esta traducción depende
del esquema de gestión que se utilice. Normalmente el procesador cuenta con hardware específico
(la unidad de gestión de memoria, MMU) para realizar este proceso.
Dirección lógica:
Una dirección de memoria virtual. Identifica un dato en el espacio de memoria virtual, pero
dice muy poco sobre dónde se encuentra realmente este dato.
Dirección física:
Una dirección que identifica una posición de memoria principal.
Una dirección lógica estará compuesta por el número de página y desplazamiento. Para obtener la
dirección física, se buscará en la tabla de páginas del proceso la entrada que corresponda a la
página buscada, y allí se obtendrá la dirección de memoria física en la que se encuentra cargada la
página. Con el desplazamiento se puede acceder a un dato concreto en el interior de la página.
Suponiendo que un sistema informático utiliza direcciones lógicas de 16 bits, de los que se dedican
6 bits al identificador de página y 10 al desplazamiento:
1. Qué máximo número de páginas puede ocupar un proceso (suponiendo que el SO mantiene
una tabla de páginas independiente por cada proceso) ?