0% encontró este documento útil (0 votos)
27 vistas63 páginas

Memoria

La gestión de la memoria en un sistema informático se divide en memoria primaria, que es volátil y de acceso rápido, y memoria secundaria, que es persistente y de acceso más lento. Se requiere un gestor de memoria eficiente para manejar múltiples procesos, minimizar la fragmentación y permitir la carga dinámica de programas. La traducción de direcciones lógicas a físicas se realiza mediante una unidad de manejo de memoria, utilizando tablas de páginas para optimizar el acceso a la memoria.

Cargado por

mrjpluzgr
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
27 vistas63 páginas

Memoria

La gestión de la memoria en un sistema informático se divide en memoria primaria, que es volátil y de acceso rápido, y memoria secundaria, que es persistente y de acceso más lento. Se requiere un gestor de memoria eficiente para manejar múltiples procesos, minimizar la fragmentación y permitir la carga dinámica de programas. La traducción de direcciones lógicas a físicas se realiza mediante una unidad de manejo de memoria, utilizando tablas de páginas para optimizar el acceso a la memoria.

Cargado por

mrjpluzgr
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

Gestión de la memoria

• El sistema de memoria incluye todas las partes del computador que


almacena información.
• Está dividido entre memoria primaria y memoria secundaria: la memoria
primaria (también llamada memoria de ejecución) aloja información
mientras está siendo usada por la CPU, la memoria secundaria se refiere
al conjunto de dispositivos de almacenamiento.
• Le memoria primaria puede referenciarse byte a byte, tiene un tiempo de
acceso relativamente corto y suele ser volátil (pierde su contenido cuando el
computador se apaga).
• Le memoria secundaria se referencia como bloques de bytes, tiene un tiempo
de acceso relativamente largo y es persistente (puede alojar contenidos
mientras el computador está apagado).
■■ La memoria física es un conjunto de
celdas referenciables por medio de una
dirección lineal (p.ej. de la 00000h a la
FFFFFh)
■■ Para que un programa se ejecute, su
código y sus datos necesitan estar cargados
en memoria (al menos en parte)
■■ En un sistema multitarea, la memoria 2

ha de repartirse entre los diferentes


procesos
■■ Las rutinas del sistema operativo
también deberán residir en memoria, en
todo o en parte
■■ Puede ser que la memoria principal no
tenga capacidad suficiente para todos los
procesos en ejecución 3
■■ Conseguir que varios procesos puedan
ejecutarse de forma concurrente,
❑❑ evitando los conflictos de uso
❑❑ protegiendo al sistema operativo
❑❑ aprovechando eficazmente el espacio disponible:
■■ Minimizar la memoria desaprovechada
❑❑ Evitar fragmentación
❑❑ Memoria ocupada por varias copias de un mismo objeto
❑❑ Memoria ocupada por las estructuras de datos necesarias para la
operación del gestor de memoria
■■ Carga parcial de programas
❑❑ sin perjudicar el rendimiento: 4
■■ Complejidad temporal
■■ Tiempo de acceso a memoria
■■ Un gestor de memoria ideal debería por
tanto,
❑❑ minimizar la memoria desaprovechada
❑❑ tener una complejidad temporal mínima
❑❑ y presentar un recargo por acceso a memoria
mínimo
❑❑ además de proporcionar una buena 5

protección y una compartición flexible


Etiqueta
Es útil cuando el software esta grabado en Una memoria ROM, ya que no va a ver
ningún cambio en que parte de la memoria se va situar cunado inicie su ejecución
programa fuente

compilador
compilación
módulo objeto
otros objetos
y bibliotecas enlazador
(linker)
programa ejecutable
bibliotecas
del sistema cargador carga
bibliotecas
dinámicas programa y datos
binarios en
memoria ejecución
HARDWARE

13
■■ El compilador traduce direcciones de
memoria
simbólicas a direcciones binarias.
■■ Si las direcciones binarias son
absolutas, el programa sólo se puede
ejecutar en una zona fija de la memoria: NO
ES REUBICABLE.
14
■■ Ej.: los programas con formato .COM
de MS- DOS
■■ Nos interesa que el compilador no
genere direcciones definitivas, sino
direcciones provisionales, reubicables.
Cuando se sepa dónde van a residir el código
y los datos, se convertirán a direcciones
absolutas.
■■ ¿ En qué momento (etapa) se
realiza esta reubicación ? 15

❑❑ Carga (enlazador o cargador) 🡪🡪 Reubicación


estática
■■ Dirección física: la que llega al
chip de memoria
■■ Dirección lógica o virtual: la
generada por la CPU
■■ El dispositivo que traduce
direcciones virtuales a físicas se llama
unidad de manejo de memoria
(MMU, en inglés)
■■ El espacio de direcciones lógicas y el
espacio de direcciones físicas no tienen por 16

qué coincidir
■■ Ejemplo: registro base
■■ Proceso se ejecute
❑❑ Código + Datos 🡪🡪 Memoria física
■■ Consecuencia:
❑❑ Tamaño de un proceso limitado al
tamaño de la memoria física
■■ Carga dinámica
❑❑ postergar la carga en memoria de un
módulo hasta que el programa llame a alguna
rutina del mismo
18
OVERLAY
Fue un sistema operativo muy
Ejemplo: MSDOS limitado

Rutinas
■■ Similar a la carga dinámica, pero efectuando el
enlace
en tiempo de ejecución: bibliotecas dinámicas (DLL)
■■ La DLL se carga en memoria cuando algún
proceso llama a una de sus rutinas. Las llamadas a sus
funciones se efectúan a través de una tabla de punteros.
■■ Si varios procesos emplean la biblioteca
dinámica, sólo se mantiene una copia de ella en
memoria.
■■ Ejemplos de enlace dinámico:
❑❑ UNIX: shared libraries (shlib)
❑❑ Windows: dynamic load libraries (dll) 20
Cuando nosotros compilamos un programa este se convierte en ejecutable allí se hace un encadenamiento
Todas las librerías se agregan a ese programa dejando un programa
bastante grande

Las rutinas de las librerías ya no van a hacer parte del programa ejecutable, si no que ahora esas rutinas van
estar residentes en la memoria y ahora los programas van a invocar esas ructinas
todas las direcciones de memoria que nosotros podemos ver y
utilizar en un programa para almacenar nuestras variables
todas van a ser direcciones lógicas es decir los programas que
desarrollamos, tanto como los usuarios solamente vamos a ver
direcciones lógicas que son direcciones generadas por el cpu y
que también se les conoce o se les llama direcciones virtuales

las direcciones físicas no son visibles para


nosotros es decir tanto como programadores
como usuarios no tenemos acceso a las
direcciones físicas y estas direcciones son vistas
por la unidad de manejo de la memoria la cual la
vamos a llamar mmu qué significa esto memory
management y unit
■■ Objetivo: cuando un proceso queda
bloqueado o en espera, la memoria que ocupa
podría desasignársele.
■■ Intercambio: Cuando un proceso pierde la CPU,
se
vuelca su imagen de la memoria al disco (swap out).
Cuando se decide reanudar el proceso, se recupera
su imagen
sistemadel disco (swap in)
operativo
P1
memoria P2
para usuarios

26
■■ Problemas:
❑❑ aumenta el tiempo de cambio de contexto
❑❑ E/S que accede por DMA
■■ Mejoras:
❑❑ varios procesos en memoria
❑❑ intercambio un proceso mientras se ejecuta
otro

29
■■ ¿Qué se necesita para llevarlo a cabo?
❑❑ Proceso intercambiador (efectúa la mayoría de las
funciones del PMP)
❑❑ Criterios para la elección de la víctima (política de swapping
out)
❑❑ Criterios para elegir los procesos que entran (política de
swapping in)
❑❑ Espacio en disco donde almacenar las imágenes de los
procesos
■■ Area específica para el intercambio (área de swap)
■■ Ficheros de intercambio
❑❑ Criterios para la gestión del espacio de intercambio
(política de gestión del área de swap)
30
■■ Otras consideraciones:
❑❑ ¿ Operaciones de E/S pendientes ?
❑❑ Un proceso intercambiado,
¿ regresa al mismo espacio de memoria que
ocupó previamente ?
❑❑ Versiones modificadas del intercambio
estándar:
■■ Unix
■■ Microsoft Windows 3.1

31
es una tabla que contiene direcciones
de memoria hacia dónde se va a
transferir el control cada, que ocurra
una de las interrupciones.

memoria es el espacio que tengo para


cargar los procesos
partición a la que
voy a asignar a
un proceso

en cual dirección
física inicia esa
partición

contiene el
tamaño de esa
partición
• con el registro base y el registro límite voy a
tener el rango de direcciones lógicas que
corresponden a esa partición
dirección lógica: que voy a tener dentro de la partición, debe ser más
pequeña que el registro límite es decir todas las direcciones lógicas del
proceso deben de estar entre el registro base y el registro límite, sí
alguna dirección esta fuera de ese rango pues obviamente debe de
ocurrir una excepción
podemos tener múltiples particiones y cuando esto ocurre podemos empezar a tener

que se van creando conforme las


particiones empiezan a crear y
empiezan a desaparecer es decir
se van creando huecos
es decir las direcciones se pueden calcular en tiempo de ejecución y ahora pues un pequeño
detalle cada cuando voy a tener que estar moviendo las particiones de acuerdo obviamente
pues esto se va a hacer durante el tiempo de ejecución
512 que es 2 a la 9
10 que es 1024 2

vamos a empezar con la memoria física y esta memoria física ahora se va a dividir en bloques todos del
mismo tamaño los cuales vamos a llamar marcos el tamaño de esos marcos va a ser una potencia de 2
los procesos se van a dividir en bloques del mismo tamaño de los marcos esos son lo que vamos a
llamar las páginas. de tal manera que ahora las páginas de los procesos se van a cargar en los
marcos que se encuentren disponibles
• Paginas
• Paginas

Ejemplo aquí podemos ver que la página 0 del proceso


A quedó en el marco 1, la página 1 del proceso A que
en el marco 3. la página 2 del proceso a en el marco 6 y
la página 3 del proceso a en el marco 9
aquí tenemos 16 marcos numerados del 0 al
Vamos tener un proceso A que va a necesitar o va a medir 4 páginas y las 4 páginas del
proceso se cargan en los marcos 0 1 2 y3
ahora aquí se cargar el proceso B ese proceso b solamente va a necesitar
tres páginas y se va a cargar en los marcos 4 5 y 6
ahora el proceso C que también va a requerir cuatro páginas se van a cargar las páginas en los marcos
7 8 9 y 10
después el proceso b sale de la memoria y por lo tanto los marcos 4 5 y 6 quedan disponibles
pero si llega el proceso D y este es un proceso que requiere cinco páginas estas páginas del
proceso D se pueden cargar en los marcos 4 5 y 6 que quedaron disponibles y después en los
marcos 11 y 12 de esta manera
ahora vamos a tener tablas de páginas que son las tablas de páginas pues son tablas donde en
la parte izquierda de la tabla el índice va a ser el número de página de cada uno de los
procesos y el contenido pues va a ser el marco al cual corresponde esa página por ejemplo del
proceso A la página 0 que está en el marco 0, la página 1 marcó 1, página 2 marcó 2, página 3
marcó 3. Del proceso C la página 0 va a estar en el marco 7 página 1 marcó 8 página 2 marcó
9 página 3 marcó 10 y del proceso D que fue el último que se cargó la página 0 quedó en el
marco 4 la página 1 en el marco 5 la página 2 en el marco 6 la página 13 en el marco 11 y la
página 4 en el marco 2
direcciones lógicas utilizando la paginación las direcciones lógicas se van a componer de número de
página y un desplazamiento, si las páginas son de 4096 bytes el número de página indica cuál es esa
página de 4096 bytes y el desplazamiento, es cuántos bytes me tengo que mover desde donde inició la
página para llegar al byte que yo quiero acceder es decir la dirección lógica que me puede direccionar
un byte dentro de esa página. La dirección lógica en este caso va a ser 13f0 el 1 es el número de página
el 13F 0 es el desplazamiento de esta manera pues hay que recordar que si las páginas son de 4096
bytes van a ser 12 bits para el desplazamiento y el número de páginas es decir este número el
desplazamiento va a ser un número de 12 bits
cómo se hace esta traducción de direcciones, estas direcciones generadas por el cpu se divide en el
número de página este número de páginas se van a utilizar como un índice en la tabla de páginas
donde está la dirección base de cada página en memoria física, es decir el marco y el
desplazamiento que combinado con la base definen la dirección física que se envía a la unidad de
manejo de la memoria
vamos a verlo aquí tenemos por ejemplo el cpu y tenemos una dirección lógica que consta de página y
desplazamiento de acuerdo, esta dirección lógica se genera y se utiliza el número de página como índice en
la tabla de páginas, para obtener el marco aquí los los llamamos F porque en inglés es frame, ahora que
vamos a hacer, este marco le vamos a agregar el desplazamiento y esta va a ser ahora la dirección física con
la cual yo voy a saber cuál es la dirección de memoria física dónde está lo que yo quiero acceder
ejemplo de traducción de dirección aquí tengo por
ejemplo los marcos de la memoria física tengo ocho
marcos numerados del 0 al 7 cada uno de esos marcos
mide 4096 bytes que es 2 a la 12.
voy a tener por ejemplo el proceso que
pertenece a página 0 está cargada en el
marco 2 la página 1 en el marco 3 la
página 2 en el marco 4.
voy a tener una dirección lógica esta es la dirección lógica 0 x 1234,
hay que recordar una cosa que es importantísimo este número está
en hexadecimal y cuando tenemos números en hexadecimal es muy
fácil traducirlos a binario por qué razón porque cada dígito
hexadecimal corresponde a 4 bits de esta manera por ejemplo este 1
2 3 4 si yo lo traduzco a binario tendría que estos primeros 4 bits
corresponden al 1 y los 12 bits restantes es decir de aquí hasta el
final corresponden a los dígitos hexadecimal es 2 3 y 4

estos 4 bits son del número de página estos 12 bits del desplazamiento porque 12 bits porque el
tamaño de la página es de 4096 bytes y 4096 es 2 elevado a la 12
entonces qué es lo que
vamos a hacer pues
vamos a utilizar este 1
como índice en la tabla
de páginas y vamos a
ver que la página 1 está
cargada en el marco 3
ahí lo podemos ver

entonces qué vamos a hacer pues este marco 3 ahora van a ser los primeros bits de la
dirección física y el desplazamiento 234 permanece igual en la dirección física entonces la
dirección lógica 1234 hexadecimal se traduce a la dirección física 3234 hexadecimal

También podría gustarte