Tema 3. Gestión Avanzada de Procesos

Anuncio
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Tema 3. Gestión Avanzada de Procesos
Juan Piernas Cánovas
Departamento de Ingenierı́a y Tecnologı́a de Computadores
Universidad de Murcia
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Índice
1
Planificación de procesos en multiprocesadores
Multiprocesadores de memoria compartida
Sistemas operativos para multiprocesadores
Sincronización de multiprocesadores
Planificación de procesos
2
Planificación de procesos de tiempo real
Introducción
Planificación de tasa monotónica
Planificación de primero el plazo más cercano
3
Gestión de procesos en Linux
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Multiprocesadores de memoria compartida
Sistemas operativos para multiprocesadores
Sincronización de multiprocesadores
Planificación de procesos
Multiprocesadores de memoria compartida
2 o más CPUs que comparten una RAM común
Comunicación entre CPUs y módulos de RAM mediante una
red de interconexión: bus, crossbar, red omega,. . .
Según el tiempo de acceso a memoria:
UMA (Uniform Memory Access): módulos RAM compartidos
NUMA (Non-Uniform Memory Access): módulos RAM locales
pero compartidos lógicamente
cc-NUMA: NUMA con cachés coherentes
Propiedad importante de los multiprocesadores: el valor que
lee una CPU de una palabra puede no coincidir con lo que
escribió previamente en esa misma palabra
Supondremos que todos los procesadores son iguales (aunque
hay casos en los que la E/S sólo se puede hacer en ciertos
procesadores)
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Multiprocesadores de memoria compartida
Sistemas operativos para multiprocesadores
Sincronización de multiprocesadores
Planificación de procesos
Sistema operativo privado por CPU
CPU 1
CPU 2
CPU 3
CPU 4
Memory
Has
private
OS
Has
private
OS
Has
private
OS
Has
private
OS
1
2
Data Data
3
4
Data Data
OS code
I/O
Bus
Código del SO compartido y copia privada de los datos
Ventajas: se comparten dispositivos de E/S y el reparto de la
memoria es flexible
Inconvenientes:
No hay balanceo de carga (los procesos no pueden cambiar de
CPU y los hijos van a la misma CPU que el padre)
No se comparten páginas (las que le sobran a un SO no las
puede aprovechar otro)
No se comparten datos. Ejemplo: cachés de buffers
independientes. ¿Qué pasa si se modifica el mismo bloque de
disco en más de una caché?
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Multiprocesadores de memoria compartida
Sistemas operativos para multiprocesadores
Sincronización de multiprocesadores
Planificación de procesos
Multiprocesadores amo-esclavo
CPU 1
CPU 2
CPU 3
CPU 4
Memory
Master
runs
OS
Slave
runs user
processes
Slave
runs user
processes
Slave
runs user
processes
User
processes
I/O
OS
Bus
El SO en una única CPU en donde se atienden todas las
llamadas al sistema
El resto de CPUs ejecutan procesos que se reparten la
memoria que deja libre el SO
Se resuelven casi todos los problemas del modelo anterior
Inconveniente: con muchos procesos y CPUs, el amo se
convierte en un cuello de botella al tener que atender todas
las llamadas al sistema
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Multiprocesadores de memoria compartida
Sistemas operativos para multiprocesadores
Sincronización de multiprocesadores
Planificación de procesos
Multiprocesadores simétricos (SMP)
CPU 1
CPU 2
CPU 3
CPU 4
Runs
users and
shared OS
Runs
users and
shared OS
Runs
users and
shared OS
Runs
users and
shared OS
I/O
Memory
OS
Locks
Bus
Una única copia del SO que puede ejecutar cualquier CPU
Una llamada al sistema se atiende en la CPU en la que salta
⇒ no hay un amo que sea cuello de botella
Ventajas: balanceo dinámico de procesos y de memoria
Problema: proteger las estructuras de datos globales del SO:
Solución incorrecta: convertir el SO en una gran sección crı́tica
Solución correcta: dividir el SO en sec. crı́ticas independientes
y proteger las estructuras globales individualmente
¡Esta es la organización más común hoy en dı́a!
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Multiprocesadores de memoria compartida
Sistemas operativos para multiprocesadores
Sincronización de multiprocesadores
Planificación de procesos
Sincronización de multiprocesadores
Solución incorrecta: deshabilitar interrupciones (locales)
Solución: instrucción TSL con bloqueo de bus. Si no hubiera
bloqueo de bus:
Word
1000 is
initially 0
CPU 1
Memory
CPU 2
1. CPU 1 reads a 0
2. CPU 2 reads a 0
3. CPU 1 writes a 1
4. CPU 2 writes a 1
Bus
Problemas de TSL:
Puede interactuar negativamente con el protocolo de
coherencia de cachés (TSL es de escritura):
Solución 1: leer palabra y ejecutar TSL sólo si palabra == 0
Solución 2: pausa aleatoria entre ejecuciones de TSL
Supone una espera activa. Posible solución: cambiar de
proceso si la espera activa dura ya cierto tiempo
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Multiprocesadores de memoria compartida
Sistemas operativos para multiprocesadores
Sincronización de multiprocesadores
Planificación de procesos
Planificación de procesos
Bidimensional: qué proceso y en qué CPU
Se debe tener en cuenta la relación entre procesos:
independientes (procesos de usuarios distintos) y dependientes
(make paralelo, hilos de un proceso,. . . )
Importancia de los detalles del hardware (cachés, etc.)
El algoritmo de planificación especı́fico es menos importante
(FCFS puede ser sólo un poco peor que un RR)
Con varios procesadores, una planificación eficiente que
aproveche al 100 % las CPUs es todavı́a más complicada
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Multiprocesadores de memoria compartida
Sistemas operativos para multiprocesadores
Sincronización de multiprocesadores
Planificación de procesos
Procesos independientes
Una única estructura de datos para los procesos listos que se
seleccionan mediante un algoritmo FCFS, multinivel, etc.:
0
1
2
3
4
5
6
7
8
9
CPU
CPU 4
goes idle
10 11
12 13 14 15
Priority
7
6
5
4
A
D
F
3
2
1
0
1
2
3
5
6
7
8
9
CPU 12
goes idle
10 11
12 13 14 15
B
E
C
G H
J K
I
L
0
A
Priority
7
6
5
4
M N
(a)
G H
J K
L
(b)
1
2
3
5
6
7
8
9
B
10 11
13 14 15
Priority
7
6
5
4
B C
D E
F
3
2
1
0
0
A
I
M N
C
D
F
3
2
1
0
E
G H
J K
L
I
M N
(c)
Balanceo dinámico de la carga, aunque la estructura de datos
se puede convertir en un cuello de botella
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Multiprocesadores de memoria compartida
Sistemas operativos para multiprocesadores
Sincronización de multiprocesadores
Planificación de procesos
Procesos independientes
Planificación inteligente: dar un poco más de CPU a los
procesos que posean un bloqueo repetitivo (spinlock)
Planificación por afinidad: intentar que un proceso se
ejecute en la misma CPU de antes (posibles éxitos en caché y
TLB)
Planificación de dos niveles:
Nivel superior: al crear un proceso se asigna a una CPU. Si una
CPU se queda sin procesos, se le asigna uno de otra CPU
Nivel inferior: cada CPU tiene una colección de procesos que
planifica por sı́ misma con su propio algoritmo
Beneficios:
Distribución más o menos uniforme de la carga
Afinidad de caché (como en el 2o tipo de planificación)
Menos competencia por la estructura de datos global
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Multiprocesadores de memoria compartida
Sistemas operativos para multiprocesadores
Sincronización de multiprocesadores
Planificación de procesos
Procesos relacionados
Cuando hay procesos o hilos relacionados, lo mejor es que se
ejecuten a la vez en procesadores diferentes
Si se planifican independientemente, puede surgir el siguiente
Thread A running
problema:
0
CPU 0
A0
B0
A0
B0
Time 0
B1
A1
100
B0
B1
A1
Reply 2
Reply 1
CPU 1
A0
Request 2
Request 1
B1
200
A1
300
400
500
600
La planificación de procesos relacionados se asemeja al
problema del reparto de marcos de página donde hay que:
evitar la hiperpaginación (≡ demasiados cambios de contexto)
asignar a un proceso un no mı́nimo de marcos para que
progrese adecuadamente (≡ no mı́nimo de procesadores)
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Multiprocesadores de memoria compartida
Sistemas operativos para multiprocesadores
Sincronización de multiprocesadores
Planificación de procesos
Procesos relacionados
Planificación de espacio compartido
Cuando surge un nuevo grupo de procesos (o hilos), asigna en
exclusiva a cada proceso del grupo una CPU libre ⇒ Si el
proceso se bloquea, la CPU se desperdicia
Si no hay suficientes CPUs libres, ningún proceso del grupo se
asignará a una CPU y, por tanto, ninguno se podrá ejecutar
Lo ideal es que el no de componentes del grupo se adapte al no
de procesadores disponibles
Planificación ideal para las aplicaciones (no hay cambios de
contexto) pero algunas CPUs se pueden infrautilizar
8-CPU partition
6-CPU partition
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Unassigned CPU
Juan Piernas Cánovas
4-CPU partition
12-CPU partition
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Multiprocesadores de memoria compartida
Sistemas operativos para multiprocesadores
Sincronización de multiprocesadores
Planificación de procesos
Procesos relacionados
Planificación tipo pandilla
Caracterı́sticas:
Un grupo de procesos (pandilla) se planifica como una unidad
Todos los miembros de una pandilla se ejecutan a la vez en
diferentes CPUs, que comparten con otros procesos
Todos los miembros de una pandilla inician y terminan sus
porciones de tiempo juntos
Lo importante: todas las CPUs se planifican a la vez de forma
periódica (aunque alguna quede ociosa mientras tanto)
CPU
0
0
A0
1
A1
2
A2
3
A3
4
A4
5
A5
1
B0
B1
B2
C0
C1
C2
2
Time 3
slot 4
D0
D1
D2
D3
D4
E0
E1
E2
E3
E4
E5
E6
A0
A1
A2
A3
A4
A5
5
B0
B1
B2
C0
C1
C2
6
D0
D1
D2
D3
D4
E0
7
E1
E2
E3
E4
E5
E6
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Introducción
Planificación de tasa monotónica
Planificación de primero el plazo más cercano
Sistemas de tiempo real
Los sistemas de tiempo real (STR) cada vez más importantes:
experimentos de laboratorio, robótica, control aéreo, etc.
La exactitud del sistema depende tanto del resultado lógico de
un cálculo como del instante en el que se produzca el resultado
Suele ser crı́tico el tiempo de respuesta a sucesos externos
(tiempo de reconocer y tratar interrupciones)
Caracterı́sticas de los STR actuales:
Cambios rápidos de procesos o hilos
Pequeño tamaño (con una funcionalidad mı́nima asociada)
Capacidad de responder rápidamente a interrupciones externas
Multitarea con mecanismos de comunicación entre procesos
Ficheros especiales para lectura/escritura de alta velocidad
Minimizar el tiempo en que las interrups. están deshabilitadas
Alarmas y temporizadores especiales
El corazón del STR es el planificador a corto plazo
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Introducción
Planificación de tasa monotónica
Planificación de primero el plazo más cercano
Sistemas de tiempo real
Dos tipos de sistemas:
Sistemas de tiempo real estricto:
todas la tareas deben cumplir sus plazos de tiempo
el SO debe conocer cuánto tardan en ejecutarse las funciones
no se permite memoria virtual ni acceso a almacenamiento
secundario
Sistemas de tiempo real flexible:
algunas tareas pueden no cumplir sus plazos
posible en sistemas de tiempo compartido con modificaciones
en el planificador y puntos de expropiación dentro del núcleo
¿Cómo deben planificarse los procesos para cumplir las
restricciones de tiempo en un STR estricto?
Lo normal es que la planificación sea apropiativa por prioridad
Los algoritmos pueden ser estáticos o dinámicos
Un conjunto de m procesos P
es planificable en un sistema
Ci
monoprocesador sı́ y sólo sı́ m
i=1 Pi ≤ 1
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Introducción
Planificación de tasa monotónica
Planificación de primero el plazo más cercano
Planificación de procesos en tiempo real
Supondremos que el sistema conoce:
m: número de tareas
Pi : periodo con el que debe ejecutarse cada proceso
Ci : consumo de CPU de cada proceso en cada periodo
Di : tiempo máximo en el que el proceso debe realizar el
trabajo (Ci ≤ Di ≤ Pi )
Ri : tiempo de respuesta máximo de cada proceso
Se trata de asegurar que Ri ≤ Di para cada proceso
Se denomina hiperperiodo del sistema a H = mcm(Pi ). El
comportamiento temporal se repite cada hiperperiodo
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Introducción
Planificación de tasa monotónica
Planificación de primero el plazo más cercano
Planificación de procesos en tiempo real
Ejemplo de tareas periódicas:
Deadline
for A1
Starting moment
for A1, B1, C1
Deadline for B1
Deadline for C1
A
A1
B
A2
A3
B1
B2
C C1
0
A4
B3
C2
10
20
30
40
A5
B4
C3
50
60
70
80
90
100
110
120
Time (msec)
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
130
140
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Introducción
Planificación de tasa monotónica
Planificación de primero el plazo más cercano
Planificación de tasa monotónica (RMS)
Para procesos periódicos desalojables que cumplen:
1
2
3
4
5
Di = Pi
Cada proceso termina dentro de su periodo
Los procesos son independientes
Cada proceso necesita el mismo tiempo de CPU en cada uno
de sus periodos o ráfagas
Los procesos no periódicos, si los hay, no tienen plazos
Para simplificar, supondremos que el desalojo de procesos es
instantáneo y que no requiere procesamiento adicional
Algoritmo:
1
2
A cada proceso se le asigna una prioridad estática igual a su
frecuencia ( P1i )
Siempre se ejecuta el proceso listo de mayor prioridad
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Introducción
Planificación de tasa monotónica
Planificación de primero el plazo más cercano
Planificación de tasa monotónica (RMS)
Ejemplo:
A
B
A3
A2
A1
B1
B2
C C1
B4
C3
C2
A1
B1
C1
A2
B2
C2
A3
EDF
A1
B1
C1
A2
B2
C2
A3
10
20
30
40
A5
B3
RMS
0
A4
50
60
B3
A4
B3
70
80
90
A4
100
C3
A5
B4
C3
A5
B4
110
120
130
Time (msec)
RMS garantiza el éxito de la planificación cuando
Pm Ci
1
m
i=1 Pi ≤ m(2 − 1). Si no se cumple la condición podrı́a
fallar o todavı́a tener éxito
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
140
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Introducción
Planificación de tasa monotónica
Planificación de primero el plazo más cercano
Planificación de tasa monotónica (RMS)
El test anterior es suficiente, pero no necesario, y no es
aplicable a un modelo de tareas más general
Test basado en el tiempo de respuesta:
Se basa en los tiempos de respuesta de las tareas en el peor
caso, que se da cuando todas las tareas están listas a la vez (a
ese instante se le llama instante crı́tico)
Para la tarea de mayor prioridad, R = C
ParaP
el resto, Ri = Ci + Ii , donde la interferencia
máxima
P
Ii = j∈hp(i) ⌈ PRji ⌉Cj , es decir, Ri = Ci + j∈hp(i) ⌈ PRji ⌉Cj
Se puede calcular mediante la relación de recurrencia:
X wn
win+1 = Ci +
⌈ i ⌉Cj
Pj
j∈hp(i)
P
empezando por wi0 = Ci + j∈hp(i) Cj y parando cuando
win+1 = win o cuando win+1 > Pi (la tarea falla)
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Introducción
Planificación de tasa monotónica
Planificación de primero el plazo más cercano
Planificación de tasa monotónica (RMS)
Ejemplo:
Tareas (la columna R es lo que vamos a calcular):
P C Prioridad R
Tarea 1 7
3
3
3
Tarea 2 12 3
2
6
Tarea 3 20 5
1
20
Para la tarea 1:
w10 = 3
Para la tarea 2:
w20 = 3 + 3 = 6
w21 = 3 + ⌈ 67 ⌉ · 3 = 6
Para la tarea 3:
w30 = 5 + 3 + 3 = 11
...
20
w34 = 5 + ⌈ 20
⌉ · 3 + ⌈ 12
⌉ · 3 = 20
7
Éxito ya que Ri ≤ Pi para todas las tareas
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Introducción
Planificación de tasa monotónica
Planificación de primero el plazo más cercano
Planificación de tasa monotónica (RMS)
Problema de inversión de prioridades:
En la mayorı́a de los sistemas, las tareas no son totalmente
independientes ya que interaccionan mediante datos comunes,
paso de mensajes, etc.
En estos casos, puede ocurrir que una tarea tenga que esperar
a que otra de menor prioridad libere un recurso
Los bloqueos por inversión de prioridad ponen en peligro la
planificabilidad del sistema
Posible solución: herencia de prioridades. Si una tarea p
está bloqueada por una tarea q de menor prioridad, entonces q
cambiará su prioridad por la de p hasta que libere el recurso
Ahora las prioridades no son totalmente estáticas
Este problema puede surgir en otros sistemas y puede dar
lugar a livelock con esperas activas
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Introducción
Planificación de tasa monotónica
Planificación de primero el plazo más cercano
Planificación de primero el plazo más cercano (EDF)
Planificación dinámica que no requiere que:
los procesos sean periódicos
el tiempo de CPU sea el mismo en cada ráfaga o periodo
Algoritmo:
Cuando un proceso necesita CPU, anuncia su presencia y su
plazo (instante en el que debe haber finalizado)
Se mantiene una lista de procesos listos ordenada por plazo
Siempre se ejecuta el proceso que tiene el plazo más cercano
(si es un proceso nuevo, se apropia de la CPU)
Si un proceso hace que el sistema no sea planificable se
rechaza su ejecución temporalmente
EDF
el éxito de la planificación siempre que
Pm garantiza
Ci
i=1 Pi ≤ 1
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Introducción
Planificación de tasa monotónica
Planificación de primero el plazo más cercano
Planificación de primero el plazo más cercano (EDF)
Ejemplo:
A
A1
B
B1
A2
A3
B2
C C1
A1
B1
B4
EDF
A1
B1
10
20
C1
30
C3
Failed
B2
A2
B2
A2
40
A5
B3
C2
RMS
0
A4
50
60
A3
70
C2
80
B3
90
A4
100
110
C3
120
A5
130
B4
140
Time (msec)
RMS es mucho más sencillo que EDF, pero EDF es menos
restrictivo: se puede elegir entre uno u otro en función del %
de uso de CPU
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Planificación de procesos en Linux 2.4.22
Cada proceso tiene una prioridad (normalmente 20) y se
utiliza el número nice para hacer: 20-nice
Cada proceso tiene también un quantum, contado en jiffies
(10ms)
Para cada proceso se calcula un valor de bondad:
Máxima para los procesos en tiempo real
Más prioridad a los procesos que no consumen su quantum
completo
Mı́nima para los que han consumido su quantum
Se elige el proceso de mayor bondad
Cuando todos los procesos listos se quedan sin quantum:
quantum = (quantum/2) + prioridad
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Linux 2.4.22 kernel/sched.c
Goodness (no-realtime)
inline int goodness( ... )
{
weight = p->counter;
if (!weight)
goto out;
#ifdef CONFIG_SMP
/* Give a largish advantage to the same processor...
*/
/* (this is equivalent to penalizing other processors) */
if (p->processor == this_cpu)
weight += PROC_CHANGE_PENALTY;
#endif
weight += 20 - p->nice;
goto out;
out:
return weight;
}
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Linux 2.4.22 kernel/sched.c
void schedule(void)
{
repeat_schedule:
/*
* Default process to select..
*/
next = idle_task(this_cpu);
c = -1000;
list_for_each(tmp, &runqueue_head) {
p = list_entry(tmp, struct task_struct, run_list);
if (can_schedule(p, this_cpu)) {
int weight = goodness(p, this_cpu, prev->active_mm);
if (weight > c)
c = weight, next = p;
}
}
/* Do we need to re-calculate counters? */
if (unlikely(!c)) {
struct task_struct *p;
for_each_task(p)
p->counter = (p->counter >> 1) +
NICE_TO_TICKS(p->nice);
goto repeat_schedule;
}
// next es el proceso a seleccionar...
}
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Planificación de procesos en multiprocesadores
Planificación de procesos de tiempo real
Gestión de procesos en Linux
Bibliografı́a
Bibliografı́a
Andrew Tanenbaum.
((Sistemas Operativos Modernos)), 2a edición, capı́tulos 7 y 8.
Prentice Hall, 2003
William Stallings.
((Sistemas Operativos)), 4a edición, capı́tulo 10.
Prentice Hall, 2001
Apuntes de la asignatura ((Sistemas de Tiempo Real)).
Juan Piernas Cánovas
Tema 3. Gestión Avanzada de Procesos
Descargar