Conceptos Fundamentales de Gestión de Memoria en Sistemas Operativos
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 3,57 KB
Gestión de Procesos: Copy-on-Write (CoW)
La técnica de Copy-on-Write (CoW) funciona permitiendo que los procesos padre e hijo compartan inicialmente las mismas páginas de memoria. Si cualquiera de los procesos escribe en una de las páginas compartidas, se creará una copia de esa página compartida.
Supongamos que el proceso hijo intenta modificar una página que contiene parte de la pila, estando las páginas definidas como de copia durante escritura. El sistema operativo (SO) creará una copia de esa página y la mapeará sobre el espacio de direcciones del proceso hijo. El proceso hijo modificará entonces su página copiada y no la página que pertenece al proceso padre. Cuando se utiliza esta técnica, solo se copian las páginas que sean modificadas por alguno de los procesos; todas las páginas no modificadas podrán ser compartidas por los procesos padre e hijo.
Cuando se determina que se va a duplicar una página, es importante fijarse en la ubicación desde la que se asignará la página libre. Muchos SO proporcionan un conjunto compartido de páginas libres para satisfacer tales solicitudes. Esas páginas libres se suelen asignar cuando la pila o el cúmulo de un proceso deben expandirse o cuando es necesario gestionar páginas utilizando una técnica: el relleno de ceros bajo demanda. Las páginas se llenan de ceros antes de asignarlas, eliminando así el contenido anterior.
Principio de Localidad de Referencia y Hiperpaging
El Principio de Localidad de Referencia afirma que, a medida que un proceso se ejecuta, se va desplazando de una localidad a otra. Una localidad es un conjunto de páginas que se utilizan activamente de forma combinada. Todo programa está generalmente compuesto de varias localidades diferentes, que pueden estar solapadas.
Cuando se invoca una función, esta define una nueva localidad. En esta localidad, las referencias de memoria se hacen a las instrucciones de la llamada a función, a sus variables locales y a un subconjunto de las variables globales. Cuando salimos de la función, el proceso abandona esta localidad.
Si asignamos a un proceso los suficientes marcos como para acomodar su localidad actual, el proceso generará fallos de página para todas las páginas de su localidad, hasta que todas ellas estén en memoria; a partir de ahí, no volverá a generar fallos de página hasta que cambie de localidad. Si asignamos menos marcos que el tamaño de la localidad actual, el proceso entraría en sobrepaginación (también conocida como hiperpaging o thrashing).
Espacio de Direcciones Lógico y Físico
Una dirección generada por la CPU se denomina dirección lógica, mientras que una dirección vista por la unidad de memoria (que se carga en el registro de direcciones de memoria) se denomina dirección física.
Los métodos de reasignación en tiempo de compilación y en tiempo de carga generan direcciones lógicas y físicas idénticas. El esquema de reasignación de direcciones en tiempo de ejecución hace que las direcciones lógicas y físicas difieran. Se utilizan los términos dirección lógica y dirección virtual. El conjunto de todas las direcciones lógicas generadas por un programa es lo que se denomina espacio de direcciones lógicas; el conjunto de todas las direcciones físicas correspondientes a estas direcciones lógicas es un espacio de direcciones físicas.