Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Traspas Tema 2
Traspas Tema 2
Procesos e hilos
1
S S
O O
II II
II II
Tema 2. Procesos e hilos
ndice
I Concepto de proceso
I Informacin del proceso
I Estados del proceso
I Formacin de un proceso
I Concepto de hilo de ejecucin
I Procesos en Minix
I Procesos en Linux
I Procesos en Windows NT/2000
I Planificacin de procesos e hilos
I Servicios POSIX para gestin de procesos e hilos
Sistemas Operativos II (II-UJI)
Procesos e hilos
2
S S
O O
II II
II II
Tema 2. Procesos e hilos
ndice
I Procesos en Minix
Estados de un proceso
Implementacin del descriptor de proceso
I Procesos en Linux
Estados de un proceso
Implementacin del descriptor de proceso
Implementacin de la tabla de procesos
Implementacin de la lista de procesos preparados
I Procesos en Windows NT/2000
Objetos tipo proceso e hilo
Estados de un hilo
Implementacin del procesos e hilos
Sistemas Operativos II (II-UJI)
Procesos e hilos
3
S S
O O
II II
II II
Tema 2. Procesos e hilos
ndice
I Planificacin de procesos e hilos
Planificacin en Minix
Planificacin en Linux
Planificacin en Windows NT/2000
Sistemas Operativos II (II-UJI)
Procesos e hilos
4
S S
O O
II II
II II
Bibliografa
I J. Carretero et al. Sistemas Operativos: Una Visin Aplicada. McGraw-
Hill. 2001. Captulo 3
I W. Stallings. Sistemas Operativos. Prenctice-Hall. 2001. Captulos 3, 4,
9 y 10
I A.S. Tanenbaum, A.S. Woodnull. Operating Systems. Design and
Implementation. Prentice-Hall International, 2a. edicin. 1996.
I H. Custer. Inside Windows NT. Microsoft Press. 1993.
Tema 2. Procesos e hilos
Sistemas Operativos II (II-UJI)
Procesos e hilos
5
S S
O O
II II
II II
Tema 2. Procesos e hilos
ndice
I Concepto de proceso
I Informacin del proceso
I Estados del proceso
I Formacin de un proceso
I Concepto de hilo de ejecucin
I Procesos en Minix
I Procesos en Linux
I Procesos en Windows NT/2000
I Planificacin de procesos e hilos
I Servicios POSIX para gestin de procesos e hilos
n
C
P
U
Sistemas Operativos II (II-UJI)
Procesos e hilos
28
S S
O O
II II
II II
Estados de un proceso
I Estados suspendidos:
Ejecucin
Listo y
suspendido
Listo
Bloqueado y
suspendido
Bloqueado
P
la
n
i
fi
c
a
d
o
T
i
e
m
p
o
c
o
n
s
u
m
id
o
Fin E/S o llegada evento
Exit
Fin E/S
E
x
p
u
l
s
a
d
o
a
l
d
i
s
c
o
E
x
p
u
l
s
a
d
o
a
l
d
i
s
c
o
R
e
c
u
p
e
r
a
d
o
d
e
l
d
i
s
c
o
Entra al
sistema
M
e
m
o
r
i
a
Procesos por lotes
en espera
E
s
p
e
r
a
p
o
r
E
/
S
o
e
v
e
n
t
o
Z
o
n
a
d
e
i
n
t
e
r
c
a
m
b
i
o
Sistemas Operativos II (II-UJI)
Procesos e hilos
29
S S
O O
II II
II II
Tema 2. Procesos e hilos
ndice
I Concepto de proceso
I Informacin del proceso
I Estados del proceso
I Formacin de un proceso
I Concepto de hilo de ejecucin
I Procesos en Minix
I Procesos en Linux
I Procesos en Windows NT/2000
I Planificacin de procesos e hilos
I Servicios POSIX para gestin de procesos e hilos
Planificacin en Minix
Planificacin en Linux
Planificacin en Windows NT/2000
Sistemas Operativos II (II-UJI)
Procesos e hilos
80
S S
O O
II II
II II
El planificador de Minix
I Sistema de colas multinivel (sin realimentacin) con prioridades expulsivas
I Se invoca al planificador (rutina pick_proc) cuando:
N Se bloquea un proceso (en ejecucin) con SEND o RECEIVE
N Tras cada interrupcin
N Tras la finalizacin del cuantum de CPU de un proceso de usuario
N Al finalizar un proceso
FCFS TAREAS
FCFS
PROCESOS
SERVIDOR
RR
PROCESOS
USUARIO
-
+
PRIORIDAD
Sistemas Operativos II (II-UJI)
Procesos e hilos
81
S S
O O
II II
II II
El planificador de Minix
FCFS TAREAS
FCFS
PROCESOS
SERVIDOR
RR
PROCESOS
USUARIO
-
+
PRIORIDAD
rdy_head[TASK_Q]
rdy_head[SERVER_Q]
rdy_head[USER_Q]
I Implementacin del planificador:
Sistemas Operativos II (II-UJI)
Procesos e hilos
82
S S
O O
II II
II II
El planificador de Minix
I Implementacin del planificador (cont.):
PUBLIC pick_proc ()
{ register int q;/* Cola a usar: */
/* - Cola de tareas: TASK_Q */
/* - Cola de procesos servidor: SERVER_Q */
/* - Cola de procesos de usuario: USER_Q */
if (rdy_head [TASK_Q] != NIL_PROC) q = TASK_Q;
else if (rdy_head [SERVER_Q] != NIL_PROC) q = SERVER_Q;
else q = USER_Q;
prev_proc = cur_proc;
if (rdy_head [q] != NIL_PROC)
{ cur_proc = rdy_head [q]; /* Someone is runable */
} else{
cur_proc = IDLE; /* No one id runable */
}
}
Sistemas Operativos II (II-UJI)
Procesos e hilos
83
S S
O O
II II
II II
Planificacin en POSIX
I Cada poltica de planificacin lleva asociado un rango con al menos 32
niveles de prioridad
I El planificador elegir el proceso o hilo con la prioridad ms alta
I Polticas de planificacin:
N FIFO (FCFS)
N Round Robin (RR)
N Otra
Sistemas Operativos II (II-UJI)
Procesos e hilos
84
S S
O O
II II
II II
El planificador de Linux
I Prioridad y algoritmo de planificacin de un proceso de Linux:
N Todo proceso del sistema tiene asociadas
G una prioridad
G una poltica de planificacin, que puede ser:
FIFO (
SCHED_FIFO
)
RR (
SCHED_RR
)
Otra (
SCHED_OTHER
)
N Se asigna poltica de planificacin FIFO y RR a los procesos en tiempo
real (procesos que tienen que reaccionar muy rpidamente a sucesos
externos)
Sistemas Operativos II (II-UJI)
Procesos e hilos
85
S S
O O
II II
II II
El planificador de Linux
I Prioridad y algoritmo de planificacin de un proceso de Linux (cont.):
N Poltica
SCHED_OTHER
:
G Favorece procesos interactivos
G Prioridad dinmica = Prioridad_base + (Estimacin_CPU_restante / 2)
G Objetivo prioridad base: Dividir los procesos en bandas fijas de
prioridad
Sistemas Operativos II (II-UJI)
Procesos e hilos
86
S S
O O
II II
II II
El planificador de Linux
I Algoritmo de planificacin:
N Algoritmo expulsivo con prioridades (selecciona el proceso con mxima
prioridad)
N Los procesos con planificacin FIFO y RR tienen mayor prioridad
N Un proceso FIFO abandona la CPU cuando:
G Aparece otro proceso listo con mayor prioridad
G El proceso finaliza
N Un proceso RR abandona la CPU cuando:
G Aparece otro proceso listo con mayor prioridad
G El proceso finaliza
G Acaba su quantum de CPU y otro proceso tiene igual prioridad (y es
la mxima)
Sistemas Operativos II (II-UJI)
Procesos e hilos
87
S S
O O
II II
II II
El planificador de Linux
I Funcin de planificacin:
void
schedule
(void)
{
int c;
struct task_struct * p, * prev, * next;
prev = current;
cli();
/* move an exhausted RR process to be last */
if (!prev->counter && prev->policy == SCHED_RR) {
prev->counter = prev->priority;
move_last_runqueue(prev);
}
p = init_task.next_run;
sti();
Deshabilitar interrupciones
Habilitar interrupciones
Sistemas Operativos II (II-UJI)
Procesos e hilos
88
S S
O O
II II
II II
El planificador de Linux
I Funcin de planificacin (cont.):
/* this is the scheduler proper: */
c = -1000;
next = idle_task;
while (p != &init_task) {
int weight = goodness(p, prev, this_cpu);
if (weight > c)
c = weight, next = p;
p = p->next_run;
}
/* if all runnable processes have "counter == 0",
re-calculate counters */
if (!c) { for_each_task(p)
p->counter = (p->counter >> 1) + p->priority;
}
if (prev != next) { switch_to(prev,next); }
return;
}
Cambio de proceso
Sistemas Operativos II (II-UJI)
Procesos e hilos
89
S S
O O
II II
II II
El planificador de Linux
I Funcin de planificacin (cont.):
/* This is the function that decides how desirable a process is
* Return values:
* -1000: never select this
* 0: out of time, recalculate counters
* +ve: "goodness" value (the larger, the better)
* +1000: realtime process, select this.
*/
int
goodness
(struct task_struct * p,
struct task_struct * prev)
{ int weight;
...
if (p->policy != SCHED_OTHER)
return 1000 + p->rt_priority;
Sistemas Operativos II (II-UJI)
Procesos e hilos
90
S S
O O
II II
II II
El planificador de Linux
I Funcin de planificacin (cont.):
/* Give the process a first-approximation goodness value
* according to the number of clock-ticks it has left.
* Don't do any other calculations if the time slice is over */
weight = p->counter;
if (weight) {
/* Give a slight advantage to the current process */
if (p == prev)
weight += 1;
}
return weight;
}
Sistemas Operativos II (II-UJI)
Procesos e hilos
91
S S
O O
II II
II II
El planificador de Windows NT/2000
I Prioridad de un hilo:
N Dentro del rango 0..31
N Depende del tipo de trabajo que est haciendo
N Una cola de hilos listos por cada posible nivel de prioridad
I Tipos de prioridad:
N Prioridades en tiempo real
N Prioridades variables
Sistemas Operativos II (II-UJI)
Procesos e hilos
92
S S
O O
II II
II II
El planificador de Windows NT/2000
I Prioridades en tiempo real:
N Prioridades ms altas (rango 31..16)
N Asignadas cuando el tiempo de respuesta del subproceso es crtico
(operaciones de comunicaciones, tareas de tiempo real, etc.)
N La prioridad del hilo no cambia nunca
N Poltica RR para los hilos de un nivel de prioridad dado
Sistemas Operativos II (II-UJI)
Procesos e hilos
93
S S
O O
II II
II II
El planificador de Windows NT/2000
I Prioridades variables:
N Prioridades ms bajas (rango 15..0)
N Cola RR en cada nivel de prioridad
N Prioridad inicial del hilo:
G Prioridad del proceso + Prioridad base del hilo (-2..+2)
N La prioridad del hilo puede variar durante su vida
G No puede ser superior a 15
G No puede ser inferior a la prioridad inicial
G El ncleo baja la prioridad (dinmica) de un hilo cada vez que finaliza
su quantum de CPU asignado
G La prioridad (dinmica) de un hilo aumenta tras una operacin de E/S
Los hilos interactivos tienden a prioridades ms altas dentro de la clase
de prioridad variable
Sistemas Operativos II (II-UJI)
Procesos e hilos
94
S S
O O
II II
II II
El planificador de Windows NT/2000
I Prioridades variables:
N Ejemplo de relacin entre prioridades
menor
debajo normal
normal
encima normal
mayor
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Prioridad
base del
proceso
Prioridad
inicial del
hilo
Prioridad
dinmica
del hilo
+2
+1
-1
-2
0
Sistemas Operativos II (II-UJI)
Procesos e hilos
95
S S
O O
II II
II II
El planificador de Windows NT/2000
I Algoritmo de planificacin de hilos:
N Esquema expulsivo con prioridades
y colas multinivel realimentadas
(selecciona el hilo con mxima
prioridad de todas las colas)
NIVEL DE
PRIORIDAD
31
.
.
.
.
.
.
.
.
.
16
15
14
0
.
.
.
.
.
.
P
r
i
o
r
i
d
a
d
e
s
e
n
t
i
e
m
p
o
r
e
a
l
P
r
i
o
r
i
d
a
d
e
s
v
a
r
i
a
b
l
e
s
Sistemas Operativos II (II-UJI)
Procesos e hilos
96
S S
O O
II II
II II
Tema 2. Procesos e hilos
ndice
I Concepto de proceso
I Informacin del proceso
I Estados del proceso
I Formacin de un proceso
I Concepto de hilo de ejecucin
I Procesos en Minix
I Procesos en Linux
I Procesos en Windows NT/2000
I Planificacin de procesos e hilos
I Servicios POSIX para gestin de procesos e hilos