Está en la página 1de 17

Sistemas Operativos Empotrados Semana 3

Apuntes de
clase SOE
Semana 9
Gestión de memoria

27 OCTUBRE

Tecnológico de Costa Rica


Bryanth Francisco Rodriguez Alvarez

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

¿Como se implementa? .......................................................................................... 15


TLB Translation Look- Aside Buffer ............................................................................. 15
¿Como se implementa? .......................................................................................... 15
Políticas de reemplazo ............................................................................................ 16
Protección de memoria........................................................................................... 16
Swapping ........................................................................................................................ 17

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:

• Los registros: están directamente en el


núcleo del CPU y se acceden en un ciclo
de reloj, son la memoria más rápida.
• La memoria Cache: se encuentra dentro
del mismo silicio, por lo que el acceso a
estos datos es rápido sin embargo no
tanto como el acceso a los registros.
La gestión del cache se hace únicamente
por medio de hardware sin intervención
del software.
• La memoria principal o RAM: se accede
a través de la transacción del bus de
memoria, por lo que conlleva muchos
ciclos de reloj (memory stall) siendo de
las tres memorias citadas la más lenta.
4|Página
Sistemas Operativos Empotrados Semana 9

Al final de cuentas el propósito de la jerarquía de memorias es garantizar que la


operación sea correcta ya que como se menciono el CPU solo percibe que recupera
un dato, mas no identifica donde estaba dicho dato, simplemente entre más rápido
se encuentre el dato mas alto en la pirámide se encuentra.

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

El hecho que la protección de


memoria se realice por hardware
implica una mejora en el rendimiento y existen varias maneras de implementar esta
protección.

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

En el diagrama anterior se muestra el funcionamiento de los registros limite donde sale


la dirección del CPU, se compara si la misma es mayor o igual al registro base si lo es
puede continuar si no lo es pues enviaría una interrupción al sistema, después compara
que la dirección sea menos al registro limite y si cumple con la condición entonces accede
a memoria si no enviara la notificación que la dirección en memoria no es valida, y que
el sistema operativo decida qué hacer.

Mapeo de direcciones

• Cuando se compila un programa el proceso reside en disco como un


ejecutable binario es a lo que le damos doble clic para ejecutar.

• Luego se lleva a memoria en el contexto de un proceso a ser ejecutado es


decir se le abre un espacio en memoria.

• A como el proceso ejecuta, accede instrucciones y datos desde memoria

• Cuando el proceso termina ese espacio de memoria es reclamado por


otros procesos

6|Página
Sistemas Operativos Empotrados Semana 9

• No necesariamente el espacio de direccionamiento del proceso es igual al


espacio físico

• Durante un proceso las direcciones de memoria son representadas de distintas


maneras (Representación Lógica y Representación Física)

Típicamente el mapeo de direcciones se da en tres etapas:

Compilación: Se genera código absoluto si se sabe la dirección de


memoria especifica a partir de la cual el proceso va a residir (En el
programa lo toma como la dirección 0) “Direccionamiento lógico” A
partir de este direccionamiento se generan las direcciones de Branch
para poder saltar entre instrucciones

Tiempo de carga: Si no se sabe la dirección especifica de donde va a residir


el proceso, el compilador debe generar código relocalizadle. En tiempo de
carga se mapean las direcciones

Tiempo de ejecución: Un proceso puede moverse de un


segmento a otro en tiempo de ejecución. Este es el
método mas utilizado por los sistemas operativos
modernos. (Tablas de páginas)

Por lo tanto, se repasan los tiempos posibles donde se


puede realizar el mapeo de direcciones Ya sea a nivel
de compilación donde se genera un objet file (Binario),
tiempo de carga Por ejemplo cuando se incorporan
rutinas del sistema operativo y cuando se da doble clic
se reserva el espacio de memoria para que corra el
proceso, por ultimo el tiempo de ejecución donde se
puede decidir si el Sistema operativo mueve las
páginas de un proceso.

7|Página
Sistemas Operativos Empotrados Semana 9

Direccionamiento físico VS Direccionamiento Lógico:

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:

En el diagrama es evidente como la Unidad de gestión de memoria se encarga de recibir


direcciones lógicas y las transporta a direcciones físicas dentro de la memoria,
distribuyendo las mismas según la conveniencia del OS

Cuando se habla de “Mapeo de direcciones” en tiempo de carga o compilación habla de


direccionamiento físico mientras que el direccionamiento lógico o virtual se logra en el
tiempo de ejecución donde se puede obtener una dirección virtual o lógica

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

Asignación de memoria contigua


Es un concepto de asignación de memoria Bastante primitiva sin embargo dependiendo
si es de aplicación crítica, se utiliza en sistemas operativos empotrados, resulta que si
utilizamos esquemas de asignación de memoria más sofisticados realmente lo que
tenemos son más puntos de fallo.

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

Asignación de memoria dinámica


Este tipo de asignación lo que nos indica es que los programas que corren durante el
encendido de la maquina van a estar variando. En la asignación continua la memoria
queda con huecos cuando los procesos terminan

Este problema se le denomina fragmentación.

Soluciones al problema de asignación dinámica


Considerando qué hace tiene una cola de procesos que están a la espera de ser
colocados de memoria.
• First-fit:colocar al proceso en el primer espacio de memoria vacío en el que quepa.
La búsqueda puede iniciar desde el inicio de memoria, o desde dónde quedó la
última búsqueda first-fit.
• Best-fit:Colocar el proceso en el espacio de memoria más pequeño qué es lo
suficientemente grande para el proceso. Implica recorrer toda la lista de espacios
vacíos menos de que esté ordenada por el tamaño.
• Worst-fit:Se coloca el proceso en el espacio de memoria vacío más grande.
Nuevamente se debe buscar toda la lista a menos que esté ordenada por tamaño.
Simulaciones han demostrado que first-fit y best-fit son mejores en la utilización de
almacenamiento y tiempo.

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

• Este es un problema que puede ser severo.


• En el peor de los casos tendríamos un espacio desperdiciado entre cada dos
procesos.
• Independientemente del algoritmo que se use, la fragmentación externa es un
problema.
• Para first-fit está estudiado que se pierde un tercio de la memoria debido a
fragmentación.
• Hay otro acercamiento que es la fragmentación interna.

¿Como se puede solucionar este problema?

Compactación: Mover todos los contenidos de


memoria tal que se deja la memoria en un solo bloque
grande. No siempre es posible (direcciones estáticas).

• Algoritmo más básico de compactación mueve


todos los procesos hacia el inicio de la memoria, y
todos los huecos hacia la otra dirección. Este
proceso puede ser muy caro.

Espacio de direccionamiento lógico no contiguo: Es lo que se utiliza en Paginación.

• Se le permite a un proceso tomar memoria física sin importar donde se encuentra


esta.

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

Se realiza a través del syscall


getpagesize().

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.

TLB Translation Look- Aside Buffer


• Sabemos que si la tabla se paginas se tiene en memoria, hay que hacer dos accesos
esto lo hace un proceso muy lento y poco optimo.
• Se puede reducir a un solo acceso si tenemos un cache en el MMU.
• Se debe mantener pequeña entre 32y 1024 entradas.
• Algunos procesadores tienen TLB de instrucción y de datos.

¿Como se implementa?

• El CPU genera la dirección si


esta se encuentra en el TLB se
obtiene un TLB hit y se puede hacer la
traducción directamente y se genera
la dirección efectiva
• Si no se encuentra se debe ir
hasta memoria RAM para encontrar
la tabla de paginas la MMU Recupera
la dirección del frame necesario y
genera la dirección física
15 | P á g i n a
Sistemas Operativos Empotrados Semana 9

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

Dependiendo del CPU, se le permite al Sistema Operativo participar en la política de


reemplazo.
También, dependiendo de la tecnología, se permite alambrar entradas del TLB

• Algunas TLB Tienen address-space identifier (ASID)


• ASID Identifica a cada proceso y da protección a este proceso
• Cuando el TLB resuelve una dirección garantizada que el ASID del proceso que
identifico corresponde al ASID del proceso que hizo la petición
• Si el ASID no concuerda se trata como un TBL miss
• El ASID le permite al TBL tener varias entradas para procesos de manera simultanea
• De no ser así, se le debe hacer flush al TLB Para cada cambio de contesto

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.

También parte de lo que se puede


tener son tablas de página de tablas de
paginas

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.

• Permite que el espacio de todos los procesos que se


están ejecutando sea mayor que la memoria
disponible.
• Aumenta el nivel de multiprogramación
• Antes se realiza a nivel de proceso, actualmente es
nivel de páginas.
• Se aplica a un subconjunto de procesos que se
ejecutan

17 | P á g i n a

También podría gustarte