Tutorial básico de Python: programación de procesos

Prefacio
Hola~ ¡Hola a todos, soy Xiaoman❤~!
Insertar descripción de la imagen aquí

Para ejecutar múltiples procesos alternativamente, el sistema operativo debe programar estos procesos,

Esta programación no se realiza de inmediato, sino que debe seguir ciertas reglas, por lo que existe un algoritmo de programación de procesos.

1. Algoritmo de programación por orden de llegada
El algoritmo de programación por orden de llegada (FCFS) es el algoritmo de programación más simple.

Este algoritmo se puede utilizar tanto para la programación de trabajos como para la programación de procesos.

El algoritmo FCFS es más propicio para trabajos (procesos) largos, pero no para trabajos (procesos) cortos.

Se puede ver que este algoritmo es adecuado para trabajos ocupados por la CPU, pero no propicio para trabajos (procesos) ocupados por E/S.

2. Algoritmo de programación de prioridad de trabajos cortos
El algoritmo de programación de prioridades de trabajos cortos (procesos) (SJ/PF) se refiere a un algoritmo que prioriza trabajos cortos o procesos cortos.

Este algoritmo se puede utilizar tanto para la programación de trabajos como para la programación de procesos.

Pero no es bueno para operaciones prolongadas;

No hay garantía de que los trabajos (procesos) urgentes se procesen de manera oportuna;

La duración de la tarea es sólo una estimación.

3. Método de rotación de intervalos de tiempo
La idea básica del método de rotación de intervalos de tiempo (Round Robin, RR) es hacer que el tiempo de espera de cada proceso en la cola lista sea proporcional al tiempo para disfrutar del servicio.

En el método de rotación de intervalos de tiempo, el tiempo de procesamiento de la CPU debe dividirse en intervalos de tiempo de tamaño fijo.

Por ejemplo: decenas de milisegundos a cientos de milisegundos. Si un proceso utiliza el intervalo de tiempo especificado por el sistema después de ser seleccionado para programación, pero no completa las tareas requeridas, liberará la CPU que ocupa y se pondrá en cola hasta el final de la cola lista, esperando la siguiente programación.

Al mismo tiempo, el programador de procesos programa el primer proceso en la cola lista actual.

Obviamente, el método round robin solo se puede utilizar para programar y asignar algunos recursos que se pueden adelantar.

Estos recursos interrumpibles se pueden eliminar en cualquier momento y se pueden reasignar a otros procesos.

La CPU es un tipo de recurso que se puede apropiar

Sin embargo, no se pueden apropiar recursos como las impresoras.

Dado que la programación de trabajos es la asignación de todos los recursos de hardware del sistema excepto la CPU, que incluye recursos no interrumpibles, la programación de trabajos no utiliza el método de rotación.

En el método de operación por turnos, la selección de la duración del intervalo de tiempo es muy importante.
En primer lugar, la elección de la duración del intervalo de tiempo afectará directamente la sobrecarga y el tiempo de respuesta del sistema.

Si la duración del intervalo de tiempo es demasiado corta, aumenta el número de veces que el programador se adelanta al procesador.

Esto aumentará en gran medida la cantidad de cambios de contexto de proceso, aumentando así la sobrecarga del sistema.

Por el contrario, si la duración del intervalo de tiempo se elige demasiado larga, por ejemplo, un intervalo de tiempo puede garantizar que se pueda completar el proceso con el tiempo de ejecución más largo en la cola lista, entonces el método de rotación se convierte en un método por orden de llegada. .

La elección de la duración del intervalo de tiempo se determina de acuerdo con los requisitos del sistema en cuanto a tiempo de respuesta y el número máximo de procesos permitidos en la cola lista.

En el método de operación por turnos, hay tres situaciones para el proceso agregado a la cola lista:

1 La primera es que el intervalo de tiempo que se le asignó se ha agotado, pero el proceso aún no se ha completado y regresa al final de la cola lista para esperar a que la siguiente programación continúe con la ejecución.

2. La segunda situación es que el intervalo de tiempo asignado al proceso no se ha agotado, pero está bloqueado debido a la solicitud de E / S o debido a la relación de exclusión mutua y sincronización del proceso. Cuando se libera el bloqueo, regresa a la cola lista.

3. El tercer caso es que el proceso recién creado ingresa a la cola lista.

Si estos procesos se tratan de manera diferente y se les asignan diferentes prioridades y intervalos de tiempo, intuitivamente, la calidad y eficiencia del servicio del sistema se pueden mejorar aún más.

Por ejemplo: podemos dividir la cola lista en diferentes colas listas según el tipo de proceso que llega a la cola lista y el motivo del bloqueo cuando se bloquea el proceso. Cada cola está organizada de acuerdo con el principio FCFS. Los procesos entre cada cola tienen diferentes prioridades, pero las mismas Las prioridades dentro de la cola son las mismas. De esta manera, cuando un proceso completa su intervalo de tiempo, o se despierta del modo de suspensión y se crea, ingresará a una cola de listos diferente.

4. Cola de retroalimentación de múltiples niveles
Los diversos algoritmos utilizados para la programación de procesos descritos anteriormente tienen ciertas limitaciones.

Por ejemplo, el algoritmo de programación de prioridad de proceso corto solo se ocupa de los procesos cortos e ignora los procesos largos, y si no se especifica la duración del proceso, no se utilizarán la prioridad de proceso corto ni el algoritmo de programación preventiva basado en la duración del proceso.

El algoritmo de programación de colas de retroalimentación multinivel no necesita conocer de antemano el tiempo de ejecución requerido por varios procesos y también puede satisfacer las necesidades de varios tipos de procesos, por lo que actualmente se lo reconoce como un mejor algoritmo de programación de procesos.

En un sistema que utiliza un algoritmo de programación de colas de retroalimentación de varios niveles, el proceso de implementación del algoritmo de programación es el siguiente:

1. Se deben configurar varias colas listas y a cada cola se le deben asignar diferentes prioridades.

La primera cola tiene la prioridad más alta, la segunda cola tiene la segunda prioridad más alta y las prioridades de las colas restantes disminuyen una por una.

Este algoritmo asigna diferentes intervalos de tiempo de ejecución a los procesos en cada cola. En una cola con mayor prioridad, menor es el intervalo de tiempo de ejecución especificado para cada proceso.

Por ejemplo: el intervalo de tiempo de la segunda cola es el doble que el intervalo de tiempo de la primera cola,..., el intervalo de tiempo de la cola i+1 es el doble que el intervalo de tiempo de la cola i-ésima .

2. Cuando un nuevo proceso ingresa a la memoria, primero se coloca al final de la primera cola y se pone en cola para su programación de acuerdo con el principio FCFS.

Cuando sea el turno de ejecutar el proceso, si se puede completar dentro de este intervalo de tiempo, el sistema puede estar preparado para evacuar;

Si no se ha completado al final de un intervalo de tiempo, el programador transferirá el proceso al final de la segunda cola y luego esperará la ejecución programada de acuerdo con el principio FCFS;

Si no se completa después de ejecutarse en la segunda cola durante un intervalo de tiempo, se colocará en la tercera cola por turno,... y así sucesivamente, cuando un trabajo largo (proceso) se elimine de la primera cola a la enésima. cola a su vez, la enésima cola se ejecutará en forma de rotación de intervalos de tiempo.

3. Solo cuando la primera cola está inactiva, el programador programa la ejecución del proceso en la segunda cola;

Solo cuando las colas 1 a (i-1) estén todas vacías, se programará la ejecución del proceso en la cola i-ésima.

Si el procesador está atendiendo un proceso en la cola i-ésima y un nuevo proceso ingresa a una cola de mayor prioridad (cualquier cola de 1 a (i-1)), entonces el nuevo proceso se adelantará al proceso en ejecución en este momento. El procesador del proceso, es decir, el programador, devuelve el proceso en ejecución al final de la cola i-ésima y asigna el procesador al proceso de alta prioridad recién llegado.

Finalmente,
preste atención ~ [Me gusta/Recopilar/Retuitear]~~ Para obtener más tutoriales de Python/contenido intenso/intercambio técnico, ¡puede enviarme un mensaje privado! Información masiva y completa te está esperando. Al mismo tiempo, hay clases abiertas gratuitas en vivo de vez en cuando.
El contenido es adecuado para principiantes, con explicaciones más completas y detalladas, casos prácticos enriquecidos y actualizaciones continuas ~
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/XM67_/article/details/132690017
Recomendado
Clasificación