Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Procesos e hilos
ndice
I I I I I I I I I I
SO
II II
Concepto de proceso Informacin del proceso Estados del proceso Formacin de un proceso Concepto de hilo de ejecucin Procesos en Minix Procesos en Linux Procesos en Windows NT/2000 Planificacin de procesos e hilos Servicios POSIX para gestin de procesos e hilos
Procesos e hilos
SO
II II
Procesos en Minix Estados de un proceso Implementacin del descriptor de proceso 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 Procesos en Windows NT/2000 Objetos tipo proceso e hilo Estados de un hilo Implementacin del procesos e hilos
Procesos e hilos
SO
II II
Planificacin de procesos e hilos Planificacin en Minix Planificacin en Linux Planificacin en Windows NT/2000
Procesos e hilos
SO
II II
Bibliografa
I
J. Carretero et al. Sistemas Operativos: Una Visin Aplicada. McGrawHill. 2001. Captulo 3 W. Stallings. Sistemas Operativos. Prenctice-Hall. 2001. Captulos 3, 4, 9 y 10 A.S. Tanenbaum, A.S. Woodnull. Operating Systems. Design and Implementation. Prentice-Hall International, 2a. edicin. 1996. H. Custer. Inside Windows NT. Microsoft Press. 1993.
Procesos e hilos
SO
II II
I I I I I I I I I I
Concepto de proceso Informacin del proceso Estados del proceso Formacin de un proceso Concepto de hilo de ejecucin Procesos en Minix Procesos en Linux Procesos en Windows NT/2000 Planificacin de procesos e hilos Servicios POSIX para gestin de procesos e hilos
Procesos e hilos
SO
Concepto de proceso
I
II II
Qu es un proceso?
N
Datos Cdigo PC
Procesos e hilos
SO
Concepto de proceso
I
II II
Jerarqua de procesos:
N
Algunos SO, como Unix, mantienen una estructura jerrquica entre procesos
init Inicio Shell Inicio Inicio Shell Proceso A Proceso B Proceso E Proceso F Proceso D Inicio
Dem. Impr.
Dem. Com..
Editor
Procesos e hilos
SO
Concepto de proceso
I
II II
Qu ocurre cuando el procesador est ocioso? G Se ejecuta el proceso nulo Qu hace el proceso nulo? G Ejecuta un bucle infinito que no realiza ninguna operacin til G En sistemas Unix suele tener PID=0 Objetivo: G Entretener al procesador cuando no hay ninguna otra tarea
Procesos e hilos
SO
Concepto de proceso
I
II II
Tabla NOMBRE-VALOR que se pasa al proceso en su creacin Se incluye en la pila Se establece: G Por defecto G Mediante mandatos del shell ( export) G Mediante API del SO ( putenv, getenv ) Ejemplo de entorno de un proceso en Unix:
G
SO
Concepto de proceso
I
II II
Grupos de procesos:
N
Conjunto de procesos creados por el mismo padre Conjunto de procesos creados a partir de un shell Conjunto de procesos dependientes de un terminal
Matar todos los procesos de un grupo de procesos Envo de seales a todos los procesos de un grupo de procesos
10
Procesos e hilos
SO
II II
Concepto de proceso Informacin del proceso Estados del proceso Formacin de un proceso Concepto de hilo de ejecucin Procesos en Minix Procesos en Linux Procesos en Windows NT/2000 Planificacin de procesos e hilos Servicios POSIX para gestin de procesos e hilos
I I I I I I I I I
11
Procesos e hilos
SO
II II
Imagen de memoria:
N
Contenido de los segmentos de memoria en los que reside el cdigo y los datos del proceso
12
Procesos e hilos
SO
II II
Registros generales
PC SP Estado
Mapa de Memoria
13
Procesos e hilos
SO
II II
Registros generales Contador de programa Puntero de pila Registro de estado Registros especiales
Cuando un proceso est ejecutando su estado del procesador reside en los registros del computador Cuando un proceso no se est ejecutando su estado del procesador reside en el BCP
14
Procesos e hilos
SO
II II
Mdulo fuente B
Otros objetos
SO
Imagen de memoria
I
II II
Formada por los espacios de memoria que un proceso est autorizado a utilizar La memoria del proceso la asigna el gestor de memoria del SO Si un proceso genera una direccin que esta fuera del espacio de direcciones el HW genera una interrupcin HW interna La imagen de memoria, dependiendo del computador, puede estar referida a memoria virtual o memoria fsica
I I
16
Procesos e hilos
SO
Imagen de memoria
I
II II
RIED
Memoria principal
Tamao
Disco
Pila
Tabla de pginas
Una tabla de pginas por proceso
17
Procesos e hilos
SO
II II
Informacin de identificacin:
N N N N N
PID del proceso, PID del padre ID de usuario real (uid real) ID de grupo real (gid real) ID de usuario efectivo (uid efectivo) ID de grupo efectivo (gid efectivo)
Tabla de ficheros abiertos por el proceso
I I
Informacin de planificacin y estado Descripcin de los segmentos de memoria del proceso Recursos asignados (ficheros abiertos, ...) Comunicacin entre procesos (seales, ...) Punteros para estructurar los procesos en listas o colas
18
Procesos e hilos
SO
II II
Ejemplo: Tabla de pginas Razones de eficiencia La tabla de procesos se construye como una estructura esttica, formada por un nmero de BCP del mismo tamao
La que se comparte:
G G
El BCP es de acceso restringido al proceso que lo ocupa Ejemplo: Punteros de posicin de ficheros abiertos por el proceso
19
Procesos e hilos
SO
II II
Tabla de pginas:
N N N N
Describe la imagen de memoria del proceso Tamao variable El BCP contiene el puntero a la tabla de pginas La comparticin de memoria requiere que sea externa al BCP
N N
Si se asocian a la tabla de ficheros abiertos por los procesos (en el BCP) no se pueden compartir Si se asocian al i-nod se comparten siempre Se ponen en una estructura comn a los procesos y se asigna uno nuevo en cada servicio open
20
Procesos e hilos
SO
Compartir informacin
BCP 4 Tabla de ficheros 0 23 1 4563 2 56 3 4 4 678 BCP 7 Tabla de ficheros 0 23 1 4563 2 56 3 4 4 0 BCP 23 Tabla de ficheros 0 54 1 633 2 5368 3 33 4 2
II II
fd
fd
fd
1 2 3 4
El proceso con BCP7 es hijo del proceso con BCP4 Los procesos con BCP7 y BCP4 comparten punteros a los mismos ficheros El proceso con BCP23 abre uno de los ficheros compartido por los procesos con BCP7 y BCP4 IDFF = Identificativo de fichero = Posicin puntero al fichero PP
21
Procesos e hilos
SO
Tablas del SO
I I I
II II
Tabla de procesos: Tabla con los BCP de los procesos del sistema Tabla de memoria: Informacin sobre el uso de la memoria Tabla de E/S: Informacin asociada a los perifricos y a las operaciones de E/S Tabla de ficheros: Informacin sobre los ficheros abiertos en el sistema
22
Procesos e hilos
SO
Tablas del SO
I
II II
Tabla de procesos
23
Procesos e hilos
SO
II II
UID (real user identifier): Identificativo real del usuario Usuario responsable del proceso en ejecucin EUID (effective user id.): Identificativo efectivo del usuario Se usa para: Acceder a ficheros de otros usuarios Enviar seales a procesos Ejecutar programas setuid GID (real group identifier): EGID (effective group identifier)
24
Procesos e hilos
SO
II II
Programas SETUID:
N
Cuando un proceso ejecuta un programa setuid el ncleo asigna al EUID del proceso el identificativo del propietario de dicho programa y al EGID del proceso el identificativo del grupo del propietario de dicho programa Ejemplos de programas setuid: login, mount, passwd, mkdir, etc. Cambio del bit setuid para el usuario y del bit setgid para el grupo: -r-x-x-x -r---x-x -r-x-x--chmod 4511 ( chmod u+s) chmod 4411 ( chmod u+s) chmod 2510 ( chmod g+s)
N N
-r-s--x-x
Bit setuid
-r-S--x-x -r-x-s--
Bit setgid
25
Procesos e hilos
SO
II II
Concepto de proceso Informacin del proceso Estados del proceso Formacin de un proceso Concepto de hilo de ejecucin Procesos en Minix Procesos en Linux Procesos en Windows NT/2000 Planificacin de procesos e hilos Servicios POSIX para gestin de procesos e hilos
I I I I I I I I
26
Procesos e hilos
SO
Estados de un proceso
I
II II
Cuando un proceso se ejecuta pasa por distintintos estados Diagrama de transicin entre estados:
Ejecucin
CP U
U CP
Es p
Exit
Listo
Ex p
ul si n
er a ev por en E to /S
Bloqueado
27
Procesos e hilos
SO
Estados de un proceso
I
II II
Estados suspendidos:
Ejecucin
Pla ic n if o ad
co um ns ido
Exit
po em i T
Bloqueado
Expulsado al disco
Entra al sistema
Expulsado al disco
Listo y suspendido
Fin E/S
Bloqueado y suspendido
Zona de intercambio
Procesos e hilos
28
Memoria
Es pe o ra p ev or en E to /S
SO
II II
Concepto de proceso Informacin del proceso Estados del proceso Formacin de un proceso Concepto de hilo de ejecucin Procesos en Minix Procesos en Linux Procesos en Windows NT/2000 Planificacin de procesos e hilos Servicios POSIX para gestin de procesos e hilos
I I I I I I I
29
Procesos e hilos
SO
Formacin de un proceso
II II
Mapa de memoria Ca rg a d o r
Tabla de procesos
BCP
30
Procesos e hilos
SO
II II
Concepto de proceso Informacin del proceso Estados del proceso Formacin de un proceso Concepto de hilo de ejecucin Procesos en Minix Procesos en Linux Procesos en Windows NT/2000 Planificacin de procesos e hilos Servicios POSIX para gestin de procesos e hilos
I I I I I I
31
Procesos e hilos
SO
II II
Planteamiento:
N
Varios procesos pueden cooperar para resolver una misma tarea del SO Ejecucin concurrente entre procesos Comunicacin entre procesos, por ejemplo, a travs de memoria. Un programa podra incluir varias actividades concurrentes Ejecucin concurrente dentro de un proceso.
32
Procesos e hilos
SO
II II
Qu es un hilo de ejecucin?
N N
Tambin llamado hebra, proceso ligero, flujo, subproceso o thread. Programa en ejecucin que comparte la imagen de memoria y otros recursos del proceso con otros hilos. Desde el punto de vista de programacin: Funcin cuya ejecucin se puede lanzar en paralelo con otras. Un proceso puede contener uno o ms hilos.
33
Procesos e hilos
SO
II II
Pila 1 Hilo 1 Pila2 Hilo 2 Datos Cdigo PC2 PC1 Otros recursos: -Ficheros abierto -Dispositivos E/S, etc. Proceso
34
Procesos e hilos
SO
II II
35
Procesos e hilos
SO
II II
Todos los hilos de un proceso comparten el mismo entorno de ejecucin (variables globales, espacio de direcciones, ficheros abiertos, etc.). Cada hilo tiene su propio juego de registros de CPU, pila, variables locales, etc. No existe proteccin entre hilos: un error en un hilo puede estropear la pila de otro. Para ordenar la forma en la que los hilos acceden a datos comunes hay que emplear mecanismos de sincronizacin.
36
Procesos e hilos
SO
II II
Proceso
Hilo
Sistemas Operativos II (II-UJI) Procesos e hilos
37
SO
II II
Los hilos permiten paralelizar la ejecucin de una aplicacin Mientras un hilo est bloqueado, otro podra ejecutarse
N
38
Procesos e hilos
SO
II II
Hilos trabajadores:
N
Pueden crearse a medida que se necesitan y destruirse al finalizar la tarea encomendada Pueden existir siempre y quedar libres al finalizar la tarea encomendada G Ms eficiente (evita el trabajo de crear y destruir hilos)
39
Procesos e hilos
SO
II II
40
Procesos e hilos
SO
II II
Algoritmo 1 Algoritmo 2 Mientras no haya que terminar { Mientras no haya que terminar { Esperar a que llegue una peticin Esperar trabajo Esperar trabajador libre Comprobar que la peticin es correcta } Si (los datos no estn en la cach) { Enviar resultado Realizar operacin de E/S } bloqueante sobre disco } Enviar resultado Avisar que est libre }
G G
41
Procesos e hilos
SO
Concepto de multihilo
I
II II
Un proceso Un hilo/proceso
Hilo
Ej: MS-DOS
Ej: Java
SO
Implementacin de hilos
I
II II
Dos categoras:
N N
43
Procesos e hilos
SO
II II
Gestin de hilos realizada por la aplicacin a nivel de usuario mediante una biblioteca de hilos. El ncleo no es consciente de la existencia de hilos. Es posible programar cualquier aplicacin como multihilo.
I I
Biblioteca de hilos
44
Procesos e hilos
SO
II II
No necesario acceder al ncleo para intercambio de hilos. Algoritmos de planificacin ad-hoc para cada aplicacin. Pueden ejecutarse en cualquier SO.
Una llamada al sistema realizada por un hilo bloquea a todos los hilos del proceso. Una aplicacin multihilo no puede aprovechar las ventajas del multiprocesamiento.
Ejemplo:
N
Pthreads de POSIX.
45
Procesos e hilos
SO
II II
Gestin de hilos realizada por el ncleo. Es posible programar cualquier aplicacin como multihilo.
Hilo a nivel de usuario Hilo a nivel de ncleo Modo usuario Modo supervisor P Proceso
46
Procesos e hilos
SO
II II
N I
El bloqueo de un hilo no supone (necesariamente) bloquear todo el proceso. Planificacin de mltiples hilos de un proceso en mltiples procesadores. Las funciones del ncleo pueden ser multihilo.
Ejemplos:
N
47
Procesos e hilos
SO
Aproximaciones combinadas
I
II II
Ejemplo: Solaris
N
Creacin, sincronizacin y planificacin de hilos de una aplicacin en modo usuario. Planificacin de mltiples hilos de un proceso en mltiples procesadores. El bloqueo de un hilo no supone (necesariamente) bloquear todo el proceso.
48
Procesos e hilos
SO
Aproximaciones combinadas
I
II II
Hilo a nivel de usuario Hilo a nivel de ncleo Modo usuario Modo supervisor P Proceso
Biblioteca de hilos
49
Procesos e hilos
SO
Modelos multihilo
I
II II
Relacin de:
N N N
HNU:HNN M:1
Descripcin
1:1
M:N
Solaris
50
Procesos e hilos
SO
II II
La ejecucin concurrente de hilos de un mismo proceso puede mejorar la eficiencia del sistema. G Paralelismo dentro del proceso (en multiprocesadores). G Las operaciones bloqueantes no paralizan al proceso (completo). Mayor eficiencia que con mltiples procesos en: G Creacin/eliminacin de unidades de planificacin. G Cambio de contexto. Una buena solucin para sistemas cliente/servidor. Facilidad de implementacin.
N N
51
Procesos e hilos
SO
II II
Concepto de proceso Informacin del proceso Estados del proceso Formacin de un proceso Concepto de hilo de ejecucin Procesos en Minix Estados de un proceso Implementacin del descriptor de proceso
52
Procesos e hilos
SO
Procesos en Minix
I
II II
Listo
ready
Bloqueado
ready: unready:
Pone el proceso en alguna de las colas de procesos listos del planificador Activa el proceso Elimina el proceso de las colas de procesos listos Suspende el proceso
pick_proc: Selecciona el proceso listo a ser ejecutado por la CPU Planificador sched: Pone al final de la cola el proceso de usuario en ejecucin pues ste ha agotado su quantum de CPU
53 Procesos e hilos
SO
Procesos en Minix
I
II II
Descriptor de un proceso:
EXTERN struct proc{ int p_reg[NR_REGS]; /* process registers */ int *p_sp; /* stack pointer */ struct pc_psw p_pcpsw; /* pc and psw as pushed by interrupt*/ struct mem_map p_map[NR_SEGS];/* memory map */ int *p_splimit; /* lowest legal stack value */ int p_pid; int p_flags; real_time real_time real_time real_time real_time user_time; sys_time; child_utime; child_stime; p_alarm; /* process id passed in from MM*/ /* P_SLOT_FREE, SENDING, RECEIVING, */ /* or 0 if the process is runnable */ /* /* /* /* /* user time in ticks */ sys time in ticks */ cumulative user time of children */ cumulative sys time of children */ time of next alarm in ticks, or 0 */
54
Procesos e hilos
SO
Procesos en Minix
I
II II
55
Procesos e hilos
SO
II II
Concepto de proceso Informacin del proceso Estados del proceso Formacin de un proceso Concepto de hilo de ejecucin Procesos en Minix 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
56 Procesos e hilos
SO
Procesos en Linux
I I
II II
Espera a que ocurra un cierto evento Proceso bloqueado e interrumplible: G Puede ser interrumpido por seales G Puede desbloquearle: Una interrupcin HW Liberacin de un recurso por el que esperaba Una seal Proceso bloqueado e ininterrumplible: G No acepta seales G Puede desbloquearle: Una interrupcin HW Liberacin de un recurso por el que esperaba
57 Procesos e hilos
SO
Procesos en Linux
I
II II
Descriptor de un proceso:
N
SO
Procesos en Linux
I
II II
59
Procesos e hilos
SO
Procesos en Linux
I
II II
long priority;
60
Procesos e hilos
SO
Procesos en Linux
I
II II
c p_
ptr
p_ tr pp
padre
p_p
p_pptr
ptr
hijo ms joven
p_osptr p_ysptr
hijo ms viejo
61
Procesos e hilos
SO
Procesos en Linux
I
II II
/* Manejadores de seales */
struct signal_struct { atomic_t count; struct sigaction action[NSIG];/* Funcin que modifica el tratamiento por defecto de la seal */ }; int exit_signal; /* Nmero de seal que mat al proceso */ hijos */ struct wait_queue *wait_chldexit; /* Lista de espera de finalizacin de
62
Procesos e hilos
SO
Procesos en Linux
I
II II
unsigned long it_real_value; unsigned long it_prof_value, unsigned long it_virt_value; struct timer_list real_timer;
63
Procesos e hilos
SO
Procesos en Linux
I
II II
64
Procesos e hilos
SO
Procesos en Linux
I
II II
/* /* /* /*
Nmero de procesos que comparten esta estructura */ Mscara de creacin de ficheros */ Directorio raz del proceso */ Directorio de trabajo */
struct files_struct { tomic_t count; /* Num. procs que comparten estos ficheros abiertos */ fd_set * close_on_exec; /* Ficheros a cerrar ante una llamada exec */ fd_set * open_fds; /* Mscara bits de los descriptores de fichs usados */ struct file * fd_array[NR_OPEN_DEFAULT]; /* Tabla de ficheros abiertos por el proceso*/ };
Sistemas Operativos II (II-UJI) 65 Procesos e hilos
SO
Procesos en Linux
I
II II
0 1 2 3 4 5 6
1 1 1
... ...
READ
1 /etc/passwd 2 /usr/castano
WRITE
... ...
READ
Tabla de inodos
66
Procesos e hilos
SO
Procesos en Linux
I
II II
Lista circular doblemente enlazada que comienza y finaliza con el proceso init_task (PID=0)
struct task_struct *next_run; struct task_struct *prev_run; /* Siguiente proceso de esta lista */ /* Anterior proceso de esta lista */
next_run prev_run
67
Procesos e hilos
SO
Procesos en Linux
I
II II
extern struct task_struct init_task; /* Cabeza y cola de la lista */ proceso init_task proceso A proceso B
next_task prev_task
68
Procesos e hilos
SO
Procesos en Linux
I
II II
Tabla de procesos:
N
Operaciones habituales sobre (todos los procesos de) la lista de procesos del sistema:
N
69
Procesos e hilos
SO
II II
Concepto de proceso Informacin del proceso Estados del proceso Formacin de un proceso Concepto de hilo de ejecucin Procesos en Minix Procesos en Linux Procesos en Windows NT/2000 Objetos tipo proceso e hilo Estados de un hilo Implementacin del procesos e hilos
70
Procesos e hilos
SO
II II
Los procesos NT se implementan como objetos y son accedidos mediante servicios de objetos Un proceso NT tiene asociados varios hilos que se ejecutan en su espacio de direccionamiento El gestor de procesos NT no mantiene ninguna relacin entre los procesos que crea
71
Procesos e hilos
SO
II II
PROCESO Identificativo de proceso Objeto de acceso Prioridad base Afinidad del procesador Tiempo de ejecucin Puertos de comunicacin Estado de finalizacin etc. Crear proceso Abrir proceso Pedir informacin del proceso Aadir informacin del proceso Finalizar proceso Asignar/liberar memoria virtual Leer/escribir memoria virtual etc.
72
Procesos e hilos
SO
II II
Objeto tipo proceso (cont.): Atributo ID proceso Acceso Prioridad base Descripcin Valor nico que identifica al proceso Objeto con informacin de seguridad sobre el usuario que gener el objeto Prioridad base de sus hilos
Afinidad del procesador Procesadores en los que se pueden ejecutar sus hilos Lmites de cuotas Tiempo de ejecucin Puertos comunicacin Estado de finalizacin
Sistemas Operativos II (II-UJI)
Cantidad mxima de memoria paginada y no paginada, de tiempo de ejecucin, etc. Tiempo total de ejecucin de todos sus hilos Canal de comunicacin al que enviar un mensaje si un hilo genera una excepcin Motivo de la finalizacin del proceso
Procesos e hilos
73
SO
II II
HILO Identificativo de hilo Contexto Prioridad base Prioridad dinmica Afinidad del procesador Tiempo de ejecucin Puerto de terminacin Estado de finalizacin etc. Crear hilo Abrir hilo Pedir informacin del hilo Aadir informacin del hilo Finalizar hilo Suspender/continuar hilo Guardar/cargar contexto etc.
74
Procesos e hilos
SO
II II
Objeto tipo hilo (cont.): Atributo ID hilo Contexto Prioridad dinmica Prioridad base Tiempo de ejecucin Puerto de terminacin Estado de finalizacin Descripcin Valor nico que identifica al hilo Valores de los registros y de otros datos que definen su estado de ejecucin Prioridad de ejecucin en ese instante Lmite inferior de la prioridad dinmica Tiempo de ejecucin transcurrido en modo usuario y en modo supervisor Canal de comunicacin al que enviar un mensaje cuando finaliza Motivo de la finalizacin del subproceso
75 Procesos e hilos
SO
II II
Reinicializar
Finalizado
Finalizacin
Listo
Planificador Expulsar
Bloqueado
lsar Expu
A CPU
Esperar evento
Ejecucin
Alerta
76
Procesos e hilos
SO
II II
Alerta:
Seleccionado como el siguiente hilo a ser ejecutado en un procesador dado Operacin (planificacin) previa a la invocacin de un cambio de contexto
Bloqueado: Espera a que un objeto de sincronizacin pase a una situacin de marcado ("signaled") que indique la llegada del evento de espera
77
Procesos e hilos
SO
II II
78
Procesos e hilos
SO
II II
Concepto de proceso Informacin del proceso Estados del proceso Formacin de un proceso Concepto de hilo de ejecucin Procesos en Minix Procesos en Linux Procesos en Windows NT/2000 Planificacin de procesos e hilos Planificacin en Minix Planificacin en Linux Planificacin en Windows NT/2000
79
Procesos e hilos
SO
El planificador de Minix
I
II II
Se bloquea un proceso (en ejecucin) con SEND o RECEIVE Tras cada interrupcin Tras la finalizacin del cuantum de CPU de un proceso de usuario Al finalizar un proceso
80
Procesos e hilos
SO
El planificador de Minix
I
II II
81
Procesos e hilos
SO
El planificador de Minix
I
II II
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) 82 Procesos e hilos
SO
Planificacin en POSIX
I
II II
Cada poltica de planificacin lleva asociado un rango con al menos 32 niveles de prioridad El planificador elegir el proceso o hilo con la prioridad ms alta Polticas de planificacin:
N N N
I I
83
Procesos e hilos
SO
El planificador de Linux
I
II II
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)
84
Procesos e hilos
SO
El planificador de Linux
I
II II
Poltica SCHED_OTHER:
G G G
Favorece procesos interactivos Prioridad dinmica = Prioridad_base + (Estimacin_CPU_restante / 2) Objetivo prioridad base: Dividir los procesos en bandas fijas de prioridad
85
Procesos e hilos
SO
El planificador de Linux
I
II II
Algoritmo de planificacin:
N
Algoritmo expulsivo con prioridades (selecciona el proceso con mxima prioridad) Los procesos con planificacin FIFO y RR tienen mayor prioridad Un proceso FIFO abandona la CPU cuando: G Aparece otro proceso listo con mayor prioridad G El proceso finaliza 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)
N N
86
Procesos e hilos
SO
El planificador de Linux
I
II II
Funcin de planificacin:
void schedule(void) { int c; struct task_struct * p, * prev, * next; prev = current; Deshabilitar interrupciones
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(); Habilitar interrupciones
87
Procesos e hilos
SO
El planificador de Linux
I
II II
88
Procesos e hilos
SO
El planificador de Linux
I
II II
89
Procesos e hilos
SO
El planificador de Linux
I
II II
90
Procesos e hilos
SO
II II
Prioridad de un hilo:
N N N
Dentro del rango 0..31 Depende del tipo de trabajo que est haciendo Una cola de hilos listos por cada posible nivel de prioridad
Tipos de prioridad:
N N
91
Procesos e hilos
SO
II II
N N
Prioridades ms altas (rango 31..16) Asignadas cuando el tiempo de respuesta del subproceso es crtico (operaciones de comunicaciones, tareas de tiempo real, etc.) La prioridad del hilo no cambia nunca Poltica RR para los hilos de un nivel de prioridad dado
92
Procesos e hilos
SO
II II
Prioridades variables:
N N N
Prioridades ms bajas (rango 15..0) Cola RR en cada nivel de prioridad Prioridad inicial del hilo: G Prioridad del proceso + Prioridad base del hilo (-2..+2) 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
93
Procesos e hilos
SO
II II
Prioridades variables:
N
94
Procesos e hilos
SO
II II
. . .
. . . 16
15 Prioridades variables
. . .
14 . . . . . . 0
95
Procesos e hilos
Esquema expulsivo con prioridades y colas multinivel realimentadas (selecciona el hilo con mxima prioridad de todas las colas)
NIVEL DE PRIORIDAD 31
SO
II II
Concepto de proceso Informacin del proceso Estados del proceso Formacin de un proceso Concepto de hilo de ejecucin Procesos en Minix Procesos en Linux Procesos en Windows NT/2000 Planificacin de procesos e hilos Servicios POSIX para gestin de procesos e hilos
96
Procesos e hilos
SO
II II
97
Procesos e hilos
SO
II II
Descripcin: G Inicia un objeto atributo de tipo pthread_attr_t con las propiedades que tendrn los hilos que se creen posteriormente G Los atributos permiten especificar: tamao de pila, prioridad, poltica de planificacin, etc. G Existen diversas llamadas para modificar los atributos
98
Procesos e hilos
SO
II II
Descripcin: G Destruye el objeto atributo de tipo pthread_attr_t pasado como argumento a la misma
99
Procesos e hilos
SO
II II
Sintaxis:
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
Descripcin: G Establece el estado de terminacin de un hilo: Si "detachstate" = PTHREAD_CREATE_DETACHED El hilo se considerar como independiente El hilo liberar sus recursos cuando finalice su ejecucin Si "detachstate" = PTHREAD_CREATE_JOINABLE El hilo se considerar como no independiente El hilo no liberar todos los recursos (descriptor y pila) cuando finalice su ejecucin, es necesario utilizar
pthread_join()
SO
II II
Descripcin: G Crea un hilo con atributos attr que ejecuta func con argumentos arg
101
Procesos e hilos
SO
II II
Descripcin: G Suspende la ejecucin de un hilo hasta que termina el hilo con identificador thid (no necesariamente un hilo hijo) G Deja el estado de terminacin del hilo en la posicin apuntada por value G Slo se puede solicitar este servicio sobre hilos no independientes
Identificacin de hilos:
N
Sintaxis:
pthread_t pthread_self(void);
SO
II II
Jerarqua de hilos:
Hilo 1
Hilo principal (main)
pthread_create
pthread_create
pthread_create
Hilo 4
No independiente
Hilo 3
Hilo 2
pthread_exit
pthread_join
pthread_exit
Procesos e hilos
103
SO
II II
Ejemplo 1:
#include <pthread.h> #include <stdio.h> void *hilo(void *cadena) { int i; for (i=0; i<10; i++) printf("Hilo (%d): %d %s \n",pthread_self(),i,(char *)cadena); pthread_exit(0); } int main() { char *cadena1="Hola"; char *cadena2="Adios"; pthread_t hilo1, hilo2; pthread_create(&hilo1, NULL, pthread_create(&hilo2, NULL, exit(0); }
A partir de aqu, el hilo principal, hilo1 e hilo2 se ejecutan concurrentemente. Cualquiera puede acabar 1, 2o ltimo
104
Procesos e hilos
SO
II II
Ejemplo 2:
#include <pthread.h> #include <stdio.h> int cont=0; void *hilo(void *arg) { sleep(2); cont=cont+1; printf("Hilo pthread_exit(0); } int main()
{ pthread_t hilo1, hilo2; printf("Hilo principal (%d): cont=%d \n",pthread_self(),cont); pthread_create(&hilo1, NULL, hilo, NULL); pthread_create(&hilo2, NULL, hilo, NULL); pthread_join(hilo1,NULL); /* Punto de sincronizacin con hilo1 */ /* Hilo2 sigue su marcha. Puede o no haber acabado*/ pthread_join(hilo2,NULL); /* Punto de sincronizacin con hilo2 */ printf("Hilo principal (%d): cont=%d \n",pthread_self(),cont); exit(0); }
Sistemas Operativos II (II-UJI) 105 Procesos e hilos
SO
II II
Por qu?
printf("Padre (%d): cont=%d \n",getpid(),cont); if (fork() != 0) { if (fork() != 0) { wait(&estado); wait(&estado); printf("Padre (%d): cont=%d \n",getpid(),cont); } else { /* HIJO 2 */ cont=cont+1; printf("Hijo 2 (%d): cont=%d \n",getpid(),cont); } } else { /* HIJO 1 */ cont=cont+1; printf("Hijo 1 (%d): cont=%d \n",getpid(),cont); } exit(0); }
Sistemas Operativos II (II-UJI) Procesos e hilos
106
SO
II II
Ejemplo 3:
#include #include #include #include #include <pthread.h> <stdio.h> <unistd.h> <stdlib.h> <time.h> void *fhilo2(void *arg) { int i, cont; for (i=0; i<3; i++) { cont=x-1; printf (Resta 1\n); sleep (random()%3); x=cont; } pthread_exit (NULL); }
int x=0; void *fhilo1(void *arg) { int i, cont; for (i=0; i<3; i++) { cont=x+1; printf (Suma 1\n); sleep (random()%3); x=cont; } pthread_exit (NULL); }
107
Procesos e hilos
SO
II II
Ejemplo 3 (cont.):
main() { pthread_t hilo1, hilo2; time_t t; srandom (time(&t); printf ("Valor inicial de x: %d \n",x); pthread_create(&hilo1, NULL, pthread_create(&hilo2, NULL, fhilo1, NULL); fhilo2, NULL);
Funcionamiento correcto?
108
Procesos e hilos
SO
Ejercicios
I
II II
Ejercicio 1: Realizar un algoritmo o programa en el que, dado el nmero de identificacin de un proceso, se obtenga el nmero de hijos que tiene dicho proceso y sus correspondientes nmeros de identificacin.
109
Procesos e hilos
SO
Ejercicios
I
II II
110
Procesos e hilos
SO
Ejercicios
I
II II
111
Procesos e hilos
SO
Ejercicios
I
II II
Ejercicio 2: Desarrollar un algoritmo o un programa que genere una salida similar a la del comando pstree en el sistema operativo Linux.
void pstree2 (); {struct task_struct *p; void pstree2_rec (struct task_struct *h); { hh=h->p_cptr; while (hh!=NULL) { printf (Proc padre %d. Proc hijo %d\n,h->pid,hh->pid); pstree2_rec (hh); hh=hh->p_osptr; } return (0); } p=&init_task; pstree2_rec (p); return (0); }
112
Procesos e hilos
SO
Ejercicios
I
II II
Ejercicio 3: Desarrollar un algoritmo o un programa que calcule de la forma ms eficiente posible el nmero de procesos hurfanos que hay en un sistema Linux en un instante dado.
113
Procesos e hilos
SO
Ejercicios
I
II II
Ejercicio 4: Desarrollar un algoritmo o un programa en el que, dado el nmero de identificacin de un proceso Linux, se muestre el proceso hijo preparado para ejecucin (en estado listo) que lleva ms tiempo ejecutndose, ya sea en modo usuario o supervisor.
114
Procesos e hilos
SO
Ejercicios
I
II II
Ejercicio 5: Supongamos que, en un instante dado, la lista de procesos preparados para ejecucin de un sistema operativo linux es la que aparece a continuacin y que el proceso en ejecucin es el proceso 3. Qu proceso pasara a ejecucin si se invoca al planificador de linux? Justificar la respuesta.
r er ity te t ity n n r r y u it u io rio co rior co _pr p p rt rt_
Proceso init
...
Proceso 1
...
Proceso 2
...
Proceso 3
...
Proceso 4
...
Proceso 5
...
Proceso 6
...
RR 25 25
Proceso 7
...
Proceso 8
...
...
FIFO 20 20
...
OTHER 50 75
...
RR 0 25
...
FIFO 25 25
...
RR 20 25
...
...
OTHER 20 20
...
FIFO 25 25
...
115
Procesos e hilos
SO
Ejercicios
I
II II
Ejercicio 5 (solucin):
1. El proceso 3 se mueve al final de la lista 2. La funcin goodness proporciona las siguientes prioridades a los
procesos de la lista de procesos listos: FIFO Other FIFO Proceso Weight P1 1020 P2 50 P4 1025 RR
RR P6 1025
RR P3 1025
P5 1025
116
Procesos e hilos
SO
Ejercicios
I
II II
Ejercicio 6: Qu proceso seleccionara el planificador de linux en un instante dado en el que hay dos procesos con la mxima prioridad y uno tiene asignada la poltica FIFO y otro RR? Solucin: El primero que se encuentre en la lista (ver ejemplo del ejercicio 5).
117
Procesos e hilos
SO
Ejercicios
I
II II
Ejercicio 8: En qu variara la poltica de planificacin de procesos de linux si en la funcin schedule se sustituye la lnea if (weight > c) por lo siguiente: if (weight >= c)? Solucin: En este caso, ante varios procesos con mxima prioridad se seleccionara el ltimo de ellos que est en la lista de procesos listos del sistema. Consecuentemente, si estos procesos con la mxima prioridad tuviesen asignada una poltica de planificacin FIFO, dejara que cumplirse dicha poltica. Y lo mismo ocurrira con la poltica de planificacin RR.
118
Procesos e hilos
SO
Ejercicios
I
II II
Ejercicio 9: Explicar cmo se cumple la poltica FIFO en el planificador de procesos de linux cuando varios procesos con este tipo de poltica tienen la mxima prioridad.
119
Procesos e hilos
SO
Ejercicios
I
II II
Tras el bucle while c=1050 y next apunta al proceso P1. Si no apareciesen ms procesos listos, cuando acabe la ejecucin del proceso P1 el planificador seleccionar al siguiente proceso de la lista ms prioritario, esto es, P3, que entr despus de P1 en la lista. Si no hubiesen aparecido ms procesos listos, cuando P3 finalice el proceso ms prioritario sera P8, que haba entrado en la lista tras P1 y P3. Resumiendo, los tres procesos FIFO con la prioridad mxima se ejecutan en el orden en que entraron en la lista.
Sistemas Operativos II (II-UJI) 120 Procesos e hilos
SO
Ejercicios
I
II II
imprimir, &num);
121
Procesos e hilos