Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Capítulo5: Planificación de CPU
2
Capítulo5: Planificación de CPU
Conceptos Básicos Parámetros de Planificación Algoritmos de Planificación Planificación de Hilos Planificación de MultiProcesadores Ejemplos de Sistemas Operativos Algoritmos de Evaluación
3
Objetivos Introducir la Planificación de CPU, la cual es la base de los sistemas operativos multiprogramados Describir varios algoritmos de planificación de CPU Discutir los criterios de evaluación para seleccionar un algoritmo de planificación para un sistema particular
4
Máxima utilización de CPU obtenida con multiprogramación
Conceptos Básicos Máxima utilización de CPU obtenida con multiprogramación Ciclos de ráfaga de CPU–I/O. La ejecución de procesos consiste de un ciclo de ejecución de CPU y de espera en I/O La distribución de ráfaga de CPU
5
Histograma de los tiempos de ráfagas CPU
6
Secuencia alternada de ráfagas de CPU e I/O
7
Planificador de CPU Selecciona de un conjunto de procesos en memoria que estén listos para ejecutar, y asigna la CPU a uno de ellos. El planificador de la CPU se ejecutará cuando un proceso: 1. Cambia de un estado de ejecución a espera (No-Apropiativa) 2. Cambia de un estado de ejecución a Listo (ready) (Apropiativa) 3. Cambia de un estado de espera a ready (Apropiativa) Termina (No-Apropiativa)
8
Despachador El módulo llamado Despachador da el control de la CPU al proceso seleccionado por el planificador de corto plazo (el scheduler propiamente dicho); esto involucra: Cambio de proceso Cambio al modo usuario Salta a la posición correcta dentro del programa de usuario para reiniciar dicho programa Latencia de despacho: El tiempo que tarda el despachador en detener un proceso e iniciar la ejecución de otro.
9
Criterios de Planificación
Utilización de la CPU: mantiene ocupada la CPU tanto como sea posible. (Máximo) Throughput: Rendimiento o número de procesos terminados por unidad de tiempo. (Máximo) Tiempo total de ejecución: Es la cantidad total de tiempo que demora un proceso particular . (Mínimo) Tiempo de espera: es la suma de todos los tiempos de espera en la cola ready (procesos preparados). (Mínimo) Tiempo de respuesta: Cantidad de tiempo o demora que le tome al sistema desde que el usuario envía una solicitud, hasta que se produce la primera respuesta (no toda) (apta para los ambientes de tiempo compartido). (Mínimo)
10
Planificación First-Come, First-Served (FCFS)
Proceso Tiempo de Ráfaga P1 24 P2 3 P3 3 Suponga que los procesos llegan en el orden: P1 , P2 , P3 El diagrama de Gantt de los tiempos de ejecución: Los tiempos de espera son: P1 = 0; P2 = 24; P3 = 27 El promedio de los tiempos de espera: ( )/3 = 17 P1 P2 P3 24 27 30
11
Planificación FCFS (Cont)
Supongan que los procesos llegan en el siguiente orden: P2 , P3 , P1 El diagrama de Gantt es: Los tiempos de espera son P1 = 6; P2 = 0; P3 = 3 El tiempo promedio de espera es: ( )/3 = 3 Mucho mejor que en el caso previo Se resuelve el efecto Convoy (escolta) de procesos cortos detrás de los procesos largos P1 P3 P2 6 3 30
12
Planificación Shortest-Job-First (SJF)
Asocia con cada proceso la duración de la siguiente ráfaga de CPU. Se planifica de acuerdo al tiempo estimado (de menor a mayor). Se despacha al proceso que tenga la menor duración de ráfaga siguiente. SJF es óptimo, ya que se obtiene el mínimo promedio de espera para un grupo dado de procesos La dificultad de este criterio es que se desconoce la longitud de la próxima ráfaga de CPU
13
Ejemplo de SJF Process Arrival Time Ráfaga de Tiempo P1 0.0 6 P2 2.0 8
Diagrama de planificación SJF El tiempo promedio de espera = ( ) / 4 = 7 P4 P3 P1 3 16 9 P2 24
14
Cómo se determina la longitud de la próxima ráfaga de CPU
Se podría estimar la longitud de la próxima ráfaga(pronosticar) Se puede estimar, usando la longitud de las ráfagas previas, usando media exponencial:
15
La predicción de la longitud de la próxima ráfaga de CPU
16
Planificación por prioridades
Un número entero se asocia con cada proceso La CPU se asigna a un proceso con la prioridad más alta (por ej. El entero más pequeño prioridad más alta). Puede ser: Apropiativa (el sistema operativo puede quitar la CPU) No-Apropiativa (el sistema operativo no puede quitar la CPU, salvo por error del proceso) Por ejemplo SJF es una planificación por prioridad, donde la prioridad es el valor de tiempo que se estima durará la próxima ráfaga de CPU Problema Starvation (inanición)– a lo mejor un proceso de baja prioridad puede que nunca ejecute Solución Aging (envecimiento)– A medida que se avance en el tiempo se incrementa la prioridad de aquellos procesos que no ejecutan hace un tiempo determinado
17
Round Robin (RR) A cada proceso, se le da una pequeña cantidad de tiempo de uso de la CPU (time quantum), usualmente entre milisegundos. Después de este lapso de tiempo, el proceso es desalojado y se lo agrega al final de la cola ready Si hay n procesos en la cola ready y el quantum de tiempo es q, entonces cada proceso se le da 1/n del tiempo de la CPU, o lo que es lo mismo, es que cada proceso tiene una CPU, que ejecuta a una velocidad de 1/n la velocidad real de ella. Cada proceso no tiene que esperar más que (n-1)q unidades de tiempo. Los mejores rendimiento de los algoritmos: Si el q es largo, el algoritmo tiende a un FIFO Si q es pequeño q debiera ser más grande que el tiempo de cambio de contexto, sino el overhead sería demasiado grande
18
Ejemplo de RR con un Tiempo de Quantum = 4
Proceso Ráfaga de Tiempo P1 24 P2 3 P3 3 El diagrama de Gantt es: Normalmente, tiene un valor promedio de tiempo total de ejecución más alto que SJF, pero el tiempo de respuesta es mejor P1 P2 P3 4 7 10 14 18 22 26 30
19
Tiempo de Quantum y tiempo de cambio de Contexto
20
Tiempo de ejecución total con varios valores de Quantum
21
Colas Multiniveles La cola Ready es particionada en colas separadas:
Para procesos foreground (interactivos) Para procesos background (batch) Cada cola tiene su propio algoritmo de planificación Para los procesos foreground – RR Para los procesos background – FCFS Debe hacerse una planificación entre las colas Planificación de prioridad fija; (por ejemplo, servir a todos los foreground y luego los background). Puede llevar a starvation (inanición). Tiempo de quantum (rodaja): cada cola da una cierta cantidad de tiempo de CPU, el cual puede planificar con por ejemplo; 80% a los foreground (interactivos) con RR 20% a los background (batch o introactivos) con FCFS
22
Plnificación de colas Multiniveles
23
Colas de Multinivel con realimentación
Un proceso puede moverse entre varias colas. La inanición puede solucionarse con la realimentación entre colas El planificador de colas Multinivel con realimentación se puede definir por los siguientes parámetros: El Número de colas Los Algoritmos de planificación de cada cola El Método usado para determinar cuándo se debe pasar a a un proceso a una cola de prioridad más alta El Método usado para determinar cuándo se debe pasar a a un proceso a una cola de prioridad más baja El Método usado para determinar en qué cola se introducirá un proceso cuando haya que darle servicio
24
Ejemplo de colas multinivel con realimentación
Tres colas: Cola 0 – tiene un RR con un tiempo de quantum de 8 milisegundos Cola 1 – tiene un RR con un tiempo de quantum de 16 milisegundos Cola2 – tiene un FCFS Planificación Un nuevo trabajo ingresa en la cola cero(Q0 ) con criterio FIFO, luego cuando será atendido o servido con 8 milisegundos. Si el proceso no se va en 8 milisegundos, entonces el proceso es movido a la cola Q1. Un trabajo en la cola Q1 es nuevamente ingresado con FCFS y recibe un tiempo adicional de16 milisegundos. Si aún no se va sólo, entonces el proceso será movido a la cola a la cola Q2.
25
Colas Multinivel con realimentación
26
Planificación de Sistemas Multiprocesador
Si hay varias CPU se puede compartir la carga. La planificación ready es más compleja. No existe una única solución Suponemos que los procesadores son idénticos. ASMP:Si sólo un procesador accede a la estructura de datos del sistema, el método se denomina multiprocesamiento asimétrico y se reduce la complejidad porque no se comparten datos. SMP:El kernel puede ejecutarse en cualquier procesador, por lo que se dice que los procesadores sea auto-planifican, este método se denomina multiprocesamiento simétrico. Nosotros veremos multiprocesamiento simétrico: la cola ready es única y los procesos la comparten. Hay que cuidar que si dos o más planificadores de distintas CPU no accedan simultáneamente a la cola ready, o no elijan el mismo proceso. Cada procesador puede tener su propia cola ready privada
27
Planificación de Sistemas Multiprocesador
Todos los sistemas operativos modernos soportan el multiprocesamiento simétrico y cada procesador tiene una cola privada de procesos en estados ready. Afinidad al procesador: cuando un proceso se ejecuta en un procesador, se carga en su memoria cache los datos que le interesan al proceso. Si por una cuestión de equilibrio de cargas, el proceso migra a otro procesador, el sistema debe trasladar el contenido de la cache también. Es decir a veces conviene dejar que el proceso siga su ejecución en el mismo procesador, respetando su afinidad. Equilibrio de carga es el mecanismo que distribuye equitativamente la carga de trabajo entre todos los procesadores del sistema SMP. El equilibrio de carga es sólo necesario en aquellos sistemas que tienen colas privadas por cada procesador. Si hubiera una única cola, los procesos serían extraídos 1 × 1 por cada procesador desocupado.
28
Planificación de Sistemas Multiprocesador
Se conoce como migración comandada a la actividad específica que comprueba periódicamente la carga en cada procesador y si encuentra un desequilibrio, distribuye equitativamente la carga moviendo los procesos de los procesadores sobrecargados a los menos ocupados o inactivos. Se conoce como migración solicitada cuando un procesador inactivo extrae de otro procesador (ocupado) alguna tarea que esté en espera. Las migraciones comandadas y solicitadas pueden ejecutarse en paralelo en los sistemas de equilibrado de carga, por ejemplo Linux ejecuta su algoritmo de migración comandada cada 200 ms o la migración solicitada cuando la cola de ejecución de un procesador está vacía. El equilibrio de carga contrarresta los beneficios de la afinidad al procesador
29
Planificación de Sistemas Multiprocesador
Los sistemas multiprocesamiento simétrico (SMP), permiten que varios hilos se ejecuten de forma concurrente en cada uno de los procesadores físicos. Existe otra alternativa que consiste en proporcionar procesadores lógicos a los hilos, esto se conoce como mecanismo multihilos simétrico (SMT) o hiperthreading en los procesadores Intel. Cada procesador lógico tiene su propio estado de la arquitectura que incluye los registros de propósito general y los registros de estado de la máquina. Cada procesador lógico es responsable de su propio tratamiento de interrupciones. Cada procesador lógico comparte los recursos de su procesador físico, la memoria cache y los buses. SMT es una funcionalidad dada por el hardware y no por el software. El hardware proporciona la representación del estado de la arquitectura de cada procesador lógico, así como el tratamiento de las interrupciones. Poseer varias CPU lógicas en una física, tiene la ventaja de que tiene a mano los datos de un hilo, que puede intercambiar con otro hilo, por las demoras en los accesos a memoria.
30
Procesadores Lógicos
31
Planificación de Hilos
Si un sistema operativo reconoce hilos en un proceso o en una aplicación, entonces planifica hilos para sus procesadores. Si un sistema operativo no reconoce hilos (esquema viejo), entonces deben ser gestionados por una biblioteca de hilos (a nivel de usuario) para que los planifique dentro del proceso, sin que el sistema operativo se entere. Para ejecutarse en una CPU, los hilos de usuario deben ser asignados a un hilo de nivel del kernel, aunque esta asignación puede ser indirecta y puede emplear un proceso ligero (LWP). En los sistemas que implementan los modelos mucho a uno y muchos a muchos, la biblioteca de hilos planifica los hilos de nivel usuario para que se ejecuten sobre un proceso LWP disponible, esto se conoce con el nombre de ámbito de contienda del proceso (PCS), dado que la competencia por la CPU tiene lugar entre hilos que pertenecen al mismo proceso. La biblioteca de hilos planifica los hilos de usuario sobre los procesos ligeros disponibles, pero estos procesos ligeros deben hacerse corresponder con un hilo reconocido por el kernel, entonces el kernel usa el ámbito de contienda del sistema, esto tiene lugar entre todos los hilos del sistema
32
Planificación de Hilos
Los sistemas que usan el modelo uno a uno, sólo planifican los hilos con el ámbito de contienda del sistema (SCS). Normalmente la planificación PCS se lleva a cabo de acuerdo con la prioridad: el planificador selecciona para su ejecución el hilo ejecutable con la prioridad más alta. Las prioridades de los hilos de nivel usuario son establecidas por el programador y no se ajustan mediante la biblioteca de hilos, aunque algunas bibliotecas de hilos permiten que el programador cambie la prioridad de un hilo (puede llevar a inanición de algún hilo). La planificación en Pthread (POSIX) tiene API que permite especificar el ámbito de contienda del proceso (PCS) o el ámbito de contienda del sistema (SCS) durante la creación del hilo. La política PTHREAD_SCOPE_PROCESS planifica los hilos de nivel de usuario sobre los procesos ligeros disponibles. El número de procesos LWP se mantiene mediante la biblioteca de hilos, quizás utilizando activaciones del planificador. La política de planificación PTHREAD_SCOPE_SYSTEM creará y asociará un proceso LWP a cada hilo del nivel de usuario en los sistemas muchos a muchos, lo que equivale en la práctica asignar los hilos usando modelo uno a uno.
34
Planificación de Hilos Solaris
Veremos la planificación de hilos al nivel del kernel en Solaris y Linux. Solaris usa una planificación de hilos basada en prioridades, define cuatro clases para planificación: tiempo real sistema tiempo compartido interactiva dentro de cada clase hay diferentes prioridades y diferentes algoritmos de planificación. La clase de planificación predeterminada para un proceso es la de tiempo compartido. La política de planificación para tiempo compartido modifica dinámicamente las prioridades y asigna cuantos de tiempo de diferente duración, usando colas multinivel realimentadas. De manera predeterminada, existe una relación inversa entre las prioridades y los cuantos de tiempo. Cuanto más alta sea la prioridad, más pequeño será el cuanto de tiempo; y cuanto menor sea la prioridad más larga será la franja.
35
Planificación de Hilos Solaris
Los procesos interactivos suelen tener la prioridad más alta; los proceso limitados por la CPU tiene la prioridad más baja. Esta política de planificación proporciona un buen tiempo de respuesta para los procesos interactivos y una buena tasa de procesamiento para los procesos limitados por la CPU. La clase interactiva usa la misma política de planificación que la clase de tiempo compartido, pero proporciona a las aplicaciones con interfaz de ventanas una prioridad más alta, para aumentar el rendimiento Solaris usa una tabla de despacho para hilos interactivos y de tiempo compartido: prioridad: depende de la clase, para las clases de tiempo compartido e interactivo. Un número alto indica una mayor prioridad. Cuanto de tiempo: el cuanto de tiempo para la prioridad asociada. Caducidad del cuanto de tiempo: la nueva prioridad que se asignará a un hilo que haya consumido su cuanto el tiempo completo sin bloquearse. La prioridad de estos hilos se reduce. Retorno del estado dormido: en la prioridad que se asigna a un hilo cuando sale del estado dormido (por ejemplo cuando el hilo está esperando para realizar una operación de entrada/salida).
36
Solaris Dispatch Table
37
Planificación de Hilos Solaris
Solaris 9 tiene dos nuevas clases de planificación: de prioridad fija: tienen el mismo rango de prioridades que las de tiempo compartido, sin embargo, su prioridades no se ajustan dinámicamente. de cuota equitativa: en lugar de prioridades a la hora de tomar decisiones de planificación usa cuotas de CPU. Las cuotas de CPU indican el derecho a utilizar los recursos de CPU disponible y se asignan a un conjunto de procesos (ya cada uno de estos conjuntos se les denomina proyecto). Solaris usa la clase de sistema para ejecutar procesos del kernel, como el demonio de paginación. Una vez establecida la prioridad de un proceso del sistema, ésta no cambia. La clase sistema se reserva para uso del kernel (los procesos de usuario que se ejecutan en modo kernel no se incluyen en la clase sistema). Los hilos perteneciente a la clase de tiempo real se les asigna la actividad más alta. Esto permite que un proceso en tiempo real tengo una respuesta asegurada del sistema dentro de un período limitado de tiempo. Se ejecutará antes que los procesos de cualquier otra clase.
38
Solaris Scheduling
39
Solaris 2 Scheduling
40
Planificación de Hilos Solaris
Cada clase de planificación incluye un conjunto de prioridades. Sin embargo, el planificador convierten actividades específicas de una clase de prioridad global y selecciona el hilo que tenga una prioridad global más alta para ejecutarla. El hilo seleccionado ejecuta en la CPU hasta que: se bloquea o consume su cuanto de tiempo o es desalojado por un hilo de prioridad más alta. Si existen múltiples hilos con la misma prioridad, el planificador usa una cola y selecciona los hilos por turnos. Solaris usa tradicionalmente el modelo muchos a muchos pero con Solaris 9 se cambió al modelo uno a uno.
41
Planificación de Hilos Windows
Windows XP planifica hilos utilizando un algoritmo de planificación apropiativa y basado en prioridades. El planificador de Windows XP asegura que siempre se ejecute el hilo de prioridad más alta. La parte del kernel de Windows XP que gestiona la planificación se denomina despachador. Si un hilo en tiempo real de prioridad más alta pasa al estado preparado mientras esté ejecutando un hilo de prioridad más baja, este último será desalojado. El despachador usa un esquema de prioridades de 32 niveles para determinar el orden de ejecución de los hilos. Las prioridades se dividen en dos clases: la clase variable (dinámica) contiene hilos cuyas prioridades van de 1 a 15. La clase de tiempo real contiene hilos con prioridad comprendidas en el rango de 16 a 31. Existe también un hilo que se ejecuta con prioridad 0 que se emplea para la gestión de memoria. El despachador usa una cola distinta para cada prioridad de planificación y recorrer el conjunto de colas desde la más alta la más baja hasta que encuentra un hilo que esté preparado para ejecutarse
42
Windows XP Priorities
43
Planificación de Hilos Windows
Si no encuentra un hilo preparado, el despachador ejecuta un hilo especial denominado inactivo (idle). Dentro de cada clase de prioridad hay una prioridad relativa. La prioridad de cada hilo se basa en la clase de prioridad a la que pertenece y en su prioridad relativa dentro de dicha clase. Cada hilo tienen una prioridad base que representa un valor dentro del rango de prioridades de la clase a la que pertenece el hilo. De manera predeterminada, la prioridad base es el valor de la prioridad normal relativa a cada clase especificada. Normalmente los procesos son miembros de la clase de prioridad normal. Los procesos pertenecen a la clase que normalmente tenía el padre, en el momento de la creación del proceso. Aquella inicial del hilo es normalmente la prioridad base del proceso al que pertenece el hilo. Cuando se excede el cuanto de tiempo de un hilo, dicho hilo se interrumpe; si el hilo pertenece la clase prioridad variable se reduce su prioridad. No obstante, la prioridad nunca disminuye por debajo de la prioridad base.
44
Planificación de Hilos Windows
Disminuir la prioridad del hilo tiende a limitar el consumo de CPU por parte de los hilos que realicen cálculos intensivos. Cuando un hilo de prioridad variable sale del estado de espera, el despachador incrementa su prioridad. Dicho incremento dependerá de que el hilo hubiera estado esperando por una operación de entrada salida de teclado (se aumenta significativamente) o por una operación de disco (se aumenta moderadamente). Esta estrategia suele proporcionar buenos tiempos de respuesta a los hilos interactivos que usen el mouse y una interfaz de ventana. También permite a los hilos limitados por entrada/salida mantener ocupados a los dispositivos de entrada/salida, al mismo tiempo que los hilos que realizan cálculos intensivos emplean en segundo plano los ciclos de CPU libres. Esta estrategia se usa en varios sistemas operativos de tiempo compartido, incluyendo Unix. Además, se aumenta la prioridad de la ventana con la que se está interactuando actualmente el usuario para mejorar el tiempo de respuesta. Cuando un usuario está ejecutando un programa interactivo, el sistema necesita proporcionar un rendimiento especialmente bueno a dicho proceso. Por esta razón Windows XP tiene una regla de planificación especial para los procesos de la clase normal. Diferencia entre procesos de primer plano que está actualmente seleccionado en la pantalla y los procesos de segundo plano que no están actualmente seleccionados. Cuando un proceso pasa a primer plano Windows XP multiplica el cuanto de tiempo por un cierto factor, normalmente igual a 3. Este incremento proporciona al proceso en primer plano 3 veces más tiempo para ejecutarse, antes que se produzca un desalojo debido a la Compartición de tiempo.
45
Planificación de Hilos Linux
Antes de la versión 2.5, el kernel de Linux ejecutaba una variante del algoritmo tradicional de planificación de Unix. Los dos problemas que tiene el planificador tradicional de Unix son: por un lado que no proporciona el adecuado soporte para sistemas SMP y por otro lado que no puede escalarse bien al aumentar el número de tareas en el sistema. Con la versión 2.5, se optimizó el planificador y ahora el kernel proporciona un algoritmo de planificación que se ejecuta velocidad constante, independientemente del número de tareas del sistema. El nuevo planificador también proporciona un mejor soporte para sistemas SMP, incluyendo mecanismos de afinidad al procesador y equilibrio de carga, así como reparto equitativo de recursos y soporte para tareas interactivas. El planificador de Linux es un algoritmo basado en prioridades y apropiativo, con dos rangos distintos de prioridades: un rango de tiempo real de 0 a 99 un rango de valor normal (nice) en el rango comprendido entre 100 y 140.
46
Planificación de Hilos Linux
Estos dos rangos se asignan a un esquema de prioridades global, en el que los valores numéricamente más bajos indican las prioridades más altas. A diferencia de otros muchos sistemas incluyendo Solaris y Windows XP, Linux asigna a las tareas de prioridad más alta cuantos de tiempo más largo y a las tareas de prioridad más baja cuantos de tiempo más corto. Una tarea ejecutable se considera elegible para ejecutarse en la CPU cuando todavía le quede tiempo de su cuanto de tiempo. Cuando la tarea ha agotado su cuanto de tiempo, se considera caducada y no puede volver ejecutarse hasta que las otras tareas hayan agotado sus respectivos cuanto de tiempo. El kernel mantiene una lista de todas la tarea ejecutable en una estructura de datos denominada cola de ejecución (runqueue). Debido al soporte para sistemas SMP, cada procesador mantiene su propia cola de ejecución y la planifica de forma independiente, cada cola de ejecución tiene dos matrices de prioridades denominadas matrices activa y caducada.
47
Planificación de Hilos Linux
La matriz activa contiene todas las tareas que todavía disponen de tiempo en su cuanto de tiempo. Mientras que la matriz caducada contiene todas las tareas caducadas. Cada una de estas matrices de prioridades contienen la lista de tareas indexada en función de la prioridad. El Planificador elige la tarea de la matriz activa con la tira más alta para su ejecución en la CPU. En las máquinas multiprocesador, esto significa que cada procesador selecciona la tarea de prioridad más alta de su propia cola de ejecución. Cuando todas las tareas han agotado su cuanto de tiempo (decir cuando la matriz activa está vacía), las dos matrices de prioridad se intercambian: la matriz caducada pasa a ser la matriz activa, y viceversa. Linux implementa la planificación en tiempo real A la tarea en tiempo real se les asignan prioridades estáticas, las restantes tareas tienen tienen prioridades dinámicas que se basan en su valores nice:+ 5, -5.
48
Planificación de Hilos Linux
La interactividad en la tarea determina si el valor 5 tiene que sumarse o restarse del valor nice. El grado de interactividad de una tarea se determinan por el tiempo que ha estado durmiendo mientras esperaba para realizar una operación de entrada/salida. Las tareas más interactivas suelen permanecer más tiempo en el estado dormido y, por lo tanto, lo más probable es que usen ajustes próximos a -5, ya que planificador favorece las tareas interactivas. Inversamente la tarea que pasan menos tiempo en estado durmiendo suelen estar limitada por la CPU y, por lo tanto, se le asignará una prioridad menor. El recálculo de la prioridad dinámica de una tarea se produce cuando la tarea ha agotado su cuanto de tiempo se pasa la matriz de caducadas. Por lo tanto, cuando se intercambian las dos matrices, a toda la tarea que hay en la matriz activa se le habrá asignado nuevas prioridades y los correspondientes cuantos de tiempo.
49
Priorities and Time-slice length
50
List of Tasks Indexed According to Priorities
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.