Gestion de Procesos

52
15/12/2009 1 Tema Tema 4: Gestión de 4: Gestión de procesos procesos Procesos Procesos Capítulo Capítulo 4: Gestión de 4: Gestión de procesos procesos Procesos Procesos Procesos ligeros ( Procesos ligeros (threads threads) Políticas y algoritmos de planificación Políticas y algoritmos de planificación Señales y excepciones Señales y excepciones Temporizadores Temporizadores Servidores y demonios Servidores y demonios Servicios POSIX Servicios POSIX Servicios POSIX Servicios POSIX

description

La manera mas sencilla de explicar los procesos en Gnu/Linux

Transcript of Gestion de Procesos

  • 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.