El segundo capítulo del sistema operativo: algoritmo de programación y programación de tres niveles de CPU

Programación de tres niveles de una CPU

De referencia del: este  y este

  • Programación avanzada

  • Programación intermedia

  • Programación de bajo nivel

1.1 Programación avanzada

Programación avanzada: es decir, programación de trabajos, de acuerdo con una determinada estrategia, el programa en el disco seleccionado se carga en la memoria y se establece el proceso. (Existe en el sistema por lotes multicanal)

Aquí explicamos la diferencia y la conexión entre el trabajo y el proceso.

El trabajo se puede dividir en cuatro pasos: compilar, vincular, cargar y ejecutar.

Cuando un trabajo se ha seleccionado la programación de trabajos (programación avanzada) en la memoria y poner el tiempo en la carrera , el sistema operativo genera un proceso de usuario para completar sus tareas de computación que trabajan los usuarios finales.

El proceso es la entidad de ejecución del trabajo (programa) que se ha enviado y seleccionado para ejecutarse . También es la unidad básica para aplicar y asignar recursos al sistema para completar la tarea del trabajo. Está en estado de ejecución, listo, en espera, etc.

En resumen:

  • El trabajo es la entidad de la tarea, y el proceso es la entidad de ejecución que completa la tarea.

  • Sin una tarea de trabajo, el proceso no tiene nada que hacer; sin un proceso, la tarea de trabajo no puede completarse

  • El concepto de trabajos se usa más en sistemas operativos por lotes; los procesos se usan en varios sistemas de programación múltiple

 

1.2 Programación intermedia

Programación intermedia: la programación de intercambio, el intercambio de datos entre el almacenamiento interno y externo de acuerdo con una determinada estrategia.

Cuando los recursos de memoria son escasos, el proceso temporalmente inoperable se cambiará de memoria. En este momento, el proceso está en el estado "suspendido" y no participa en la programación de bajo nivel; cuando el proceso tiene condiciones operativas y los recursos de memoria son ricos, el proceso se vuelve a la memoria Trabajo

Desempeñe el papel del equilibrio de carga del sistema a corto plazo, mejore completamente la utilización de la memoria y el rendimiento del sistema.

 

1.3 Programación de bajo nivel

Programación de bajo nivel: es decir, la programación de la CPU (programación del proceso), de acuerdo con una determinada estrategia para seleccionar el proceso listo, ocupa la CPU para ejecutar.

De acuerdo con un cierto principio, decida qué proceso / subproceso en la cola lista obtiene el procesador y transfiéralo a él.

La programación de bajo nivel es una función indispensable de varios sistemas operativos, y la programación de alto nivel generalmente no se requiere en sistemas operativos de tiempo compartido puro o sistemas operativos en tiempo real.

 

Referencia gráfica de: este

 

1. Solo programación de procesos (programación de bajo nivel)

 

2. Solo programación de bajo y alto nivel

 

3. Algoritmo de programación de tres niveles.

 

 

2.1 Sistema de procesamiento por lotes

El sistema de procesamiento por lotes no tiene muchas operaciones de usuario.En este sistema, el algoritmo de programación tiene como objetivo garantizar el rendimiento y el tiempo de respuesta (tiempo desde el envío hasta la finalización).

1 Primero en llegar, primero en llegar, primero en llegar, primer servidor (FCFS)

2 Trabajo más corto primero (SJF)

3 Prioridad de tiempo restante más corta (SRTN)

4 Relación de respuesta más alta primero (HSRF)

Rotación de 5 cortes de tiempo

6 Programación prioritaria

7 cola de comentarios de varios niveles

2.1.1 Primero en llegar, primero en llegar, primero en llegar, primer servidor (FCFS)

Algoritmo de programación no privado.

Horario en el orden solicitado.

Seleccione los trabajos de acuerdo con el orden en que los trabajos ingresan a la cola de trabajos de respaldo del sistema. Los trabajos ingresados ​​primero se seleccionan primero en la memoria, creando procesos de usuario

Es bueno para trabajos largos, pero no es bueno para trabajos cortos, porque los trabajos cortos siempre deben esperar a que se complete el trabajo largo anterior antes de que puedan ejecutarse, y los trabajos largos deben ejecutarse durante mucho tiempo, lo que resulta en un tiempo de espera demasiado largo para trabajos cortos.

 

2.1.2 Primero el trabajo más corto (SJF)

Algoritmo de programación no privado.

Programe en el orden del tiempo de ejecución estimado más corto.

Desventajas: 1. Es necesario conocer de antemano el tiempo de ejecución de la CPU requerido por el trabajo, lo cual es difícil de estimar con precisión.

2. Ignorar el tiempo de espera del trabajo hará que el tiempo de espera del trabajo largo sea demasiado largo.

3. La falta de mecanismo de privación no es ideal para el tiempo compartido y el procesamiento en tiempo real.

 

2.1.3 Prioridad de tiempo restante más corta (SRTN)

Algoritmo de programación privado.

Programe en el orden del tiempo restante más corto estimado.

 

2.1.4 Relación de respuesta más alta primero (HSRF)

Algoritmo de programación no privado.

Programe en el orden en que la relación de respuesta más alta calculada es la más pequeña.

Tratamiento preferencial del trabajo corto, pero no se producirá hambre.

Desventajas: cada cálculo de la relación de respuesta de cada trabajo causará un cierto tiempo de sobrecarga.

(1) Si el tiempo de espera del trabajo es el mismo, cuanto menor sea el tiempo requerido para el servicio, mayor será su prioridad, por lo que el algoritmo es propicio para trabajos cortos.

(2) Cuando el tiempo de servicio requerido es el mismo, la prioridad del trabajo está determinada por su tiempo de espera: cuanto mayor sea el tiempo de espera, mayor será la prioridad, por lo que implementa el orden de llegada.

(3) Para trabajos largos, la prioridad del trabajo se puede aumentar con el aumento del tiempo de espera. Cuando el tiempo de espera es lo suficientemente largo, la prioridad se puede elevar a un nivel alto, de modo que el procesador también se pueda obtener. En resumen, el algoritmo se ocupa tanto de los trabajos cortos como del orden de llegada de los trabajos, y no deja los trabajos largos sin servicio durante mucho tiempo. Por lo tanto, el algoritmo logra un mejor compromiso. Por supuesto, al usar este algoritmo, la relación de respuesta debe calcularse antes de la programación, lo que aumentará la sobrecarga del sistema.

 

2.2 Sistema interactivo

Los sistemas interactivos tienen una gran cantidad de interacciones del usuario, y el objetivo de los algoritmos de programación en este sistema es responder rápidamente.

 

2.2.1 Rotación del segmento de tiempo

1) principios básicos

En el método de rotación del segmento de tiempo inicial, el sistema organiza todos los procesos listos en una cola de acuerdo con el principio de orden de llegada. Cada vez que se programa, la CPU se asigna al proceso del líder del equipo y se le permite ejecutar un segmento de tiempo. El tamaño del intervalo de tiempo varía de varios ms a cientos de ms. Cuando se agota el intervalo de tiempo de ejecución, un temporizador emite una solicitud de interrupción de reloj, y el programador detiene la ejecución del proceso en función de esta señal y lo envía al final de la cola lista; luego, el procesador se asigna a listo El nuevo proceso de líder de equipo en la cola también le permite ejecutar un segmento de tiempo. De esta manera, se puede garantizar que todos los procesos en la cola preparada puedan obtener un tiempo de ejecución del procesador de un segmento de tiempo dentro de un tiempo determinado. En otras palabras, el sistema puede responder a todas las solicitudes de los usuarios dentro de un tiempo determinado.

Todos los procesos listos se organizan en una cola de acuerdo con el principio de FCFS. Cada vez que se programa, el tiempo de CPU se asigna al proceso del líder del equipo, y el proceso puede ejecutar un segmento de tiempo. Cuando se agota el intervalo de tiempo, el temporizador emite una interrupción de reloj, y el programador detiene la ejecución del proceso y lo envía al final de la cola lista, mientras continúa asignando tiempo de CPU al jefe del proceso.

 

La eficiencia del algoritmo de rotación del segmento de tiempo tiene una gran relación con el tamaño del segmento de tiempo:

  • Debido a que el cambio de proceso debe guardar la información del proceso y cargar la nueva información del proceso, si el intervalo de tiempo es demasiado pequeño, hará que el proceso cambie con demasiada frecuencia y tomará demasiado tiempo cambiar el proceso.

  • Si el intervalo de tiempo es demasiado largo, no se puede garantizar el rendimiento en tiempo real.

 

2.2.2 Programación prioritaria

Asigne una prioridad a cada proceso y programe según la prioridad.

El sistema puede predefinir la estrategia como no privada o privada.

Para evitar que los procesos de baja prioridad nunca esperen la programación, puede aumentar la prioridad de los procesos de espera con el tiempo.

De esta manera, el sistema también asigna el procesador al proceso con la máxima prioridad para la ejecución. Pero durante su ejecución, siempre que aparezca otro proceso con mayor prioridad, el planificador de procesos detendrá inmediatamente la ejecución del proceso actual (el proceso con la prioridad más alta) y reasignará el procesador a la prioridad recién llegada El proceso más alto. Por lo tanto, cuando se adopta este algoritmo de programación, cada vez que aparece un nuevo proceso listo i en el sistema, su prioridad Pi se compara con la prioridad Pj del proceso j que se está ejecutando. Si Pi≤Pj, el proceso original Pj continuará ejecutándose; pero si Pi> Pj, entonces detiene inmediatamente la ejecución de Pj, realice el cambio de proceso, de modo que el proceso i se ejecute. Obviamente, este algoritmo de programación de prioridad preventiva puede cumplir mejor los requisitos de las operaciones urgentes, por lo que a menudo se usa en sistemas en tiempo real con requisitos estrictos, y en sistemas de procesamiento por lotes y de tiempo compartido con requisitos de alto rendimiento.

2.2.3 Cola de comentarios multinivel

Un proceso debe ejecutar 100 segmentos de tiempo. Si se utiliza un algoritmo de programación de turnos de turnos, debe intercambiarse 100 veces.

La cola de varios niveles se considera para este proceso que necesita ejecutar continuamente múltiples segmentos de tiempo y establece múltiples colas, cada una de las cuales tiene un tamaño de segmento de tiempo diferente, como 1, 2, 4, 8, ... El proceso no se ejecuta en la primera cola, se moverá a la siguiente cola. De esta manera, el proceso anterior solo necesita intercambiarse 7 veces.

La prioridad de cada cola también es diferente, con la prioridad más alta en la parte superior. Por lo tanto, el proceso en la cola actual solo se puede programar si no hay ningún proceso en la cola anterior.

Este algoritmo de programación puede considerarse como una combinación de algoritmo de programación de rotación de segmento de tiempo y algoritmo de programación de prioridad.

(1) Se deben configurar múltiples colas listas, y cada cola debe tener una prioridad diferente. La primera cola tiene la prioridad más alta, la segunda cola viene después, y la prioridad de las colas restantes disminuye una por una. El algoritmo asigna diferentes tamaños de segmentos de tiempo de ejecución de proceso en cada cola. Cuanto mayor sea la prioridad, menor será el segmento de tiempo de ejecución especificado para cada proceso. Por ejemplo, el segmento de tiempo de la segunda cola es dos veces más largo que el segmento de tiempo de la primera cola, ..., el segmento de tiempo de la cola i + 1 es el doble que el segmento de tiempo de la fila 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 la programación de acuerdo con el principio FCFS. Cuando es el turno del proceso a ejecutar, si puede completarse dentro del intervalo de tiempo, puede prepararse para evacuar el sistema; si no se completa al final de un intervalo de tiempo, el planificador transferirá el proceso al final de la segunda cola Del mismo modo, espere la ejecución programada de acuerdo con el principio FCFS; si no se completa después de ejecutar un segmento de tiempo en la segunda cola, póngalo en la tercera cola por turno ..., entonces, cuando un trabajo largo (proceso) comienza desde el primero Después de que una cola cae a la enésima fila a su vez , la enésima  cola se ejecuta en una rotación de tiempo.

(3) Solo cuando la primera cola está inactiva, el planificador programa los procesos en la segunda cola; solo cuando las colas primera a (i-1) están vacías, el proceso en la i-ésima cola está programado para ejecutarse. Si el procesador está sirviendo un proceso en la i-ésima cola, y un nuevo proceso ingresa a la cola con una prioridad más alta (cualquier cola en la primera a (i-1)), entonces el nuevo proceso se adelantará a la ejecución El procesador del proceso, es decir, el planificador vuelve a poner el proceso en ejecución al final de la fila i-ésima y asigna el procesador al proceso de alta prioridad recién llegado.

 

2.3 sistema en tiempo real

Los sistemas en tiempo real requieren que se responda una solicitud dentro de un tiempo determinado.

Dividido en tiempo real duro y tiempo real blando, el primero debe cumplir con la fecha límite absoluta, el segundo puede tolerar un cierto tiempo de espera

519 artículos originales publicados · elogiados 69 · 50,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/qq_41286356/article/details/105200621
Recomendado
Clasificación