Ir al contenido principal

Administración de Procesos y del Procesador

Hoy en día todos manejamos un ordenador, o un teléfono inteligente, tableta o demás, todos ellos tienen en común el uso de un sistema operativo, el cual es el encargado de gestionar los procesos y tareas que se llevan acabo dentro del dispositivo en tiempo real. En pocas palabras una de las funciones del S.O. es gestionar los procesos,  asignar recursos a los procesos, permitir el intercambio de información entre los mismos facilitando la sincronización de procesos, si, si, hasta yo me mareé con puro proceso.

¿Pero que es un proceso?

Según definicion.mx un proceso es una secuencia de pasos dispuesta con algún tipo de lógica que se enfoca en lograr algún resultado específico. Esto es cierto, si hablamos de nuestro ordenador, todo programa abierto cuenta como proceso o tarea mientras se este ejecutando, por ejemplo el simple reproductor de música, su tarea es la reproducción de sonido, para ello realiza varias acciones desde buscar el archivo en memoria, decodificar la información del audio, reproducir el sonido, entre otras, todos esto son pasos que tiene que seguir el programa y su resultado final es que nosotros escuchemos nuestra canción favorita sin mas.

Ahora es importante resaltar la diferencia entre programa y proceso, un programa es básicamente una serie de instrucciones escritas en un lenguaje de programación guardadas en un archivo, y un proceso es la acción de ejecutar estas instrucciones.

En resumidas cuentas podemos definir un proceso como un programa en ejecución, sin mas ni menos ni tanto texto (lo siento pero era necesario dar el concepto técnico). Ahora cada proceso requiere de dos componentes básicos, los cuales son la memoria de trabajo (RAM) y la CPU para funcionar.

Estados de los procesos:

Ahora los procesos que se ejecutan internamente dentro de nuestro ordenador tienen 3 estados basicos:
  • Proceso Listo
  • Proceso en ejecución
  • Proceso Bloqueado
Sin embargo la lista completa de sus estados son:

Nuevo: Se dice que un proceso está en estado de nuevo cuando apenas se encuentra en proceso de crearse.
Listo: Un proceso está en estado de listo, generalmente esperando su turno para usar la CPU.
En ejecución: Se dice que un proceso está en estado de ejecución, si en ese momento esta usando la CPU ejecutando alguna serie de instrucciones.
Bloqueado: Se dice que un proceso está en estado de bloqueado, si espera que ocurra algo, como por ejemplo, la terminación de una E/S, para así poder ponerse en marcha.
Terminado: Cuando un proceso se ha completado su ejecución pasa a ser un proceso terminado.

Ahora expliquemos sobre como funciona esto de una forma mas detallada. Todo programa en ejecución o proceso que se ejecute en nuestro ordenador debe esperar su turno para ejecutarse, como por decirlo de una forma cotidiana, al abrir un programa pasa a hacer cola para ser atendido, pues se inserta al final de la “Lista de Procesos Listos”, el proceso se desplaza poco a poco en esta lista ("la cola") a medida que los procesos se van ejecutando.  Cuando el proceso llega al principio de la lista, se le asigna el CPU, ahora realmente no notamos ese tiempo de espera debido a que la ejecución de los programas se realizan en cuestión de nanosegundos, sumado a las actuales arquitecturas de los ordenadores que mejoran aún mas los tiempos de ejecución de ciertos trabajos.

Pongamos un ejemplo, digamos que he creado un programa que sume 2 números, entonces este programa pasara por los 5 estados al ejecutarse de la siguiente manera:

Usemos por decir este código escrito en pyhton para ejemplificar esto:

#Codigo que suma 2 numeros
a=7
b=9
resultado=7+9
nombre=input("Ingrese su nombre")
print(nombre+" tiene una cantidad de manzanas igual a: ")
print(resultado)

Nuevo: al ejecutarse este entrara en el estado de nuevo, pues el S.O. reconoce que el usuario a llamado a ejecutarse un proceso, en este estado el proceso no esta en memoria, solo se recibe la instrucción de que se requiere consecuentemente cargar los datos del programa del disco duro a la memoria principal, posteriormente reservar la memoria necesaria para este programa. En pocas palabras es cuando se le indica al sistema operativo que existe un proceso que necesita ser ejecutado y debe proveerle los recursos para ejecutarlo.

Listo: en este caso el proceso o programa ya estará cargado en memoria y simplemente esta esperando su turno para pasar sus instrucciones al procesador para llevarlas a cabo.

Ejecución: aquí se dice que ha llegado el turno del programa para usar el procesador (lo están despachando, imaginemos todo esto como una tienda, cada programa es un cliente, la memoria RAM es la sala de espera y el CPU es el empleado que despacha la mercancía una vez atiende al cliente). En este caso el CPU recibirá las instrucciones de tomar de memoria los valores de las variables "a" y "b" sumándolas y asignando el resultado a otra variable llamada "resultado".

Bloqueado: la siguiente instrucción provocara que el programa entre en un estado de bloqueado, puesto que hasta que el programa no reciba un nombre escrito por teclado este no podrá continuar, es decir se quedara esperando infinitamente el tiempo que sea hasta que alguien escriba un nombre. Cabe destacar que este proceso no permanecerá todo este tiempo ejecutandose en la CPU hasta que se ingrese un numero, pero esto lo explicaremos mas abajo.

Terminado: Finalmente terminara el programa al mostrar los resultados y de acuerdo a como este programado se cerrara la ventana, es decir se acabo su ejecución.

Si no sabes mucho de programación o solo te resolví puedes consultar este vídeo, esta muy bien explicado, al menos a mi me gusto su forma de ejemplificarlo en forma practica:


Cuando un proceso pasa de un estado a otro se dice que hace una transición de estado, describamos estas transiciones:



Admitido (Nuevo->Listo): Cuando un proceso se ha creado y se le es permito competir por la CPU.
Despacho (Listo->En ejecución): La asignación de la CPU al primer proceso de la lista de listos es llamado despacho y es ejecutado por la entidad de sistema llamada despachador. Mientras que el proceso tenga la CPU se dice que esta en ejecución.
Tiempo excedido (En ejecución->Listo): El S.O , cuando un proceso se le expira el intervalo de tiempo asignado para estar en ejecución (CUANTO), hace que este proceso que se hallaba en estado de ejecución pase al estado de listo y inmediatamente el despachador hace que el primer proceso de la lista pase a estado de ejecución.
Bloqueo (En ejecución->Bloqueado): Si un proceso que se encuentra en estado de ejecución inicia una operación de E/S antes que termine su cuanto, el proceso voluntariamente abandona la CPU, es decir, el proceso se bloquea a sí mismo.
Despertar (Bloqueo->Listo): La única transición posible en nuestro modelo básico ocurre cuando acaba una operación de E/S (o alguna otra causa por la que esté esperando el proceso), y esta termina pasa a el estado de listo.
Salir (En ejecución->Terminado): Esta transición ocurre cuando el proceso se ha terminado de ejecutarse, y pasa a un estado de terminado.

Expliquemos estos últimos, pero antes de continuar es necesario mencionar algo:

De acuerdo a cosas de concurrencia y de acuerdo a la arquitectura del ordenador (si quieres saber mas lee nuestra entrada: Concurrencia y Secuencialidad (Sistemas Operativos)) cada proceso se ejecuta un cierto tiempo en el procesador, es decir un proceso permanece durante digamos 1nanosegundo ejecutando sus instrucciones y después descansa y le sede el lugar a otro proceso, haciendo esto miles de veces por segundo se crea la ilusión de que todo funciona al mismo tiempo. Habiendo explicado esto pongamos un ejemplo:

Supongamos que mandamos a imprimir desde word (tal vez debería decir un programa de impresión pero para hacerlo fácil quedemosnos asi) entonces pasara lo siguiente:

Admitido (Nuevo->Listo):  
Estado nuevo: word le dice al S.O. que necesita imprimir, para lo cual debe llamar a un subproceso del mismo programa. El sistema operativo por lo tanto deberá hacer espacio para este subproceso en memoria y proveerle de los recursos necesarios.
Listo: Posteriormente estará cargado en memoria y estará a la espera de su turno para ejecutar instrucciones en el CPU.

 Todas las instrucciones y tareas que se realizan desde el estado de nuevo al estado de listo son atribuidas a la Transición de Admitido.

Despacho (Listo->En ejecución):
Listo: Como ya dijimos, aquí el proceso se encuentra cargado en memoria esperando a que toque su turno de procesar instrucciones en el CPU.
Ejecución: El sistema le ha dado paso para ocupar el CPU con sus tareas.

A esta transición se le denomina Despacho.

Tiempo excedido (En ejecución->Listo):
Como mencionábamos cada proceso tiene un tiempo determinado para usar el CPU, este es contado y es muy corto (desde la vista humana), pues sucede todo esto en tiempo de nanosegundos, una vez que este tiempo se haya acabado, ya sea que el proceso terminase o no lo que estaba haciendo, deberá dejar todo donde lo dejo y dejarle el uso del CPU a otro proceso, entonces esperara a que nuevamente toque su turno de trabajar con el procesador. A esta transición se le denomina Tiempo excedido.

Bloqueo (En ejecución->Bloqueado): 
Ahora siguiendo con nuestro ejemplo para esta explicación, digamos que empezamos a imprimir pero se acabo el papel, la impresora se detendrá y notificara al sistema, el proceso de impresión seguirá activo pasando por la transición de Ejecución->Listo y Listo->Ejecución un par de veces, pero al recibir la notificación de que debe esperar a que un humano ponga papel en la impresora y al no tener que hacer durante ese tiempo (aunque seamos muy rápidos en recargar papel a la bandeja, aun así la computadora estaría bostezando durante ese tiempo) el sistema operativo mandara este proceso a un estado de bloqueado, esta transición se le denomina Bloqueo.

Si no te quedo claro, es la típica que aplicamos los estudiantes cuando sale el profesor del salón mientras explicaba algo y dice "muchachos quedense aquí, tardare solo un momento", pero sabemos que es mentira y se tardara su buen rato y le pedimos a nuestro compañero que nos despierte cuando vuelva al salón por que nos hecharemos un sueño.

Despertar (Bloqueo->Listo):
Siguiendo con la analogía anterior, la siguiente transición es Despertar, que en nuestro caso seria cuando vuelve el profe al salón y nuestro compañero nos despierta para despabilarnos y volver a poner antención.

Lo mismo sucede aquí, se recibe la instrucción de que ya tenemos papel en la bandeja, el proceso de impresión es despertado por el sistema y se prepara para tomar su turno en el CPU.

Salir (En ejecución->Terminado):
Finalmente tenemos salir, que es simplemente el espacio de tiempo entre terminar las tareas y el fin del proceso.

Ahora ya para finalizar, cada proceso debe tener además de un estado:


  • Un identificador (ID): Cada proceso debe tener un nombre o identificador, pues es posible correr 2 procesos de un mismo programa. En otras palabras es posible tener tanto 2 ventanas de un mismo programa. Por ejemplo podemos tener abiertos 2 archivos de word, pero cada uno aunque sea un mismo programa cuenta como un proceso diferente, es en este caso que es necesario identificar por un identificador cual corresponde a cual.

Por ejemplo en windows, cada servicio en ejecución tiene un identificador lladamado PID (Process Identifier) el cual por medio de una numeración identifica a cada proceso.



  • Prioridad: cada proceso tiene una diferente prioridad o importancia, no es lo mismo que ejecutar un reproductor de música que el servicio de windows update (al menos no para windows, todos sabemos que para windows son sus actualizaciones o muerte).

Tambien podriamos incluir un nombre que puede ser designado por el usuario o una descripción pero eso ya son cuestiones avanzadas.
Fuentes:
https://definicion.mx/proceso/
http://sitemasoperativosicurosemestre6.blogspot.com/2013/07/22-estados-y-transiciones.html
https://www.youtube.com/watch?v=PJV7GRCCJSc
https://sites.google.com/site/materiasisoperativo/unidad-2-administrador-del-proceso-y-del-procesador/2-2-estados-y-transiciones-de-los-procesos
http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/libro26/transiciones_de_estado.html
https://lsi.vc.ehu.eus/pablogn/docencia/manuales/SO/TemasSOuJaen/DEFINICIONYCONTROLDEPROCESO/1y2Queesunproceso.EstadoyTransiciones.htm
https://www.youtube.com/watch?v=oAy9h0aGbAY

Comentarios

Publicar un comentario