Asignación de memoria Contigua
Cada proceso esta contenido en una unica sección de memoria que esta contigua a la seccion que contiene el siguiente proceso.
Protección de Memoria
Si usamos el esquema del registro de reubicación, tenemos que por cada dirección logica generada el CPU realizara unas comparaciones con el registro limite y con el registro de reubicación, estos registrados son cargados al ocurrir un cambio de contexto por el sistema operativo. De esta manera protegemos al sistema operativo y los programas e información de los usuarios del proceso en ejecución.
- Particionamiento Estatico: La memoria se divide en bloques de memoria (no necesariamente del mismo tamaño) pero su tamaño no puede cambiar, el numero de procesos que pueden estar simultaneamente en memoria es igual al numero de particiones que defina el sistema.
- Ventajas: Simple y facil de implementar, no hay necesidad de compactar la memoria.
- Desventajas: Sufre de fragmentación interna, y si un proceso no cabe en la particion de tamaño mas grande, entonces no podra ejecutarse.
- Particionamiento dinamico: La memoria se divide en particiones de tamaño variable asignando la cantidad exacta de memoria que necesita un proceso. Inicialmente toda la memoria esta disponible (exceptuando la resevada para el SO) para los procesos del usuario.
- Ventajas: Es mas flexible que el particionamiento estático y aprovecha mejor la memoria.
- Desventajas: Sufre de fragmentacion externa, y necesita compactación.
- Estructuras de datos para la Asignación de Memoria en el Particionamiento Dinamico:
- Mapas de Bits: secuencias de bits donde cada bit es una unidad minima de asignación de memoria. si el bit esta en 1 la memoria esta asignada y si esta en cero esta libre o viceversa.
- Listas: Tenemos nodos en donde cada uno tiene, un indicador que nos dira si es un proceso o una cavidad (osea que esta libre), un numero indicando la direccion inicial de este espacio, y otro numero indicando su tamaño, y el apuntador al siguiente nodo.
- Sistema de asociados y compañeros: Se basa en dividir la memoria en dos particiones varias veces hasta que tengamos la partición con menor fragmentación interna para una peticion de memoria dada. Se puede llevar el control de las particiones a travéz de un arbol binario.
- Politicas para la administracion en el particionamiento:
- First fit: Se escoge la primera particion de memoria que sea lo suficientemente grande.
- Next Fit: Igual al First fit pero se empieza la busqueda desde donde termino la busqueda anterior.
- Best Fit: Se busca la particion que satisfaga con la petición y genere menos fragmentación externa, esto es, la particion mas pequeña que sea lo suficientemente grande.
- Worst fit: Se busca la particion que sea mas grande. Busca en todas las particion.
Fragmentacion Externa: Cuando hay suficiente memoria disponible para satisfacer una peticion, pero el espacio disponible no es contiguo que generalmente se debe a que tenemos espacios de memoria libres entre particiones asignadas a procesos en ejecución.
Fragmentacion Interna: Ocurre cuando tenemos espacios de memoria sin usar dentro de un bloque asignado a un proceso, se debe al caso cuando se le asigna a un proceso mas memoria de la que este requiere.