Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Apuntes de
clase SOE
Semana 9
Gestión de memoria
27 OCTUBRE
1|Página
Sistemas Operativos Empotrados Semana 9
Índice
Introducción ..................................................................................................................... 4
¿Qué es Gestión de memoria? ...................................................................................... 4
Menos es mas ........................................................................................................... 4
Contexto ........................................................................................................................... 4
Hardware Básico ........................................................................................................... 4
Operación Correcta....................................................................................................... 5
Protección de Memoria ................................................................................................ 5
Registros Limite ........................................................................................................ 5
Mapeo de direcciones............................................................................................... 6
Direccionamiento físico VS Direccionamiento Lógico:............................................... 8
Carga Dinámica ........................................................................................................... 9
¿Como Funciona? ..................................................................................................... 9
Asignación de memoria contigua .................................................................................... 10
Concepto .................................................................................................................... 10
Asignación de memoria dinámica ............................................................................... 11
Soluciones al problema de asignación dinámica ..................................................... 11
Fragmentación ............................................................................................................ 11
Fragmentación externa ........................................................................................... 11
¿Como se puede solucionar este problema? .......................................................... 12
Paginación ...................................................................................................................... 12
Método básico ............................................................................................................ 13
Tabla de pagina........................................................................................................... 14
Tamaño de la pagina ................................................................................................... 14
Paginas en Linux ......................................................................................................... 14
Importancia de la paginación ...................................................................................... 14
Tablas de paginas........................................................................................................ 15
2|Página
Sistemas Operativos Empotrados Semana 9
3|Página
Sistemas Operativos Empotrados Semana 9
Introducción
¿Qué es Gestión de memoria?
Desempolvando algunos conocimientos de Arquitectura de computadores, se recordará
la manera en que los sistemas computacionales administran la memoria pero esta vez,
con un énfasis a los Sistemas Operativos Empotrados
Menos es mas
Debemos tener en cuenta que muchas veces no
es valioso tener sistemas de gestión de memoria
muy sofisticados ya que, algo sencillo podría ser
lo suficientemente bueno para lograr el propósito
especifico de nuestro sistema empotrado
Contexto
Hardware Básico
Recordando un poco la jerarquía de memorias se repasarán los tipos de memoria que
posee la arquitectura sobre la que corre el sistema operativo, este proceso se realiza de
un modo transparente tal que el CPU no reconoce de donde está recuperando el dato:
Operación Correcta
Para que se dé la operación correcta
en la memoria RAM se debe:
• Proteger el sistema operativo del
acceso de los procesos del
usuario.
• Proteger los procesos del usuario
los unos de los otros.
Esta protección la debe proporcionar
el hardware
El Sistema operativo no interviene
entre el CPU y el acceso a memoria
Protección de Memoria
Registros Limite
• Se delimitan los espacios de cada proceso a través de dos
registros.
• Se compara todas las direcciones generadas por el
programa del usuario con los registros.
• Cualquier intento de direccionamiento fuera de los
limites validos genera una interrupción al sistema operativo (Segmentation fault ).
• El sistema operativo es el que carga los registros base y limite.
• El sistema operativo puede cambiar los contenidos de los registros, no así el
programa que se esta ejecutando.
5|Página
Sistemas Operativos Empotrados Semana 9
Mapeo de direcciones
6|Página
Sistemas Operativos Empotrados Semana 9
7|Página
Sistemas Operativos Empotrados Semana 9
Debemos recordar a la MMU (Memory Managment Unit) la cual Nos permite tener un
desacople entre las direcciones del programa vs los distintos puntos de memoria donde
se ubica otra forma mas sencilla seria con el siguiente diagrama:
Por lo tanto, al utilizar la MMU se puede hacer una generalización, de los registros limites
o los registros bases vistos en la protección de memoria, ahora se utilizara registro de
relocalización para realizar la protección de memoria.
Este registro lo que hace es sumar un valor a cualquier dirección que quiera acceder el
CPU a través del proceso de usuario
8|Página
Sistemas Operativos Empotrados Semana 9
En el caso del diagrama se ingresaría una dirección lógica la cual se le sumarian 14000
teniendo el cambio a la dirección física que se tiene en memoria.
Carga Dinámica
Hasta el momento se ha hablado de que todo el
programa y sus datos deben estar en memoria para
ejecutarse, sin embargo, ahora se cambiara este
esquema para ofrecer un mejor aprovechamiento del
espacio gracias a la carga dinámica, este concepto dice
que una parte del programa puede estar guardada en
disco duro y se cargara en memoria hasta ser necesario.
Esto implica que dicha rutina no se cargara hasta no ser
llamada.
¿Como Funciona?
• Todas las rutinas se mantienen en el disco.
• El programa principal se carga en memoria y se ejecuta.
• Cuando una rutina llama a otra, verifica si ya fue cargada en memoria previamente.
• Si no ha sido cargada previamente, se carga y se actualizan las tablas de dirección del
programa para reflejar este cambio.
• El tener únicamente lo que se necesita brinda una gran ganancia en el rendimiento.
9|Página
Sistemas Operativos Empotrados Semana 9
Concepto
• La memoria debe acomodar tanto como al sistema operativo como a
los procesos del usuario.
• La asignación de memoria contigua es uno de los métodos primitivos
de asignación de memoria (utilizada en sistemas empotrados
simples).
• Se divide la memoria en dos particiones una para el sistema operativo
y otra para los procesos del usuario
• Se puede localizar el sistema operativo ya sean las direcciones bajas o
en las direcciones altas (Linux se colocan las direcciones altas)
• Cada proceso se encuentra contigo al otro en la memoria
El diagrama explica el funcionamiento, donde sale una dirección lógica del CPU esta
dirección si es menor al registro limite pasa, si no, informa el error, después de ello se
debe identificar cual proceso esta corriendo porque dependiendo de ese proceso se
ejecuta el registro de recolocación y finalmente se accede a memoria.
10 | P á g i n a
Sistemas Operativos Empotrados Semana 9
Fragmentación
Fragmentación externa
El total de memoria libre es suficiente para colocar un proceso, pero los espacios
disponibles no son continuos.
11 | P á g i n a
Sistemas Operativos Empotrados Semana 9
Paginación
• Como se menciono anteriormente menos es mas y el echo de que las direcciones
físicas estén continuas son un método que cumple con las necesidades requeridas
por los sistemas empotrados
• Sin embargo, con la paginación las cosas cambian ya que las direcciones se pueden
encontrar distribuidas
• La paginación evita la fragmentación externa y la necesidad de la compactación (Este
proceso es caro). Estos dos problemas plagan la asignación de memoria contigua.
• Es el esquema de gestión de memoria utilizado en sistemas operativos modernos
• Su implementación es a nivel de sistema operativo y también de hardware
12 | P á g i n a
Sistemas Operativos Empotrados Semana 9
Método básico
• Se divide la memoria física en
frames (Bloque mínimo de
memoria).
• Se particiona la memoria lógica
en bloques del mismo tamaño
llamado páginas.
• Cuando se ejecuta un proceso
sus páginas son cargadas en los
frames disponibles.
• Tenemos una separación total
entre la memoria física y lógica.
• Un proceso puede tener un espacio de direccionamiento de 64 bits, aunque el
tamaño de la memoria sea menor a 264 = 18.44674407𝑥1018 ≃
18 446 744 070 000 000 000 (Mas de 18 Trillones).
Cualquier dirección generada por el CPU estará compuesta por numero de pagina y
offset. La tabla de páginas es única para cada proceso.
13 | P á g i n a
Sistemas Operativos Empotrados Semana 9
Tabla de pagina
La tabla de páginas contiene la dirección base de cada frame en la memoria física La MMU
Ejecutar los siguientes pasos para realizar una traducción.
1) Extraerá el número de la página P y utilizarlo como índice en la tabla de páginas.
2) Extrae el frame number f de la tabla de páginas.
3) Reemplazar P por F para obtener la dirección física.
Tamaño de la pagina
Es una potencia de 2, qué puede variar entre 4 KB y 1
GB por página. (En sistemas operativos modernos el
tamaño habitual es de 4KB)
La MMU ejecuta los pasos para realizar una
traducción:
1) Si el tamaño direccionamiento lógico es 2𝑚
2) Tamaño de la pagina es 2𝑛 bytes
3) Los bits más significativos m – n designan el numero de la página.
Paginas en Linux
Tamaño típico de pagina es de 4KB, sin
embargo, puede soportar el esquema
de huge pages
Verificar el tamaño de la página:
Getconf PAGESIZE
Importancia de la paginación
La paginación nos permite separar la
memoria de lo que se programa sin
tener que pensar el direccionamiento
físico, por lo que es una abstracción que tanto el soporte de hardware como el de sistema
operativo nos permite obtener.
14 | P á g i n a
Sistemas Operativos Empotrados Semana 9
Tablas de paginas
• Son estructuras de datos de cada proceso
• Un puntero de la tabla de paginas se almacena en el Proces Control Block
• Cambia de contexto implica también carga el rendimiento a la tabla de paginas de
ese proceso
¿Como se implementa?
Existen dos posibles maneras de implementar las tablas de páginas.
• Se puede tener un conjunto de registros de alta velocidad sin embargo si se tienen
demasiados registros podría provocar que el tiempo de traducción se aumente
1) Sirve si la tabla es pequeña (menor a 256 entradas).
2) Una tabla de pagina de un CPU moderno tiene hasta 220 entradas
3) Incrementa el tiempo de cambio de contexto
• La tabla de paginas se mantiene en memoria (más utilizado)
1) Se apunta a través del page-table base register.
2) Un cambio de contexto requiere únicamente cambiar el registro.
¿Como se implementa?
Entonces cabe resaltar que el TLB es pequeño y por principio de localidad se debería de
cagar la dirección ya que es muy probable que se utilice en el futuro
Políticas de reemplazo
• Least Recently Used
• Roun Robin
• Random
Protección de memoria
• En ambientes paginados
generalmente se tienen bits para
proteger cualidades de las paginas
• Valores típicos de los bits son read-
write, read only, execute-only
• también se tiene el bot de validez
para identificar si la entrada de una
página corresponde al proceso que
se está ejecutando.
16 | P á g i n a
Sistemas Operativos Empotrados Semana 9
Swapping
El Swapping permite extender el espacio de la memoria RAM haciendo uso del disco duro,
esto se hace porque, aunque se pueden tener múltiples procesos corriendo no todos se
utilizan con la misma frecuencia, se busca que los procesos más frecuentes se encuentren
en la RAM.
En Linux con el comando “htop” se puede visualizar el uso del swp en donde se muestra
la información de los núcleos en la ultima línea se ve el “swp” que en el ejemplo de la
captura se mantiene sin uso ya que la carga que mantenía era leve.
17 | P á g i n a