gestion de procesos
DESCRIPTION
La manera mas sencilla de explicar los procesos en Gnu/LinuxTRANSCRIPT
-
15/12/2009
1
TemaTema 4: Gestin de 4: Gestin de procesosprocesos
ProcesosProcesos
CaptuloCaptulo 4: Gestin de 4: Gestin de procesosprocesos
ProcesosProcesosProcesos ligeros (Procesos ligeros (threadsthreads))Polticas y algoritmos de planificacinPolticas y algoritmos de planificacinSeales y excepcionesSeales y excepcionesTemporizadoresTemporizadoresServidores y demoniosServidores y demoniosServicios POSIXServicios POSIXServicios POSIXServicios POSIX
-
15/12/2009
2
Concepto de ProcesoConcepto de Proceso
ProcesosProcesos
ppMultitareaMultitareaInformacin del proceso (BCP)Informacin del proceso (BCP)Creacin de procesosCreacin de procesosTerminacin de procesosTerminacin de procesosEstados de los procesosEstados de los procesosCambio de contextoCambio de contextoPlanificacinPlanificacin
Concepto de proceso IConcepto de proceso I
PROGRAMA: PROGRAMA: Archivo ejecutable en un dispositivo de Archivo ejecutable en un dispositivo de almacenamiento permanente (ej. disco)almacenamiento permanente (ej. disco)
PROCESO: PROCESO: Un programa en ejecucin, reside en MP y Un programa en ejecucin, reside en MP y segn se ejecuta modifica su contextosegn se ejecuta modifica su contexto
Desde el punto de vista del usuario:Desde el punto de vista del usuario:cdigo + estructuras de datoscdigo + estructuras de datosEl sistema operativo le asigna recursos y controla su ejecucinEl sistema operativo le asigna recursos y controla su ejecucin
Desde el punto de vista del sistema operativo:Desde el punto de vista del sistema operativo:Tcnicas de multiplexado (planificacin)Tcnicas de multiplexado (planificacin)Caracterizacin de un proceso: tabla o bloque de control deCaracterizacin de un proceso: tabla o bloque de control deprocesos (BCP). En Linux: procesos (BCP). En Linux: task_structtask_structCada proceso posee un espacio de direccionamiento virtualCada proceso posee un espacio de direccionamiento virtualIndependienteIndependiente
-
15/12/2009
3
Jerarqua de procesosJerarqua de procesosrbol tpico de procesos en rbol tpico de procesos en SolarisSolarisJerarqua de procesos
Proceso hijoProceso padreProceso padreProceso hermanoProceso abuelo
Vida de un procesoCreaEjecutaMuere o termina
Ejecucin del procesoBatchInteractivo
Grupo de procesos
Entorno del procesoEntorno del proceso
Tabla NOMBRETabla NOMBRE--VALOR que se pasa al proceso en su creacin VALOR que se pasa al proceso en su creacin Se incluye en la pilaSe incluye en la pila
Se establece:Se establece:Por defecto (se copia la del padre)Por defecto (se copia la del padre)Mediante mandatos del Mediante mandatos del shellshell ((exportexport))Mediante API del SO (Mediante API del SO (putenvputenv, , getenvgetenv))
Ejemplo:Ejemplo:PATH=/PATH=/usrusr//binbin:/home/pepe/:/home/pepe/binbinTERM=vt100TERM=vt100HOME=/home/pepeHOME=/home/pepePWD=/home/pepe/libros/primeroPWD=/home/pepe/libros/primeroTIMEZONE=METTIMEZONE=MET
-
15/12/2009
4
ConceptosConceptosUsuario: Persona autorizada a utilizar un sistemaUsuario: Persona autorizada a utilizar un sistema
Se identifica en la autenticacin mediante:Se identifica en la autenticacin mediante:Cdigo de cuentaCdigo de cuentaCl (Cl ( dd))Clave (Clave (passwordpassword))
Internamente el SO le asigna el Internamente el SO le asigna el uiduid ( (useruser identificationidentification))
SuperSuper--usuariousuarioTiene todos los derechosTiene todos los derechosAdministra el sistemaAdministra el sistema
Grupo de usuariosGrupo de usuariosLos usuarios se organizan en gruposLos usuarios se organizan en grupos
AlumnosAlumnosProfesoresProfesores
Todo usuario ha de pertenecer a un grupoTodo usuario ha de pertenecer a un grupo
Bases de la MultiprogramacinBases de la Multiprogramacin
Paralelismo real entre E/S y UCP (DMA)Alternancia en los procesos de fases de E/S y de procesamientoLa memoria almacena varios procesosLa memoria almacena varios procesos
Procesamiento
Entrada/salidaTiempo
-
15/12/2009
5
Ejemplo de ejecucin en un sistema Ejemplo de ejecucin en un sistema multitarea. Proceso nulomultitarea. Proceso nulo
Proceso A
ProcesamientoEntrada/salidaListoSOProceso nulo
Tiempo
Proceso B
Proceso C
Procesador
Estados de los procesos: Estados de los procesos: ejecucin, bloqueado, listo
ConceptosConceptosMultitarea:Multitarea: varios procesos activos a la vezMultiusuario:Multiusuario: soporta varios usuarios en varias terminalespTiempo compartido: Tiempo compartido: reparto equitativo del tiempo de CPU entre varios usuariosPlanificadorPlanificador (sheduler): seleciona el siguiente proceso a ejecutarActivadorActivador (dispacher): Prepara la ejecucin del proceso planificado -> cambio de contextoplanificado -> cambio de contextoGrado de multiprogramacin: Grado de multiprogramacin: n de procesos activos
Con BCP vigenteNecesidades de memoria principal: Memoria virtual
-
15/12/2009
6
Ventajas de la multitareaVentajas de la multitareaFacilita la programacin, dividiendo los programas en procesos (modularidad)
Permite el servicio interactivo simultneo de varios usuarios de forma eficiente
Aprovecha los tiempos que los procesos pasan esperando a que se completen sus operaciones de E/Sa que se completen sus operaciones de E/S
Aumenta el uso de la CPU
Concepto de proceso IIConcepto de proceso IIINFORMACIN DEL PROCESO (BCP):INFORMACIN DEL PROCESO (BCP):
Imagen de memoria (Imagen de memoria (corecore imageimage))
Estado del procesador Estado del procesador (registros del modelo de programacin)(registros del modelo de programacin)
Bloque de control del proceso BCPBloque de control del proceso BCP Estado actual del procesoEstado actual del procesoIdentificacin Identificacin pidpid, , ppidppidUidUid,, gidgid.. euid,egideuid,egidUidUid, , gidgid. . euid,egideuid,egidPrioridad del procesoPrioridad del procesoRegistros de procesador cuando el proceso no est en ejecucinRegistros de procesador cuando el proceso no est en ejecucinPuntero a la zona de memoria: Segmentos de memoriaPuntero a la zona de memoria: Segmentos de memoriaRecursos asignados: Ficheros abiertos, Temporizadores, Seales, Recursos asignados: Ficheros abiertos, Temporizadores, Seales, Semforos, PuertosSemforos, PuertosUn puntero al siguiente BCPUn puntero al siguiente BCP
-
15/12/2009
7
Memoria de un procesoMemoria de un proceso
Contexto de usuario
Contexto del nucleo
PilaPilaFFFFFFFF
HeapHeap
Registrosgenerales
Registrosespeciales
TextoTexto
DatosDatos
00000000
HeapHeapPC
SP
Estado
ProcessProcess Control Block (PCB)Control Block (PCB)
Planificacin y estadoPlanificacin y estado
Id de proceso y padreId de proceso y padrep y pp y p
uid,guiduid,guid, , euideuid, , egidegid
registros CPUregistros CPU
descripcin de la memoriadescripcin de la memoria
recursos asignadosrecursos asignados
puntero de pilapuntero de pila
recursos asignadosrecursos asignados
punteros para formar listaspunteros para formar listas
seales, mensajes, seales, mensajes,
-
15/12/2009
8
El SO mantiene estructuras de El SO mantiene estructuras de datos asociadas a los procesosdatos asociadas a los procesos
Mapa de memoriadel Proceso A
Tablas SO
Mapa de memoriadel Proceso B
Mapa de memoriadel Proceso C
Tablas del sistema operativoTabla de procesos
BCP Proceso BBCP Proceso A BCP Proceso C- Estado (registros)- Estado (registros) - Estado (registros)
Mapa deMemoria
- Tabla de memoria- Tabla de E/S: drivers de bloques, de caracteres- Tabla de ficheros, de montajes
- Identificacin- Control
- Identificacin- Control
- Identificacin- Control
Tablas del sistema operativoTablas del sistema operativo
Tabla de procesos (tabla de BCP)
Tabla de memoria: informacin sobre el uso de la memoria.
Tabla de E/S: guarda informacin asociada a los perifricos y a las operaciones de E/S
Tabla de fichero: informacin sobre los ficheros abiertos.
C i i i l i i f i l BCPCriterios para incluir o no una informacin en el BCP: Eficiencia Comparticin
-
15/12/2009
9
Informacin fuera del BCPInformacin fuera del BCP
Se considera del BCP
Por eficienciaPor eficiencia: Tabla de pginasp gDescribe la imagen de memoria del proceso en sistemas con MVTamao variable -> El BCP contiene el puntero a la tabla de pginas(La comparticin de memoria requiere que sea externa al BCP)
Por comparticin: Por comparticin: Punteros de posicin de los ficherosEn la tabla de ficheros abiertos del BCP no se pueden compartirSi se asocian al nodo-i se comparte siempreSe ponen en una estructura comn a los procesos y se asigna uno nuevo en cada servicio OPEN
Memoria Virtual de un proceso Memoria Virtual de un proceso
Memoriai t l
Memoriaprincipal
RIED
virtual
Disco
Tabla depginas
Una tabla de i
Cdigo
Datos
Pila
Tamao
pginas por proceso
Preasignacin de zona de intercambio: Todas las pginas estn en disco, algunas estn copiadas en marcos de pgina.
La informacin de traduccin est en la tabla de pginas
-
15/12/2009
10
Creacin de procesos ICreacin de procesos I
Mapa dememoria Tabla de procesos
Objetoejecutable
Bibliotecasistema
memoria
Imagendel proceso
Tabla de procesos
BCP
Car
gado
r
Creacin de procesos IICreacin de procesos II
El proceso padre crea un proceso, que a su vez, crea El proceso padre crea un proceso, que a su vez, crea otros procesos, formando un rbol de procesosotros procesos, formando un rbol de procesos
EsquemasEsquemas de de comparticincomparticin de de recursosrecursos::A.A. El padre y el El padre y el hijohijo compartencomparten todostodos los los recursosrecursosB.B. El El hijohijo compartecomparte unsubconjuntounsubconjunto de los de los recursosrecursos
del padredel padreC.C. El padre y el El padre y el hijohijo no no compartencomparten recursosrecursos
EjecucinEjecucinjj El El hijohijo compartecomparte un un subconjuntosubconjunto de los de los recursosrecursos
del padredel padre El padre El padre esperaespera hastahasta queque el el hijohijo terminetermine
-
15/12/2009
11
EspacioEspacio de de direccionesdirecciones
ElEl hijohijo hacehace unauna rplicarplica del padredel padre
Creacin de procesos IIICreacin de procesos III
El El hijohijo hacehace unauna rplicarplica del padredel padre El El hijohijo cargacarga un un programaprograma en en susu espacioespacio de de
direccionesdirecciones
EjemposEjempos UNIXUNIX
La La lamadalamada al al sistemasistema forkfork creacrea un un procesoproceso nuevonuevo La La lamadalamada al al sistemasistema execexec, , despusdespus de de forkfork, ,
reemplazareemplaza el el espacioespacio de de direccionesdirecciones del del procesoprocesocon un con un nuevonuevo cdigocdigo de de programaprograma
Terminacin de procesosTerminacin de procesos
El proceso ejecuta la ltima sentencia y pide al SOEl proceso ejecuta la ltima sentencia y pide al SOSu eliminacin (Su eliminacin (exitexit):):
DevuelveDevuelve lala salidasalida desdedesde elel hijohijo al padre (viaal padre (via waitwait))DevuelveDevuelve la la salidasalida desdedesde el el hijohijo al padre (via al padre (via waitwait)) LiberaLibera los los recursosrecursos asignadosasignados
El padre El padre puedepuede abortarabortar la la ejecucinejecucin del del hijohijo:: El El hijohijo excedeexcede sussus recursosrecursos La La tareatarea asignadaasignada al al hijohijo yaya no se no se necesitanecesita CuandoCuando el padre el padre terminatermina
AlgunosAlgunos SSOO no SSOO no permitenpermiten continuarcontinuar al al hijohijocuandocuando el padre ha el padre ha terminadoterminado
TodosTodos los los hijoshijos terminanterminan en en cascadacascada
-
15/12/2009
12
RealcinRealcin padrepadre--hijo en procesoshijo en procesos
padrepadre
hijohijo
reanudareanudaFork()Fork()
Exec()Exec() Exit()Exit()
Wait()Wait()
Estados de los procesos IEstados de los procesos I
Cuando un proceso se ejecuta, cambia su estado:Cuando un proceso se ejecuta, cambia su estado:
EjecucinEjecucin: : Se Se ejecutanejecutan laslas instrucionesinstruciones del del cdigocdigo del del procesoproceso
BloqueadoBloqueado: : El El procesoproceso esperaespera la la ocurrenciaocurrencia de un de un eventoevento
ListoListo: : El El procesoproceso esperaespera queque se le se le asigneasigne tiempotiempo de CPU de CPU paraparaejecutarseejecutarse
Zombie: Zombie: El El procesoproceso ha ha terminadoterminado susu ejecucinejecucin pero an tiene pero an tiene una entrada en la tabla de procesos una entrada en la tabla de procesos (UNIX)(UNIX)
-
15/12/2009
13
Estados de los procesos IIEstados de los procesos II
Diagrama de estados de los procesos:Diagrama de estados de los procesos:
se interrumpese interrumpeterminatermina
ListoListo EjecucinEjecucin
ZombieZombie
Espera E/S Espera E/S o un evento o un evento
se planificase planificaTermina la E/S Termina la E/S
o elevento o elevento
BloqueadoBloqueado
Cambio de contexto ICambio de contexto I
-
15/12/2009
14
Cambio de contexto IICambio de contexto IISe produce por una interrupcin.
Cambio de contexto es el conjunto de dos operaciones:Se pasa a ejecutar la rutina de tratamiento de interrupcinp j pSe salva el estado del procesador en el correspondiente BCP
Planificador: decide el siguiente proceso a ejecutar.Activador: pone a ejecutar un proceso.
Copia el estado del BCP a los registros
Termina con una instruccin RETI (retorno de interrupcin)R tit l i t d t d (bit d i l d j i )Restituye el registro de estado (bit de nivel de ejecucin)Restituye el contador de programa (para el nuevo proceso).
El El tiempotiempo de de cambiocambio de de contextocontexto suponesupone unauna sobrecargasobrecarga; el ; el sistemasistema no no realizarealiza trabajotrabajo tiltil durantedurante esteeste tiempotiempo
El El tiempotiempo de de cambiocambio de de contextocontexto dependedepende del del soportesoporte hardwarehardware
Cambio de contexto IIICambio de contexto III
Registrosespeciales
PC
SP
Registrosgenerales
especialesTabla de procesos
Est
ado BCP Proceso BBCP Proceso A BCP Proceso N
Informacin deControl
Informacin deControl
Informacin deControl
Informacin deidentificacin
Informacin deidentificacin
Informacin deidentificacin
Estado(registros)
Estado(registros)
Estado(registros)
SP
Estado
Control Control Control
-
15/12/2009
15
Planificacin de procesos IPlanificacin de procesos I
C lC l t b jt b j (j b)(j b) tt t dt d ll d ld l
Los procesos migran entre varias colas:Los procesos migran entre varias colas:
Cola Cola trabajostrabajos (job):(job): soportasoporta todostodos los los procesosprocesos del del sistemasistema
Cola Cola ListosListos ((ready)ready): : soportasoporta todostodos los los procesosprocesos quequeresidenresiden en en memoriamemoria, , preparadospreparados parapara ser ser ejecutadosejecutados
Colas Colas BloqueadosBloqueados: : soportan los procesos que esperan soportan los procesos que esperan por un dispositivo de E/Spor un dispositivo de E/Sp pp p
Planificacin de procesos Planificacin de procesos II:II:Colas de listos y bloqueadosColas de listos y bloqueados
-
15/12/2009
16
Planificacin de procesos IIIPlanificacin de procesos III
Llamadas al sistema ILlamadas al sistema Ipidpid = = forkfork()()Crea un proceso idntico al padreCrea un proceso idntico al padre
int execl(const char *path, const char *arg, ...)int execlp(const char *file const char *arg )int execlp(const char *file, const char *arg, ...)int execvp(const char *file, char *const argv[])Reemplaza la imagen del proceso (Reemplaza la imagen del proceso (cdigo+entornocdigo+entorno))
exitexit(status)(status)Termina la ejecucin del proceso y devuelve el estadoTermina la ejecucin del proceso y devuelve el estado
pidpid = = waitpidwaitpid((pidpid, &, &statlocstatloc, , optionsoptions))E l t i i d hijE l t i i d hijEspera la terminacin de un hijoEspera la terminacin de un hijo
pid_tpid_t getpidgetpid((voidvoid))Devuelve el identificador del proceso.Devuelve el identificador del proceso.
pid_tpid_t getppidgetppid((voidvoid))Devuelve el identificador del proceso padre.Devuelve el identificador del proceso padre.
-
15/12/2009
17
Llamadas al sistema. Llamadas al sistema. ForkFork##includeinclude pidpid = = forkfork((voidvoid))Crea un proceso idntico al padreCrea un proceso idntico al padre
Devuelve:Devuelve: El identificador de proceso hijo al proceso padre y 0 al hijo -1 el caso de error
Descripcin : Crea un proceso hijo que ejecuta el mismo programa que el padre Hereda los ficheros abiertos (se copian los descriptores). Las alarmas pendientes se desactivan.
Llamadas al sistema. Llamadas al sistema. ForkFork
Mapa dememoria
Imagen delproceso A Tabla de procesos
BCPA
Mapa dememoria
El proceso A hace un fork y crea el proceso hijo B
Imagen delproceso B
Tabla de procesos
BCPA
BCPB
memoria
Imagen delproceso A
Nuevo PIDNueva descripcin de memoriaDistinto valor de retorno (0 en el hijo)
-
15/12/2009
18
Llamadas al Llamadas al sistema.Execsistema.Execint execl(const char *path, const char *arg, ...)int execlp(const char *file, const char *arg, ...)int execvp(const char *file, char *const argv[])Reemplaza la imagen del proceso (Reemplaza la imagen del proceso (cdigo+entornocdigo+entorno))Reemplaza la imagen del proceso (Reemplaza la imagen del proceso (cdigo entornocdigo entorno))
Argumentos:path, file: nombre del archivo ejecutablearg: argumentos
Descripcin:Devuelve -1 en caso de error, en caso contrario no retorna.Cambia la imagen de memoria del proceso.El mismo proceso ejecuta otro programa.Los ficheros abiertos permanecen abiertosLos ficheros abiertos permanecen abiertosLas seales con la accin por defecto seguirn por defecto,las seales con manejador tomarn la accin por defecto.
Llamadas al Llamadas al sistema.Execsistema.Exec
Mapa dememoria
ITabla de procesos
El hImagendel proceso BCP
Mapa dememoria
Tabla de procesos
BCP
El proceso hace un exec
Se borra la imagen de memoriaSe borra la descripcin de la memoria y registrosSe conserva el PID
Objetoejecutable
Bibliotecasistema
Mapa dememoria
Imagendel proceso
Car
gado
r
Tabla de procesos
BCP
Se carga la nueva imagenSe pone PC en direccin de arranqueSe conservan los fd
-
15/12/2009
19
Llamadas al sistema. Llamadas al sistema. ExitExit y y WaitWaitintint exitexit((intint status)status)
Argumentos: Cdigo de retorno al proceso padre
Descripcin:Descripcin: Finaliza la ejecucin del proceso. Se cierran todos los descriptores de ficheros abiertos.Se liberan todos los recursos del proceso
pidpid = = waitpidwaitpid((pidpid, &, &statlocstatloc, , optionsoptions))Espera la terminacin de un hijoEspera la terminacin de un hijo
Argumentos:g Devuelve el cdigo de terminacin del proceso hijo.
Descripcin: Devuelve el identificador del proceso hijo o -1 en caso de error. Permite a un proceso padre esperar hasta que termine un proceso hijo.
Devuelve el identificador del proceso hijo y el estado de terminacin del mismo.
Llamadas al sistema. Llamadas al sistema. ExitExit y y WaitWait IIEl padre muere: INIT acepta los hijos
exit()
Init
Proceso Afork()
Init
Proceso A
Init
Proceso A
wait()Init
wait()Init
Proceso B Proceso B exit()Proceso BProceso B
-
15/12/2009
20
Llamadas al sistema. Llamadas al sistema. ExitExit y y WaitWait IIIIZombie: el hijo muere y el padre no hace wait
wait()
Init
Proceso A
Init
Proceso A
Init
Proceso A
Init
Proceso A
Init
Proceso Afork()
Proceso B exit()Proceso B
zombieProceso B
zombieProceso B
Cdigo C para crear un procesoCdigo C para crear un proceso
int main(){
pid t pid;
Llamadas al Llamadas al sistema.Ejemplosistema.Ejemplo
pid_t pid;pid = fork(); /* crea un procesoif (pid < 0) { /* error
fprintf(stderr, "Fork ha fallado");exit(-1);
}else if (pid != 0) { /* Es el padre
. /* Cdigo del padrewait(NULL); /* Espera el fin del hijoexit(0); /* El padre termina
} else { /* Es el hijo
execlp ("/bin/ls", "ls", NULL); /* Ejecutar cdigo}
}
-
15/12/2009
21
ConceptoConcepto de threadde thread
ThreadsThreads
ConceptoConcepto de threadde threadModelosModelos multithreadmultithreadDiseoDiseo con threadscon threadsThreads en Linux Threads en Linux Threads en JavaThreads en JavaPthreadsPthreads (POSIX threads)(POSIX threads)
Concepto de Concepto de threadthread II
cdigocdigo datosdatos datosdatosficherosficheros cdigocdigo ficherosficheros
Proceso sencillo y multithread:Proceso sencillo y multithread:
pilapila
registrosregistros
pilapila
registrosregistros
pilapila
registrosregistros
threadthread threadthread
cdigocdigo datosdatos datosdatosficherosficheros
registrosregistros pilapila
cdigocdigo ficherosficheros
registrosregistrosregistrosregistrosregistrosregistros
pilapilapilapilapilapila
Proceso con un nico threadProceso con un nico thread Proceso con varios threadsProceso con varios threads
-
15/12/2009
22
Estados de los Estados de los threadsthreads
Por thread Contador de programa, Registros Pila Procesos ligeros hijos Estado (ejecutando, listo o bloqueado)
Por proceso Espacio de memoria Variables globales Ficheros abiertos Procesos hijos Proceso Bloqueado por acceso a disco
Bloqueado por comunicacin
Procesos hijos Temporizadores Seales y semforos Contabilidad
Procesos ligeros
Activo
Tipos de Tipos de ThreadsThreads
Threads-kernel (ULT):Gestin the thread en el kernel
Conocidos y gestionados por el ncleo del sistema operativo. y g p pEj, libpthread en Linux o threads en WindowsNT
Threads de usuario (KLT): Gestin the threads a nivel biblioteca de usuario
Conocidos y gestionados por el lenguaje (ej, Java) o una biblioteca de funciones de usuario sin que el ncleo del sistema operativo los conozcaEj Mach c threads fibras de WindowsNTEj, Mach c-threads, fibras de WindowsNT
Threads mixtosConocidos y gestionados por una biblioteca de funciones de usuario que recurre al ncleo del sistema operativo para implementarlos vinculacin o binding segn distintas relaciones: 1 a 1, o varios a 1.
-
15/12/2009
23
Modelos de vinculacin de Modelos de vinculacin de ThreadsThreads II ManyMany--toto--One:One: variosvarios threads de threads de usuariousuario soportadossoportados en un en un thread del kernelthread del kernel
Solaris Green ThreadsSolaris Green ThreadsGNU Portable ThreadsGNU Portable Threads
OneOne--toto--One:One: cadacada thread thread de de usuariousuario estest soportadosoportado en un en un th d d l k lth d d l k l
ThreadsThreads de usuariode usuario
Thread del kernelThread del kernelKK
thread del kernelthread del kernelWindows NT/XP/2000Windows NT/XP/2000LinuxLinuxSolaris Solaris posterioresposteriores a v9 a v9 Threads de usuarioThreads de usuario
Threads del kernelThreads del kernelKK KKKKKK
Modelos de vinculacin de Modelos de vinculacin de ThreadsThreads IIII ManyMany--toto--Many:Many: variosvarios threads de threads de usuariousuario soportadossoportados en en variosvariosthread del kernelthread del kernel
Solaris v9Solaris v9Windows NTWindows NT ThreadsThreads de usuariode usuario
Dos Dos nivelesniveles:: similar a M:M similar a M:M peropero cadacada thread thread de de usuariousuario se se puedepuede enlazarenlazar con un con un thread del kernelthread del kernel
Solaris v8Solaris v8
ThreadThread del del kernelkernelKKKK KK
Solaris v8Solaris v8
KK
ThreadsThreads de usuariode usuario
ThreadThread del del kernelkernelKKKK KK
-
15/12/2009
24
ParalelizacinParalelizacin utilizando utilizando threadsthreads
Procedimiento 1
P F EjecucinProcedimiento 2
P F
P di i t 2
Esperaen E/S
P F
Procedimiento 1
Ejecucinparalela
jecuc serie
Esperaen E/S
P F
Esperaen E/S
P F
Procedimiento 2 p
ProcesamientoEsperaen E/S
P F
ThreadsThreads en el diseo de servidores en el diseo de servidores
Trabajadorabajado
P tNcleo Sol
icitu
des
P tNcleo Sol
icitu
des
P tNcleo
Distribuidor
Solic
itude
s
PuertoNcleo S PuertoNcleo SPuertoNcleo S
-
15/12/2009
25
Diseo con Diseo con threadsthreads
Proceso varios threads Paralelismo y variables
compartidas
Proceso con un solo thread No hay paralelismo
Llamadas al sistema compartidas Llamadas al sistema
bloqueantes por thread Permite divisin de tareas Aumenta la velocidad de
ejecucin del trabajo Programacin concurrente
Simplicidad vs exclusin
Llamadas al sistema bloqueantes
Paralelismo gestionado por el programador
Llamadas al sistema no bloqueantes
Mltiples procesos cooperando Imaginar otra llamada al
mismo cdigo Mutex Variables globales
p p p Permite paralelismo
gestionado por el SO No comparten variables Mayor sobrecarga de
ejecucin
Linux Linux ThreadsThreads Linux se Linux se refiererefiere a los threads a los threads comocomo tareastareas ( (taskstasks) )
La La creacincreacin de threads se de threads se realizarealiza mediantemediante la la llamadallamada al al sistemasistemaclone()clone()
Linux Linux ThreadsThreads
clone()clone()
clone()clone() permitepermite a la a la tareatarea hijahija compartircompartir el el espacioespacio de de direccionesdireccionesde la de la tareatarea padre (padre (procesoproceso))
Java threads se Java threads se puedenpueden crearcrear::Java Java ThreadsThreads
ExtendiendoExtendiendo la la claseThreadclaseThreadImplementandoImplementando el el interfazinterfaz RunnableRunnable
Los threads en Java los Los threads en Java los gestionagestiona::La JVM: green threadsLa JVM: green threadsEl SO: El SO: correspondenciacorrespondencia 1 a 1.1 a 1.
-
15/12/2009
26
PThreadsPThreads
El API del standardEl API del standard POSIXPOSIX (IEEE 1003 1c)(IEEE 1003 1c) parapara El API del standard El API del standard POSIXPOSIX (IEEE 1003.1c)(IEEE 1003.1c) paraparacreacincreacin y y sincronizacinsincronizacin de threads de threads
Este API Este API especifcaespecifca el el comportamientocomportamiento de la de la bibliotecabiblioteca de thread, la de thread, la implementacinimplementacin serser el el desarrollodesarrollo de de laslas especificacionesespecificaciones de de estaesta bibliotecabiblioteca
Es Es muymuy normal en SSOO normal en SSOO tipotipo UNIX (Solaris, Linux, UNIX (Solaris, Linux, yy pp ( , ,( , ,Mac OS X)Mac OS X)
Servicios POSIX para Servicios POSIX para threadsthreads
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*func)(void *), void *arg)
Crea un thread que ejecuta "func" con argumento "arg" y atributos "attr".Los atributos permiten especificar: tamao de la pila prioridad poltica deLos atributos permiten especificar: tamao de la pila, prioridad, poltica de planificacin, etc. Existen diversas llamadas para modificar los atributos.
int pthread_join(pthread_t thid, void **value)Suspende la ejecucin de un thread hasta que termina el thread con identificador "thid". Devuelve el estado de terminacin del thread.
int pthread_exit(void *value)Permite a un thread finalizar su ejecucin, indica el estado de terminacin.
pthread_t pthread_self(void)Devuelve el identificador del thread que ejecuta la llamadaDevuelve el identificador del thread que ejecuta la llamada.
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate)Establece el estado de terminacin de un thread.Si "detachstate" = PTHREAD_CREATE_DETACHED el thread liberara sus recursos cuando finalice su ejecucin.Si "detachstate" = PTHREAD_CREATE_JOINABLE no se liberarn
los recursos, es necesario utilizar pthread_join().
-
15/12/2009
27
Jerarqua de Jerarqua de threadsthreads threadsthreadsProceso ligero A
No independ.
p_create
p_createp_create
Proceso ligero B
Proceso ligero D
Proceso ligero C
p_joinp_exit
p_exit
p_exitligero B
Programa de ejemplo IPrograma de ejemplo I#include #include #define MAX_THREADS 10void func(void) {void func(void) {
printf("Thread %d \n", pthread_self());pthread_exit(0);
}main() {
int j;pthread_attr_t attr;pthread_t thid[MAX_THREADS];pthread attr init(&attr);pthread_attr_init(&attr);for(j = 0; j < MAX_THREADS; j ++)
pthread_create(&thid[j], &attr, func, NULL);for(j = 0; j < MAX_THREADS; j ++)
pthread_join(thid[j], NULL);}
-
15/12/2009
28
Programa de ejemplo IIPrograma de ejemplo II#include #include #define MAX_THREADS 10
void func(void) {printf("Thread %d \n", pthread_self());
pthread_exit(0);}
main() {int j;pthread_attr_t attr;pthread_t thid[MAX_THREADS];
pthread_attr_init(&attr);pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
for(j = 0; j < MAX_THREADS; j ++)pthread_create(&thid[j], &attr, func, NULL);
sleep(5);}
PlanificacinPlanificacin a a mediomedio y largo y largo plazoplazoPlanificacinPlanificacin a a cortocorto plazoplazoFIFO FCFSFIFO FCFS
PlanificacinPlanificacin
FIFO FCFSFIFO FCFSSJF, SRTFSJF, SRTFPrioridadesPrioridadesRoundRound--robinrobinTiempo realTiempo realPlanificacinPlanificacin de de PthreadsPthreadsPlanificacinPlanificacin en POXISen POXISPlanificacinPlanificacin en POXISen POXISPlanificacinPlanificacin en Linux en Linux PlanificacinPlanificacin en Windowsen Windows--NTNTServiciosServicios POXIS POXIS parapara planificacinplanificacin
-
15/12/2009
29
Planificacin A largo plazo (aadir procesos a ejecutar) A medio plazo (aadir procesos a RAM desde disco)
A t l ( ti l UCP)
Planificacin de la CPU Planificacin de la CPU
A corto plazo (qu proceso tiene la UCP) Planificacin de E/S
Tipos de planificacin Sin expulsin: el proceso conserva la UCP mientras desee. Con expulsin: el SO quita la UCP al proceso
Exige un reloj que interrumpe peridicamenteExige un reloj que interrumpe peridicamente
Colas de procesos Por prioridad Por tipo
Planificacin a medio y largo plazoPlanificacin a medio y largo plazo
Nuevos de estados de los procesos:Nuevos de estados de los procesos:
En En esperaespera (Bach): (Bach): EsperaEspera entrarentrar en el en el sistemasistema
SuspendidoSuspendido: : En En esperaespera de de asignacinasignacin de de memoriamemoriaSuspendidoSuspendido y y bloqueadobloqueadoSuspendidoSuspendido y y listalista
-
15/12/2009
30
Estados de los procesos IIEstados de los procesos II
Diagrama de estados de los procesos:Diagrama de estados de los procesos:
se admitese admite terminaterminase interrumpese interrumpe
se admitese admite
Espera E/S Espera E/S o un evento o un evento se planificase planifica
En esperaEn espera
ListoListo EjecucinEjecucin
ZombieZombie
se expulsase expulsaa discoa discoSuspendidoSuspendido
y listoy listo
se recuperase recuperade discode disco
Termina la Termina la E/S o elE/S o elevento evento
BloqueadoBloqueadoSuspendidoSuspendido
yybloqueadobloqueado
Termina la Termina la E/S o elE/S o elevento evento
se expulsase expulsaa discoa disco
Planificacin a corto plazo: cuando un proceso:1. Se bloquea2 P d j t d li t
Planificacin a corto plazo Planificacin a corto plazo
2. Pasa de ejecutando a listo3. Pasa de bloqueado a listo4. Termina
La planificacin en los casos 1 y 4 es no expulsora (nonpreemptive) En el resto de casos es expulsora (preemptive)
-
15/12/2009
31
MXIMIZARMXIMIZAR Utilizacin de la CPU que sea mxima Productividad bach (throughput) # de procesos que se procesan por
unidad de tiempo
Criterios de planificacin Criterios de planificacin
p
MNIMIZARMNIMIZAR Tiempo de respuesta (Turnaround) tiempo en ejecutar un trabajo en
particular Tiempo de espera tiempo que un proceso pasa en la cola de listos Tiempo de respuesta interactivo tiempo que pasa desde que se enva
el trabajo hasta que se obtiene una respuesta
CONSEGUIRCONSEGUIR Reparto equitativo del procesador Cumplimiento de plazos (tiempo real) Calidad de servicio (sistemas multimedia)
FIFO FCFSFIFO FCFS Organizacin en una lista ordenada por tiempo de llegada
SJF, SRTFSJF, SRTF Organizacin en lista ordenada por tiempo previsto de ejecucin
Algoritmos de planificacin I Algoritmos de planificacin I
Bach: tiempo previsto para la ejecucin de un proceso Interactivo: tiempo previsto para la prxima rfaga de CPU
Prioridades Fjas o dinmicas Organizacin en una lista ordenada por prioridades calculadas
RoundRound--RobinRobin Organizacin en una lista circular con quantos de tiempo
Expropiacin por agotamiento del quanto y replanificacin Expropiacin por agotamiento del quanto y replanificacin Lotera
Se asigna a cada proceso un rango de valores y se genera un nmeroa leatorio
Tiempo real A plazo fijo: EDF (prioridades dinmicas) Peridicos: RMS (prioridades estticas)
-
15/12/2009
32
Procesos T. cmputoP1 24P2 3P3 3
FIFO FirstFIFO First--Come, FirstCome, First--Served (FCFS) IServed (FCFS) I
P3 3Suponiendo que los procesos llegan en el siguiente orden
P1 , P2 , P3 El diagrama de Gantt es:
P1 P2 P3
Tiempo de espera para: P1 = 0; P2 = 24; P3 = 27
Tiempo medio de espera: (0 + 24 + 27)/3 = 17
24 27 300
Suponiendo que los procesos llegan en el siguiente ordenP2 , P3 , P1
FIFO FirstFIFO First--Come, FirstCome, First--Served (FCFS) IIServed (FCFS) II
2 , 3 , 1 El diagrama de Gantt es:
P1P3P2
63 300
Tiempo de espera para: P1 = 6; P2 = 0; P3 = 3 Tiempo medio de espera: (6 + 0 + 3)/3 = 3 Mucho mejor que el caso anterior Efecto Convoy: los procesos cortos detrs de los largos
-
15/12/2009
33
ShortestShortest--JobJob--First (SJF) Scheduling IFirst (SJF) Scheduling I
Asocia a cada proceso el tiempo previsto de ejecucin. Seleccionapara ejecutar el proceso con menor tiempo.
Dos esquemas: No No expulsorexpulsor (nonpreemptive) una vez planificado sigue en la
CPU hasta que completa su rfaga de CPU. ExpulsoExpulsor (preemptive) si llega un nuevo proceso con un
tiempo menor que el que se est ejecutanto, este ltimo se expulda. Tambin se llama
Shortest-Remaining-Time-First (SRTF) SJF SJF eses ptimoptimo da el menor tirmpo de espera medio para un
conjunto de procesos. ProblemaProblema: : se debe suministrar el siguiente tiempo de rfaga
-> estimacin teniendo en cuenta las anteriores
Procesos T. llegada T. cmputoP1 0.0 7P 2 0 4
EjemploEjemplo de SJF no de SJF no expulsivoexpulsivo
P2 2.0 4P3 4.0 1P4 5.0 4
SJF (no-expulsivo)
P1 P3 P2
73 160
P4
8 12
Tiempo medio de espera = (0 + 6 + 3 + 7)/4 = 4
73 160 8 12
-
15/12/2009
34
Procesos T. llegada T. cmputoP1 0.0 7
EjemploEjemplo de SJF de SJF expulsivoexpulsivo
P2 2.0 4P3 4.0 1P4 5.0 4
SJF (expulsivo)
P1 P3P2 P4P2 P1
Tiempo medio de espera = (9 + 1 + 0 +2)/4 = 3
42 110 5 7 16
PlanificacinPlanificacin basadabasada en en prioridadesprioridades II
Se asocia un nmero de prioridad (entero) a cada proceso
La CPU ejecuta el proceso de mayor prioridadLa CPU ejecuta el proceso de mayor prioridad(menor entero mayor priodad)
Expulsivo No expulsivo
SJF es un planificador de prioridad, en el que la prioridad es el tiempo de cmputo de cada rfaga de CPU (a menor rfaga mayor
i id d)prioridad).
Problema Inanicin (starvation) el proceso de menor prioridadpuede no ejecutarse nunca
SolucinSolucin Envejecimiento (aging) a medida que pasa el tiempo, el proceso aumenta su prioridad
-
15/12/2009
35
PlanificacinPlanificacin basadabasada en en prioridadesprioridades IIII
Establecimiento de prioridades: InternoInterno: : uso de la memoria, bloqueos de E/S, duracin
estimada de la siguiente rfaga de CPU
Procesos T. llegada T. Rfaga estimado PrioridadP1 0.0 7 3P2 2.0 4 2P3 4.0 1 1P4 5.0 4 2
Externo: coste, frecuencia, importancia,..
Procesos T. llegada Frecuencia PrioridadP1 0.0 1 4P2 2.0 3 2P3 4.0 6 1P4 5.0 2 3
Round Robin (RR)Round Robin (RR)
Cada proceso tiene una unidad de tiempo de CPU (quantum), normalmente 10-100 milliseg. Cuando pasa el proceso es expulsado y puesto en la cola de Listosp
Si hay n procesos en la cola de Listos, y el quantum es q, a cada proceso le toca 1/n del tiempo CPU en trozos de al menos q unidades de tiempo cada uno.
Ningn proceso espera ms de (n-1)q unidades de tiempo.
Performance q grande FIFO q pequeo q debe ser grande respecto al tiempo de cambio de
contexto (latencia) para que el overhead no sea demasiado grande
-
15/12/2009
36
EjemploEjemplo de RR con Quantum = 20de RR con Quantum = 20
Process Burst TimeP1 531P2 17P3 68P4 24
El diagrama de es:
P1 P2 P3 P4 P1 P3 P4 P1 P3 P3
Normalemente , la media de turnaround es mayor que en SJF, pero mejor tiempo de respuesta
1340 20 37 57 77 97 117 121 154 162
El quantum y la El quantum y la latencialatencia de de cambiocambio de de contextocontexto
-
15/12/2009
37
El El tiempotiempo de Turnaround de Turnaround varavara con el Quantumcon el Quantum
Colas multilevel IColas multilevel I
La cola de Listos se particiona en colas separadas :foreground (interactivo)background (batch)
Cada cola tiene su propio algoritmo de planificacin foreground RR background FCFS
La planificacin se aplica entre las colas: Planificacin de prioridad fija; (se sirven todos de foreground y
despus de background) Se puede producir inanicindespus de background). Se puede producir inanicin. Rodaja de tiempo cada cola tiene una cierta cantidad de
tiempo de CPU time que se reparte entres sus procesos; ej.., 80% to foreground in RR y 20% to background in FCFS
-
15/12/2009
38
Colas multilevel IIColas multilevel II
Tres colas: Q0 RR con quantum de 8 milisegundos y FIFO Q1 RR con quantum de 16 milisegundos y FIFO
Q FIFO
Colas multilevel con Colas multilevel con realimentacinrealimentacin
Q2 FIFO
Planificacin Un nuevo trabajo llega a la Q0 con planificacin FIFO. Cuando
gana la CPU, se ejecuta 8. Si no termina se mueve a Q1. En Q1 se sirve con FIFO y se le dan 16 m. Si no termina se
mueve a Q1.
-
15/12/2009
39
PlanificacinPlanificacin en en TiempoTiempo realreal
TiempoTiempo real real duroduro o o crticocrtico (Hard real-time) las tareas se debecomplentar dentro de un plazo preestablecido (con unas garantasde tiempo)de tiempo) RMA: Asignas las prioridades segn la frecuencia (tareas
peridicas e independientes). Garantiza que cumplen el plazopara una utilizacin del procesador < 70%
EDF: Primero la tarea que antes cumpla en plazo (prioridadesdinmica). Ms dificil de implementar que el anterior. La utilizacin del procesador puede ser del 100%
TiempoTiempo real real blandoblando o no o no crticocrtico (Soft real-time) las tareascrticas deben teber prioridades ms altas que las que no lson de tiempo real.
Tarea Cmputo Plazo= T Prioridad
1 4 10 12 4 15 2
PlanificacinPlanificacin en en TiempoTiempo real. RMS Ireal. RMS I
3 10 35 3
1
2
3tiempo
Tiempo de cmputo (C) Fin de periodo (T = Periodo )
-
15/12/2009
40
PlanificacinPlanificacin en en TiempoTiempo real. RMS IIreal. RMS II
Utilizacin del procesador pora una tarea i Ui = Ci
Ti
Utilization del procesador para n tareas U(n) = n(2 - 1)1n
Resultados:
Si Ui U(n) el conjunto de tareas es planificableSi Ui U(n) el conjunto de tareas es planificable. If Ui > 1 el conjunto de tareas es no planificable. Si U(n) < Ui el conjunto de tareas es inconcluso
*si todas las tareas cumplen su plazo en el primer hiperperiodo el conjunto de tareas es planificable.
Tarea Cmputo Plazo= T Prioridad
1 4 10 12 4 15 2
PlanificacinPlanificacin en en TiempoTiempo real. RMS IIIreal. RMS III
3 10 35 3 U(3) = 3(21/3 1) = 0.779
Resultados:U1+2 = 0.667, planificanle.Sin embargo, 0.779 < 0.953 < 1
U1 = 4 / 10 = 0.4
U2 = 4 / 15 = 0 267 Por lo que es inconcluso para 3.
Si las tareas cumplen el plazo en el primer HIPERPERIODO (35 en este caso)son planificables
U2 4 / 15 0.267
U3 = 10 / 35 = 0.286
Utotal = 0.953
-
15/12/2009
41
Las prioridades se asignan de acuerdo a sus plazos:
El plazo ms corto, la prioridad mayor;
PlanificacinPlanificacin en en TiempoTiempo real. EDFreal. EDF
El plazo ms largo, la prioridad menor.
PlanificacinPlanificacin en POSIX Ien POSIX I
Cada poltica de planificacin lleva asociado un rango con al menos 32 niveles de prioridad.
El planificador elegir el proceso o thread con la prioridad ms alta
Polticas de planificacin Para comparticin de tiempo prioridad variable
Otra (SCHED_OTHER) Para tiempo real prioridad fija, superior a SCHED_OTHER
FIFO (SCHED_FIFO) Cclica (SCHED_RR)
-
15/12/2009
42
PlanificacinPlanificacin SCHED_OTHER en LINUX SCHED_OTHER en LINUX Funcionamiento general
LINUX divide el tiempo de CPU en pocas (epoch) En cada poca cada proceso tiene un quantum de tiempo que se le
asigna al comenzar la poca Cuando un proceso agota su quantum se le expulsa y se selecciona
otro proceso ejecutable Un proceso puede ser seleccionado mltiples veces mientras le
quede quantum Por ejemplo, puede haber sido expulsado tras una E/S, propia o
ajena, y luego vuelto a asignar la CPU La poca termina cuando todos los procesos ejecutables han
agotado su quantumE t i l t l En ese momento, se reasigna los quantum para la poca siguiente LINUX favorece los procesos que no han agotado su quantum en la poca anterior
La prioridad est relacionada con el quantum restante (a mayor quantum, mayor prioridad)
PlanificacinPlanificacin PthreadPthread
Polticas de planificacin a definir como en procesos. Ambitos de planificacin:p
PTHREAD_SCOPE_PROCESS: Planificacin local La librera de threads decide que thread se ejecuta.
PTHREAD_SCOPE_SYSTEM: Planificacin global El kernel decide qu thread se ejecuta.
Los atributos de planificacin se pueden aadir mediante servicios a los atributos de creacin de un thread:
#include int pthread_attr_setscope(pthread_attr_t *attr, int scope); int pthread_attr_getscope(const pthread_attr_t *attr, int *scope); int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy); int pthread_attr_getschedpolicy(const pthread_attr_t *attr, int *policy);
-
15/12/2009
43
PlanificacinPlanificacin en Windows NT Ien Windows NT I
Iniciado Sit l lIniciado Situar en la colade listos
Reiniciado
Ejecucinfinalizada
Esperaterminada
Fin de bloqueo
Seleccionado Expulsado
Pila del kernelen swap
Pila del
Listo
Finalizado
Bloqueado
Bloqueado
Cambio de contexto. Comienzo de ejecucin
Seleccionadopara
ejecucin
Expulsado
Expulsado
kernel en memoria
ReservaEjecucin
Transicin
PlanificacinPlanificacin en Windows NT IIen Windows NT II
Pt: PrioridadesPt: Prioridades relativas dethreads
Promocin dinmica:+n si se desbloquea (hasta 15)
Decaimiento dinmico:Decaimiento dinmico:-1 si agota el quantum (hasta Pt)
Anti-inanicin:Si no se ha ejecutado en los ltimos 3 segundos, adopta prioridad 15 para ejecutar 2*quantum
-
15/12/2009
44
Servicios POSIX para planificacin IServicios POSIX para planificacin I
Modificar la prioridad de un proceso
#include
Modificar la prioridad de un proceso int sched_setparam(pid_t pid, const struct_param
*param);
Modificar la prioridad y la poltica int sched_setscheduler(pid_t pid, const sched_param
*param);
Obtener los parmetros de planificacin de un proceso int sched_getparam(pid_t pid, const struct_param
*param);
Obtener la prioridad de un proceso int sched_getscheduler(pid_t pid);
CaptuloCaptulo 4: Gestin de 4: Gestin de procesosprocesos
Seales y excepcionesSeales y excepcionesTemporizadoresTemporizadoresServidores y Servidores y demoniosdemonios
-
15/12/2009
45
Seales ISeales ISeal: Mecanismo por el que un proceso puede ser notificado de, o afectado por, un evento que se produce en el sistema:
- excepciones detectadas por hardware- expiracin de una alarma o temporizador- finalizacin de una operacin de I/O asncrona- llegada de un mensaje- invocacin de la funcin kill() y similares-actividad del terminal, etc.
Nmero de seal:Entero positivo que identifica una seal. Existen tambin constantes predefinidas para dar nombre a las seales
Seales IISeales II
Las seales son interrupciones al proceso Envo o generacin
Proceso- Proceso (dentro del grupo) con el killProceso Proceso (dentro del grupo) con el kill SO - Proceso
SealProceso
Cdigo
ProcesoFuncin
tratamiento
-
15/12/2009
46
Seales IIISeales III
UnaUna sealseal se se puedepuede generargenerar parapara un un procesoproceso o o paraparaun thread.un thread.
CadaCada thread thread tienetiene unauna mscaramscara de de sealesseales, , queque define define laslas sealesseales bloqueadasbloqueadas..
La La mscaramscara se se heredahereda del padredel padre SealSeal no no bloqueadabloqueada: se : se entregaentrega
IgnorarIgnorar TerminarTerminar elel procesoprocesoTerminarTerminar el el procesoproceso EjecutarEjecutar manejadormanejador
SealSeal bloqueadabloqueada: : quedaqueda pendiientependiiente hastahasta queque se se aceptaacepta con con sigwaitsigwait()()
Tratamiento de Tratamiento de seales Iseales I
OpcionesOpciones parapara tratartratar unauna sealseal::
EnviarEnviar la la sealseal al thread al al thread al queque la la sealseal se se refiererefiereqq EnviarEnviar la la sealseal a a todostodos los threads del los threads del procesoproceso AsignarAsignar un thread un thread especficoespecfico parapara recibirrecibir todastodas laslas
sealesseales del del procesoproceso
CadaCada sealseal se se tratatrata mediantemediante un un manejadormanejador
1.1. La La sealseal se genera se genera porpor un un eventoevento particularparticular2.2. La La sealseal se se envaenva al al procesoproceso3.3. La La sealseal se se tratatrata
-
15/12/2009
47
Hay muchos tipos de seales, segn su origen SIGILL instruccin ilegal SIGALRM vence el temporizador
Tratamiento de Tratamiento de sseales IIeales II
SIGALRM vence el temporizador SIGKILL mata al proceso
El SO las transmite al proceso El proceso debe estar preparado para recibirla
Especificando un procedimiento de seal con sigaction() Enmascarando la seal con sigprogmask()
Si no est preparado accin por defectoSi no est preparado accin por defecto El proceso, en general, muere Hay algunas seales que se ignoran o tienen otro efecto
El servicio pause() para el proceso hasta que recibe una seal
Seales. Seales. Ejemplo UnixEjemplo Unix/* Programa A. Fichero Fichero padre.c* Manda ejecutar el programa B* Lee caracteres del terminal y cada vez que detecta salto de linea* envia una seal al proceso B*/#include #include #include #include #include
pid_t resp;char buf[1];
main() {resp = fork();if (resp == 0)
if (execlp("./hijo","hijo", NULL) == -1) {perror("exec"), exit(1);
}
while (read(0, buf, 1) == 1) {if (buf[0] == '\n') {
kill(resp, SIGUSR2);}
}}
-
15/12/2009
48
Seales. Seales. Ejemplo UnixEjemplo Unix/* Programa B. Fichero hijo.c* Crea un fichero y escribe en l* una lnea por cada seal que recibe, hasta un mximo de 5*/#include #include #include #include
int fd, n=5;
void proc(int arg) {n--;return;
}
int main() {signal(SIGUSR2, proc);if ((fd = open("fichero", O_CREAT|O_TRUNC|O_WRONLY)) == -1) {
perror("open"); exit(1);}
while (n!= 0) {pause();write(fd, "Linea\n", 7);
}return 0;
}
ExcepcionesExcepciones
Evento que ocurre durante la ejecucin de un programa y que requiere la ejecucin de un fragmento de cdigo fuera del flujo normal de ejecucin.
Manejo de excepcion en Javatry {
Bloque donde puede producirse una excepcin}catch {Bloque que se ejecutar si se produce unaBloque que se ejecutar si se produce una
excepcinen el bloque anterior
}
-
15/12/2009
49
TemporizadoresTemporizadores
El SO mantiene un temporizador por proceso El proceso activa el temporizador con alarm()
El SO enva una seal SIGALRM al proceso cuando vence su temporizador
Proceso servidorProceso servidor Es un proceso que:
Est pendiente de recibir rdenes de un proceso cliente Estructura de bucle infinito
PROCESOSERVIDOR
PROCESOSCLIENTES
RECURSO
Uso de puertos de comunicacin
Servidor secuencial: El servidor mismo ejecuta las rdenes
Servidor paralelo: Delega ejecucin las rdenes a threads o procesos hijos
-
15/12/2009
50
Proceso servidor. FuncionamientoProceso servidor. Funcionamiento
Puerto A Puerto A Puerto A Puerto B
ServidorPadre
ServidorHijo
Cliente A Cliente A
a) b) c)
ServidorPadre
ServidorPadre
Procesos cliente y servidor en mquinas distintas
Proceso servidor.Proceso servidor. Mquinas distribuidas Mquinas distribuidas
ClientePuerto
Servidorficheros
Servidorimpresin
Servidore_mail
SO SO SO SO
RED
-
15/12/2009
51
Procesos demoniosProcesos demonios
Es un proceso que ejecuta: En background (su padre no le espera)En background (su padre no le espera) No asociado a un terminal o proceso login Que espera que ocurra un evento Funciona como servior O que debe realizar una tarea de forma peridicas
Caractersticas Se arrancan al iniciar el sistemaSe arrancan al iniciar el sistema No mueren Estn normalmente en espera de evento No hacen el trabajo, lanzan otros procesos o procesos ligeros
Ejemplos:Telnetd, httpd, lpd
Servicios POSIX para Servicios POSIX para seales seales II
include #include g
Manipular conjuntos de seales:
int sigemptyset (sigset_t *set);int sigfillset (sigset_t *set);
int sigaddset (sigset_t *set, int signo);
int sigdelset (sigset_t *set, int signo);
int sigismember (const sigset_t *set, int signo);
Estas funciones no afectan de forma directa al comportamientodel sistema
-
15/12/2009
52
Servicios POSIX para Servicios POSIX para seales IIseales II
Examinar y cambiar la accin asociada a una seal (armado):int sigaction (int sig, const struct sigaction *act, struct sigaction *oact); si act es NULL, la accin actual no se cambia si oact no es NULL, la accin actual se devuelve en *oact
Enviar una seal a un proceso:int kill (pid_t pid, int sig);
Enviar una seal a un thread:pthread kill(pthread t thread int sig)pthread_kill(pthread_t thread, int sig);
Aceptar una seal bloqueada:int sigwait (const sigset_t *set, int *sig);
Servicios POSIX para Servicios POSIX para seales IIIseales IIIMscara de seales:
int sigprocmask (int how, sigset_t *set, sigset_t *oset); Permite modificar o examinar la mscara de seales de un proceso.
int sigpending (sigset_t *set); Devuelve el conjunto de seales bloqueadas pendientes del proceso.
Espera de seales:int pause(void); Bloquea al proceso hasta que llegue una seal.
Servicios de temporizacin:unsigned int alarm(unsigned int seconds); Activa un temporizador
unsigned int sleep(unsigned int seconds); El proceso se suspende en num de segundos.