Gestión de Memoria en Linux
Gestión de Memoria en Linux
Gestión de Memoria en Linux
Gestin de Memoria
Jose Azadobay.
Objetivos
Materiales
Host Linux
Entorno VPN
I. MARCO TERICO
La memoria es uno de los recursos ms valiosos que gestiona el sistema operativo. Uno de
los elementos principales que caracterizan un proceso es la memoria que utiliza. sta est
lgicamente separada de la de cualquier otro proceso del sistema (excepto los threads de un
mismo proceso que comparten normalmente la mayor parte de la memoria que tienen
asignada).
Un proceso no puede acceder, al espacio de memoria asignado a otro proceso, lo cual es
imprescindible para la seguridad y estabilidad del sistema. El direccionamiento es una parte
importante de la gestin de memoria, puesto que influye mucho en la visin del mismo por parte
de un proceso, como en el aprovechamiento del hardware y el rendimiento del sistema. En
Linux, adems, un proceso tiene dos espacios de memoria: el espacio de memoria del
usuario, nico para ese proceso, y el espacio de memoria del kernel, idntico en todos los
procesos.
Espacio de direcciones fsicas. Las direcciones fsicas son aquellas que referencian alguna
posicin de la memoria fsica. Se obtienen despus de aplicar una transformacin por parte
de la MMU (Unidad de Manejo de Memoria).
Espacio de direcciones lgicas o virtuales. Las direcciones lgicas son las direcciones
utilizadas por los procesos. Sufren una serie de transformaciones, realizadas por el procesador
(la MMU), antes de convertirse en direcciones fsicas.
El tamao combinado del programa, datos y pila puede exceder la cantidad de memoria fsica
disponible. El sistema operativo guarda aquellas partes del programa concurrentemente en uso
en memoria central y el resto en disco. Cuando un programa espera que se le cargue en
memoria central de disco otra parte del mismo, la CPU se puede asignar a otro proceso.
Paginacin.
El espacio virtual de direcciones se divide en unidades llamadas pginas, todas del mismo
tamao. La memoria principal se divide en marcos de pginas (page frames) del mismo tamao
que las pginas virtuales y son compartidas por los distintos procesos del sistema (en cada
marco de pgina se carga una pgina de un proceso).
Segmentacin
El espacio de direcciones se divide en segmentos, cada uno de los cuales corresponder
a una rutina (procedimiento, funcin), un programa o un conjunto de datos (una entidad
lgica). Todo aquello que se corresponda con sub-espacio de direcciones independientes.
Cada programa contiene una cierta cantidad de segmentos. Los primeros segmentos se
reservan para procedimientos, datos y pila, pertenecientes al programa en ejecucin. Los
segmentos restantes contienen un archivo por segmento, as que los procesos pueden
direccionar todos sus archivos directamente sin tener que abrirlos ni usar primitivas especiales
de entrada/salida. Cada archivo puede crecer de forma completamente independiente de los
ESCUELA POLITCNICA NACIONAL
FACULTAD DE INGENIERA DE SISTEMAS
INGENIERA DE SISTEMAS INFORMTICOS Y DE COMPUTACIN
LABORATORIO DE SISTEMAS OPERATIVOS PRCTICA No. 1 2B
otros, con cada byte direccionado por un par (segmento, desplazamiento).Por otro lado,
colocando objetos diferentes en diferentes segmentos, se facilita la comparticin de estos
objetos entre procesos mltiples.
Segmentacin Paginada.
Como su propio nombre indica, la segmentacin paginada intenta aunar lo mejor de los dos
esquemas. La segmentacin proporciona soporte directo a las regiones del proceso y la
paginacin permite un mejor aprovechamiento de la memoria y una base para construir un
esquema de memoria virtual. Con esta tcnica, un segmento est formado por un conjunto de
pginas, y por tanto, no tiene que estar contiguo en memoria. La MMU utiliza una tabla de
segmentos, tal que cada entrada de la tabla apunta a una tabla de pginas.
El comando free nos muestra tres lneas, seis columnas y admite varios parmetros. Aqu te
pego una captura con un ejemplo y luego vamos explicando:
La lnea 1 nos muestra la memoria RAM: en la primera columna la cantidad total del
equipo, en la segunda la que est en uso, la tercera la que est libre, la cuarta es un valor en
desuso que tiempos antiguos sera la memoria compartida, la quinta nos muestra la memoria
que est siendo usada por el buffer de los programas (es decir, datos que se guardan
temporalmente durante la ejecucin de un programa para verlos una sola vez) y la sexta lo
que hay en la cach de los programas (son datos que los programas dejan cargados para
revisarlos regularmente y acelerar su ejecucin).
La lnea 2 nos muestra la swap, el espacio de disco duro que hemos definido como memoria
de intercambio, y slo nos da tres columnas: total, utilizada y libre.
En la imagen del ejemplo se puede ver que se uso free junto al parmetro -m, de esa forma
muestra los datos en megas. Si en lugar de -m usramos -k lo mostrara en kilobytes, con -
g en gigabytes y con -b en bytes. Segn la precisin necesitada ser ms recomendable una
u otra unidad.
ESCUELA POLITCNICA NACIONAL
FACULTAD DE INGENIERA DE SISTEMAS
INGENIERA DE SISTEMAS INFORMTICOS Y DE COMPUTACIN
LABORATORIO DE SISTEMAS OPERATIVOS PRCTICA No. 1 2B
Si se quiere ver una lnea adicional con la suma de la memoria fsica y la SWAP puedes
conseguirlo con el parmetro -t.
Con el parmetro -s la consulta se recargar cada pocos segundos, para permitirnos mantener
monitorizado el estado de la memoria. El comando por defecto har los redondeos de la
memoria en base a potencias de 1024, si quieres que lo haga en base a 1000 tendrs que usar
el parmetro si. Si tienes 8 gigas y sacas la consulta con -g es probable que te salgan 7 por
este redondeo, con si te apareceran los 8.
Vmstat
Vmstat es un comando que nos permite obtener un detalle general de los procesos, E/S, uso
de memoria/swap, estado del sistema y actividad del CPU. Es esencial para entender que est
pasando en tu sistema, detectar cuellos de botella, etc.
Para usarlo, podemos correrlo sin parmetros, y obtendremos algo similar a esto:
La primera lnea es simple, se divide en seis categoras: procesos, memoria, swap, E/S,
sistema y CPU.
La segunda un detalle abierto de cada categora superior.
ESCUELA POLITCNICA NACIONAL
FACULTAD DE INGENIERA DE SISTEMAS
INGENIERA DE SISTEMAS INFORMTICOS Y DE COMPUTACIN
LABORATORIO DE SISTEMAS OPERATIVOS PRCTICA No. 1 2B
Vmstat -s
El comando vmstat -s sirve para mostrar cuntos eventos del sistema se produjeron desde la
ltima vez que se inici el sistema.
ESCUELA POLITCNICA NACIONAL
FACULTAD DE INGENIERA DE SISTEMAS
INGENIERA DE SISTEMAS INFORMTICOS Y DE COMPUTACIN
LABORATORIO DE SISTEMAS OPERATIVOS PRCTICA No. 1 2B
TOP
El comando top nos da informacin acerca del uso de la cpu, de la memoria, de los procesos
en ejecucin, etc en tiempo real. Nos puede ayudar a monitorizar nuestro servidor dedicado
si notamos que algo no funciona bien. En ocasiones podemos notar alguna incidencia y
gracias al comando top, podemos encaminarnos hacia la causa del problema.
HTOP
Una de las mejoras que tiene HTOP respecto a TOP es que permite la navegacin entre
procesos, tanto vertical como horizontalmente mediante las flechas en el teclado. Esto da
mucha comodidad al usuario. Con HTOP es posible visualizar 2 o 4 medidores de CPU (una
limitacin importante que tena esta herramienta), de modo de poder diferenciar bien
claramente el uso que cada uno de los ncleos est recibiendo.
Otra mejora interesante es que para matar un proceso no necesitas introducir el nmero de
ste, tan slo situarte sobre l y matarlo, lo que da una comodidad mucho mayor con respecto
a TOP. Adems, HTOP tiene soporte para colores y para ratn algo facilita mucho las cosas
al usuario. Por ltimo, cabe destacar que HTOP carga a una velocidad mayor, adems de
todas las mejoras mencionadas anteriormente.
Esta herramienta no viene instalada en el sistema por defecto y por tanto hay que instalarla
con el comando apt-get install htop:
PS
El comando ps se utiliza para obtener una instantnea de los procesos en el sistema. Muchas
veces es necesario obtener informacin valiosa, como por ejemplo determinar bajo qu
usuario corre un proceso, y utilizamos el viejo y conocido "ps aux" sin saber bien que
opciones estamos utilizando.
DF
El comando df se usa para informar de cunto espacio libre en disco est disponible para
cada particin que tengas. La primera columna muestra el nombre de la particin tal como
aparece en el directorio /dev. Las columnas siguientes muestran el espacio total, bloques
asignados y bloques disponibles.
SINTAXIS:
La sintaxis es
df [opciones]
OPCIONES:
Ejemplo: df -h
DU
El comando du se usa para informar de cunto espacio en disco ocupa un archivo o directorio.
SINTAXIS:
La sintaxis es
du [opciones] directorios
OPCIONES:
Ejemplo:
ESCUELA POLITCNICA NACIONAL
FACULTAD DE INGENIERA DE SISTEMAS
INGENIERA DE SISTEMAS INFORMTICOS Y DE COMPUTACIN
LABORATORIO DE SISTEMAS OPERATIVOS PRCTICA No. 1 2B
$ Cd Documentos
$ Du -h
WATCH
El comando watch nos permite ejecutar comandos o scripts de forma peridica desde la
terminal. Se puede utilizar con cualquier tipo de programa, permitiendo por ejemplo
monitorizar procesos, listas de archivos/datos o conexiones a internet, sin la necesidad de
repetir el mismo programa una y otra vez.
watch <comando>
Ese intervalo de tiempo en algunos casos puede ser demasiado corto o extenso, lo podemos
modificar fcilmente aadiendo la opcin -n seguido del tiempo en segundos
Lo que hace esta instruccin es mostrarnos como cambia la memoria cada segundo.
ESCUELA POLITCNICA NACIONAL
FACULTAD DE INGENIERA DE SISTEMAS
INGENIERA DE SISTEMAS INFORMTICOS Y DE COMPUTACIN
LABORATORIO DE SISTEMAS OPERATIVOS PRCTICA No. 1 2B
MEMINFO
Por medio de este comando podemos visualizar todo lo relacionado a la memoria, dentro
podemos encontrar subrayados los que se miran con ms frecuencia, aunque haciendo uso
del agregado | grep MemFree nos dar el resultado de solo lo que pedimos.
ESCUELA POLITCNICA NACIONAL
FACULTAD DE INGENIERA DE SISTEMAS
INGENIERA DE SISTEMAS INFORMTICOS Y DE COMPUTACIN
LABORATORIO DE SISTEMAS OPERATIVOS PRCTICA No. 1 2B
DMIDECODE
Este comando sirve para determinar cuanta memoria ram soporta el equipo, en Ubuntu hay
que instalarlo con # apt-get install dmidecode y para que muestre cuanta ram soporta el
mother hacemos:
# dmidecode -t 16
IV. CONCLUSIONES
Todos los comandos mencionados son para trabajar desde la terminal y no tienen una
interfaz grfica de usuario. Cuando se traba en un escritorio con interfaz, es mucho
ms facil de utilizar una herramienta con interfaz grfica. Las herramientas ms
comunes son gnome-system-monitor para entornos GNOME y ksysguard para
entornos KDE.
V. REFERENCIAS