jueves, 16 de febrero de 2023

2. Administración de Procesos y del procesador

2.1. Concepto de proceso


Un proceso es un conjunto de actividades planificadas que implican la participación de un número de personas y de recursos materiales coordinados para conseguir un objetivo previamente identificado.

En un sistema operativo, un proceso es un programa en ejecución, incluyendo el valor program-counter, los registros y las variables. En palabras mas simples, se refiere a cualquier programa o aplicación que utilicemos y ejecute el sistema.

2.2. Estados y transiciones de los procesos

Los principales estados de los hilos son: Ejecución, Listo y Bloqueado. Si un proceso está expulsado de la memoria principal (RAM), todos sus hilos deberán estarlo ya que todos comparten el espacio de direcciones del proceso. Las características de estos estados son:

  • Creación: Cuando se crea un proceso se crea un hilo para ese proceso. Luego, este hilo puede crear otros hilos dentro del mismo proceso, proporcionando un puntero de instrucción y los argumentos del nuevo hilo.

  • Bloqueo: Cuando un hilo necesita esperar por un suceso, se bloquea. Ahora el procesador podrá pasar a ejecutar otro hilo que esté al principio de los Listos mientras el anterior permanece bloqueado
  • Desbloqueo: Cuando el suceso por el que el hilo se bloqueó se produce, el mismo pasa a la final de los listos.
  • Terminación: Cuando un hilo finaliza se liberan tanto su contexto como sus columnas.


Normalmente siempre que utilizamos nuestra computadora se nos ha aconsejado abrir los programas uno a la vez y no abrirlos todos al mismo tiempo, esto se debe a que los procesos se van turnando uno a uno para ejecutarse, dependiendo de lo que le tome al procesador poder ejecutarlo y pasar al siguiente.
En cuanto las transiciones, son 4 las posibles:
  • La transición 1 se realiza cuando el sistema operativo determina que el proceso no puede continuar justo en ese momento, en algunos sistemas se puede hacer una llamada al sistema "pause" para pasar al estado bloqueado.
  • La transición 2 se da cuando el planificador de procesos decide que el proceso ya estuvo el tiempo suficiente en ejecución y debe dar paso a la ejecución de otros procesos.
  • La transición 3 se realiza cuando todos los procesos han ocupado tiempo del procesador y debe retomarse el primer proceso.
  • La transición 4 ocurre cuando se produce un evento externo por el que un proceso estaba en espera, por ejemplos, introducir datos desde la terminal. Si no hay otro proceso en ejecución en ese instante, la transición 3 se activa y el proceso comienza a ejecutarse; también podría pasar al estado de "listo" y esperar un momento para iniciar la ejecución.

2.3 Procesos ligeros: Hilos o hebras

Los procesos ligeros nacieron principalmente para reducir la estructura de un proceso el cuál ayudaría a mantener un ritmo rápido y eficaz al momento de ejecutarlo, y también para simplificarlo de una manera que sea más sencilla de comprenderlos.

Lo anterior mencionado no significa que los procesos ligeros reemplacen a los procesos normales, ya que en algunas ocasiones se necesita crear procesos que se ejecuten de manera concurrente o paralela, debido a que, por ejemplo, cuando un proceso finaliza, sea cual sea la razón, los procesos ligeros que lleva dentro también finalizan, en cambio esto no sucede así con los procesos hijo.

El funcionamiento de los hilos

La creación de un nuevo hilo es una característica que permite a una aplicación realizar varias tareas a la vez. Los distintos hilos de ejecución comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de autenticación, etc. Esto ayuda a simplificar alguna aplicación que lleve a cabo distintas tareas a la vez. 

Los hilos de ejecución que comparten los mismos recursos, sumados a estos recursos, son en conjunto conocidos como un proceso. El hecho de que los hilos de ejecución de un mismo proceso compartan los recursos hace que cualquiera de estos hilos pueda modificar éstos.

El proceso sigue en ejecución mientras al menos uno de sus hilos de ejecución siga activo. Cuando el proceso finaliza, todos sus hilos de ejecución también han terminado. Asimismo, en el momento en el que todos los hilos de ejecución finalizan, el proceso no existe más y todos sus recursos son liberados.



2.4 Concurrencia y secuencialidad

La concurrencia de procesos es cuando dos o más procesos pueden coincidir en el acceso a un recurso compartido o que requieran coordinarse al ejecutarse.

Cuando tenemos un solo procesador se producirá un intercalado de las instrucciones de ambos procesos, de tal forma que tendremos la sensación de que hay un paralelismo en el sistema.

Para que dos actividades, sean concurrentes, es necesario que tengan relación entre sí, como puede ser la cooperación en un trabajo determinado o el uso de información compartida.

Los archivos secuenciales son un tipo de archivo en los que la información puede leerse y escribirse empezando desde el principio del archivo.

Se refiere al procesamiento de los registros, no importa el orden en que se haga, para eso los registros están organizados en forma de una lista y recuperarlos y procesarlos uno por uno al principio a fin.

2.5 Niveles, objetivos y criterios de planificación 

La planificación es el proceso por el cual el sistema operativo selecciona que procesos ejecutar. la selección de estos se basas en algunos de los algoritmos de planificación.

La planificación de la CPU es una de las funciones del sistema operativo. Este despacho es llevado a cabo por un pequeño programa llamado planificador a corto plazo o "dispatcher".
  • Planificación a largo plazo. Este planificador está presente en algunos sistemas que admiten, además de procesos interactivos, trabajos por lotes. Usualmente, se les asigna una prioridad baja a los trabajos por lotes, utilizándose estos para mantener ocupados a los recursos del sistema durante períodos de baja actividad de los procesos interactivos.
  • Planificación a medio plazo. En los sistemas de multiprogramación y tiempo compartido varios procesos residen en la memoria principal. El tamaño limitado de ésta hace que el número de procesos que residen en ella sea finito. Puede ocurrir que todos los procesos en memoria estén bloqueados, desperdiciándose así la CPU.
  • Planificación a corto plazo. Se ejecuta cuando ocurre un suceso que puede conducir a la interrupción del proceso actual o que ofrece la oportunidad de expulsar de la ejecución al proceso actual en favor de otro.
Los objetivos del planificador se resumen en:
  • Reparto equitativo del tiempo de procesador
  • Eficiencia en el uso del procesador
  • Menor tiempo de respuesta en uso interactivo
  • Cumplir plazos de ejecución de los sistemas de tiempo real
2.6 Técnicas de administración del planificador

El planificador es una parte fundamental del sistema operativo que se encarga de asignar recursos del sistema a diferentes procesos y tareas. Para administrar el planificador, es necesario utilizar técnicas que permitan garantizar un uso eficiente de los recursos del sistema, asegurar la justicia en la asignación de recursos y maximizar el rendimiento general del sistema, como, por ejemplo:

Algoritmo FIFO (First In First Out) o FCFS (First Come First Serve).

Los ciclos de CPU asignados a cada proceso se asignan en función de una cola FIFO. Al primer proceso que llega se le asignan tiempos o ciclos de CPU hasta que termina completamente. A continuación, se ejecuta completo el siguiente proceso que hay en la cola FIFO y así sucesivamente hasta terminar con el último proceso. Este algoritmo de planificación normalmente se utiliza para la gestión de trabajos en colas de impresión, respecto de los trabajos que van llegando a la impresora.

Planificación por Prioridad al más corto (SJF, Short Job First).

El algoritmo de planificación de procesos primero el trabajo mas corto, supone que los tiempos de ejecución se conocen de antemano, es decir, los procesos que se tomen menos tiempo en ejecutarse o llevar a cabo su tarea, se ejecutarán de primer plano. Algunas de sus características podrían ser:
  • Asociar a cada proceso el tiempo de ráfaga de CPU: una vez llega cada proceso se le asigna tiempo de ráfaga de CPU, que son las unidades de tiempo que requieren para que el proceso se ejecute completamente.
  • Selecciona el proceso con menor ráfaga de CPU: antes de ejecutar cada proceso el algoritmo prioriza cual es el proceso más corto a ejecutar.
  • En caso de empate aplicar FIFO: si llega a presentarce empate en dos o mas procesos de rafaga de CPU, el algoritmo cambia a priorizar primero en entrar primero en salir, algoritmo FIFO.
  • Algoritmo no expulsivo: una vez se empieza a ejecutar cada proceso no será interrumpido hasta finalizar.
Un ejemplo gráfico sería:



Planificación por Prioridad al Tiempo Restante más Corto (SRTF, Short Remaining Time First).

Es similar al SJF, con la diferencia de que si un nuevo proceso pasa a listo se activa el "dispatcher" para ver si es más corto que lo que queda por ejecutar del proceso en ejecución. Si es así, el proceso en ejecución pasa a listo y su tiempo de estimación se decremento con el tiempo que ha estado ejecutándose.

En SRTF se penaliza a las ráfagas largas (como en SJF). Un punto débil de este algoritmo se evidencia cuando una ráfaga muy corta suspende a otra un poco más larga, siendo más larga la ejecución en este orden al ser preciso un cambio adicional de proceso y la ejecución del código del planificador.

Su funcionalidad es:
  • Los procesos llegan a la cola y solicitan un intervalo de CPU
  • Si dicho intervalo es inferior al que le falta al proceso en ejecución para abandonar la CPU, el nuevo proceso pasa a la CPU y el que se ejecutaba a la cola de preparados.
Por ejemplo:

Planificación el Siguiente con Relación de Respuesta Máxima (HRN,  

HIGHEST RESPONSE RATIO NEXT)


Esta planificación corrige algunas deficiencias de SJF, particularmente, el retraso excesivo de trabajos largos, y el favoritismo excesivo por los trabajos cortos. HRN es una disciplina de planificación no apropiativa en la cual la prioridad de cada proceso no sólo se calcula en función del tiempo de servicio, sino también del tiempo que ha esperado para ser atendido. Cuando un trabajo obtiene el procesador, se ejecuta hasta terminar.

La decisión de planificación se basa en una estimación del tiempo de retorno normalizado.
Este método es atractivo porque tiene en cuenta la edad del proceso. Aunque se favorece a los trabajos más cortos (un denominador menor produce una razón mayor), el envejecimiento de un proceso sin que haya sido servido incrementa el valor de la razón, de forma que los procesos más largos puedan pasar, en competición con los más cortos. 

El tiempo esperado de servicio debe estimarse antes de emplear la técnica de la mayor tasa de respuesta.


Planificación Round Robin (RR)
Es uno de los sistemas utilizados por los CPU más viejo, que es utilizado por los sistemas de tiempos compartidos, los cuales ayudan a que el procesador no se "monopolice" y pueda ser usados sin mayor problema, su forma de trabajar es asignando fracciones de tiempo corto a los procesos o dividirlos por secciones de tiempo, lo cual ayuda a tener un control y que un solo proceso no abarque todo el tiempo del proceso a efectuar.

Se puede interpretar así:
  • A todos los procesos se les asigna el mismo tiempo de ejecución.
  • Si el tiempo asignado de ejecución no es suficiente el CPU lo regresa a la cola, para asignarle otro slot de tiempo y pueda terminar.
  • Su base, es conforme al primer algoritmo, sin embargo, no toma en cuenta el tiempo que tarda cada uno de los programas en ser procesados


Planificación Multi-Level FreedBack Queues

El algoritmo de planificación mediante colas multinivel realimentadas permite mover un proceso de una cola a otra. La idea es separar los procesos en función de las características de sus ráfagas de CPU. Si un proceso utiliza demasiado tiempo de CPU, se pasa a una dé prioridad más baja. Este esquema deja los procesos limitados por E/S y los procesos interactivos en las colas de prioridad más alta. Además, un proceso que este esperando demasiado tiempo en una cola de baja prioridad puede pasarse a una cola de prioridad más alta. Este mecanismo de envejecimiento evita el bloqueo indefinido.

Cuando un proceso obtiene la CPU, sobre todo cuando todavía no ha tenido oportunidad de establecer un patrón de comportamiento, el planificador no tiene idea de la cantidad de tiempo de CPU que necesitará el proceso. Los procesos limitados por la E/S normalmente usan la CPU sólo un momento antes de generar una solicitud de E/S; los procesos limitados por la CPU pueden usar el procesador durante horas si está disponible en forma no apropiativa.




Estas planificaciones son esenciales para que el usuario, al momento de ejecutar algún programa o proceso, sea más rápido para más comodidad.






No hay comentarios.:

Publicar un comentario