arrow_back Volver
Inicio keyboard_arrow_right Artículos keyboard_arrow_right Artículo

Programas y procesos uso adecuado de la memoria.

Marines Méndez

Software Developer

av_timer 3 Min. de lectura

remove_red_eye 7336 visitas

calendar_today 29 Octubre 2019

Un programa es un conjunto de instrucciones u órdenes basadas en un lenguaje de programación que un sistema operativo entiende, el programa resuelve un problema o una función específica.

Ahora que ya sabemos el concepto de un programa también necesitamos saber que es un proceso, un proceso es básicamente un programa en ejecución dentro del sistema operativo.

Un proceso dentro del sistema operativo tiene un contexto el contexto tiene la siguiente estructura:

Texto alternativo

Identificación de proceso

El ID del proceso (o el PID) es asignado por el sistema operativo y es único para cada proceso en ejecución.

Memoria

En esta memoria, se almacena todo el código del programa, junto con las variables y cualquier otro almacenamiento asignado. El proceso dentro de la memoria se divide en secciones de código y datos. Los datos y el código del programa se deben mantener por separado, ya que requieren diferentes permisos del sistema operativo. El sistema operativo necesita otorgar permiso al código del programa para leerse y ejecutarse en el sistema operativo, por otro lado, los datos ( por ejemplo las variables) requieren permisos de lectura y escritura, pero estos no se ejecutan a diferencia del código, ambas divisiones tienen algo en común y es que se guardan en el área de almacenamiento permanente.

Otra parte muy importante de un proceso es el área de memoria stack o en español pila, esta contiene datos temporales.

Tal vez se preguntaran que es stack o pila??

Una pila es una lista estructura de datos, en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out), el último en entrar, será el primero en salir, por ejemplo en una mesa nosotros agregamos el libro A después el libro B, C y D, Como pudimos ver el primer libro que se agregó fue A pero este se encuentra en la parte de abajo, por lo cual si tomamos el primer libro de la pila tendríamos el libro D, de esa manera funciona una pila de tipo LIFO el último en entrar fue el libro D y fue el primero en salir.

En la pila se almacenan y recuperan las variables que se encuentran en una función de igual manera la dirección de retorno.

Vamos a ver un ejemplo:

Texto alternativo

En este ejemplo tenemos dos funciones y las variables de las funciones se guardan en la pila, como menciona el último en entrar, será el primero en salir por lo cual los datos de la primera función serán los primeros en liberarse, digo liberarse porque como dije son datos temporales por lo cual una vez realizando su función serán eliminados de la memoria, otra cosa importante es que las variables de cada función se separan por stack frame, así que cada función tendrá su propio stack frame en la pila. Esta es la razón por la cual una variable definida dentro de una función no puede ser vista por otras funciones. Las variables globales (que se pueden ver con cualquier función) se guardan en un área separada de la memoria de datos. El uso de la pila facilita las llamadas recursivas . Esto significa que una función es libre de llamarse de nuevo, porque se creará un nuevo stack frame para todas sus variables locales. Mucho ojo en esto, por esta razón es que dije que las llamadas recursivas usan mayor memoria.

Archivos

En archivo se guardan las direcciones y permisos de los archivos que usemos en el programa por ejemplo tal vez necesitemos abrir un archivo pero puede que no tengamos los permisos de lectura por lo cual el sistema operativos no nos dejara abrir el archivo.

Registros

Las obligaciones del sistema operativo como gestor de procesos son: Creación y eliminación de procesos. Planificación de procesos ósea la ejecución de múltiples procesos maximizando la utilización del procesador. Establecimiento de mecanismos para la sincronización y comunicación de procesos. Manejo de bloqueos mutuos.

Para poder hacer esto es necesario que se guarde el estado actual de un proceso por ejemplo si el proceso es nuevo, se está ejecutando, se eliminó o si en programa se bloqueo porque está esperando que el usuario coloque algún dato de entrada, por ejemplo cuando un programa pide que ingresemos nuestro nombre, el sistema operativo necesita almacenar una copia de los registros de la CPU en la memoria. Cuando sea el momento de que el proceso vuelva a ejecutarse, el sistema operativo copiará los valores de registro de la memoria a los registros de la CPU y el proceso volverá al punto donde lo dejó.

Bootcamp Ciencia de Datos

12 semanas de formación intensiva en los conocimientos, fundamentos, y herramientas que necesitas para ser científico de datos

Más información