Gestión de Memoria y Ciclo de Vida de los Procesos en Sistemas Operativos
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 4,41 KB
Paginación
La paginación es una técnica de gestión de memoria en la que se divide toda la memoria principal en marcos de página. Todos los marcos de página tienen el mismo tamaño. Los datos con los que se trabaja están agrupados en páginas; cuando se necesita una página, esta se puede cargar en cualquier marco de página que esté disponible.
Procesos
De forma intuitiva, podemos considerar que un proceso es un programa en ejecución. Si en un sistema informático se están ejecutando tres programas diferentes (un navegador, un compilador y un editor), mientras dure su ejecución, existirá un proceso por cada programa. Un sistema operativo multitarea intenta dedicar atención a todos los procesos para que su ejecución avance en paralelo, aunque sea de un modo aparente.
Gestión Combinada: Segmentación y Paginación
En algunos sistemas operativos (SO) se utiliza una gestión combinada con segmentación y paginación. Se emplea la segmentación para definir áreas de memoria específicas para los procesos.
Estados y Modos de Ejecución de los Procesos
1. Ejecución en Modo Usuario
El proceso está siendo ejecutado por una CPU. En un momento dado, solo puede haber tantos procesos en ejecución como CPUs físicas tenga la máquina. Además, la CPU está funcionando en modo usuario, es decir, está ejecutando código del espacio de usuario. Si el código está mal escrito y se produce un error, la aplicación terminará.
2. Ejecución en Modo Núcleo
El proceso está siendo ejecutado por una CPU que funciona en modo núcleo (o modo supervisor). Solo el kernel del SO se ejecuta en este modo. Cuando una CPU funciona en modo núcleo, permite realizar operaciones que están prohibidas en modo usuario, permitiendo que el núcleo del sistema operativo controle todo el sistema informático. Si el código está mal escrito y se produce un error, probablemente todo el sistema se detenga.
3. Listo para Ejecutar y en Memoria
Un proceso está listo para ejecutar cuando está disponible para ser asignado a alguna CPU. Además, este proceso se encuentra cargado en la memoria principal, de manera que puede ser ejecutado en cuanto quede una CPU disponible.
4. Dormido y en Memoria
Un proceso dormido está esperando que ocurra un determinado suceso: la llegada de una señal de algún otro proceso, la completitud de una operación de entrada/salida o el transcurso de un tiempo determinado. Es decir, de momento no precisa la atención de ninguna CPU. No obstante, el proceso permanece cargado en la memoria principal.
5. Listo para Ejecutar y Descargado
Un proceso que esperaba un suceso ya está preparado para ejecutarse, pero aún necesita ser cargado en la memoria principal (mediante técnicas de swapping) antes de que pueda ser planificado en alguna CPU.
6. Dormido y Descargado
El proceso no necesita la atención de ninguna CPU porque está esperando algún suceso externo, y el planificador del SO ha decidido descargarlo de la memoria principal al disco para que la memoria liberada pueda agilizar el funcionamiento de otros procesos.
7. Expulsado
Básicamente, es un proceso que abandona la ejecución en modo núcleo antes de ser planificado para la ejecución en modo usuario. A efectos de planificación, aquellos procesos que están en estado expulsado y los que están listos para ejecutar y en memoria forman una sola cola.
8. Creado
Un nuevo proceso puede pasar al estado de listo para ejecutar y en memoria o bien al de listo para ejecutar y descargado, en función de la disponibilidad de memoria en el sistema.
9. Zombie
Cuando un proceso termina, el SO libera todos los recursos que tenía asociados, excepto la estructura de control que guarda los datos del proceso, esperando a que el proceso padre la recoja. Si un proceso termina y el proceso padre no recoge estos datos, el proceso se queda en estado zombie. En un sistema que funciona correctamente, no debería haber procesos en este estado durante un tiempo prolongado.