proceso s - sistemas operativos

59
1 Procesos y Threads Capítulo 2 2.1 Procesos 2.2 Threads 2.3 Comunicación entre procesos 2.4 Problemas IPC clásicos 2.5 Planificación

Upload: angel-maillo

Post on 17-Nov-2015

238 views

Category:

Documents


6 download

DESCRIPTION

Proceso s - Sistemas Operativos

TRANSCRIPT

  • *Procesos y ThreadsCaptulo 22.1 Procesos2.2 Threads2.3 Comunicacin entre procesos2.4 Problemas IPC clsicos2.5 Planificacin

    *La seccin 2.4 no entra para el examen: no es una asignatura de programacin concurrente, aunque se deben dominar los conceptos.

  • *Procesos (1)El modelo de los procesosMultiprogramacin con 4 programasModelo conceptual de 4 procesos secuenciales independientesSolo un proceso activo en cada instante

    *

  • *Procesos (2)Creacin de procesosPrincipales eventos que causan la creacin de procesos

    Inicializacin del sistema (demonios) [comando ps]Ejecucin de la llamada al sistema para crear procesos El usuario solicita un nuevo proceso (comando)Inicio de un trabajo batch

    Todos invocan fork()

    *Creo que podemos eliminar cualquier referencia a Windows y poner los ejemplos solo con Unix.

  • *Condiciones que terminan un proceso

    Normal exit (voluntario)Error exit (voluntario)Fatal error (involuntario)Asesinado por otro proceso (involuntario, seal) o suicidado (voluntario, seal)Procesos (3)Terminacin de los procesos

    *

  • *El proceso padre crea procesos hijos y los procesos hijos pueden crear sus propios procesosJerarqua de procesosUNIX llama a esto "process group"Windows no tiene el concepto de jerarqua de procesosSe puede operar con grupos de procesos (p. ejem.: enviar una seal.

    No confundir este grupo con el grupo de rwx rwx rwxProcesos (4)Grupos de procesos

    *

  • *Procesos (5)Grupos de procesos- init lee /etc/ttys (nmero de terminales).- init crea un proceso hijo por cada terminal.- Los hijos ejecutan (exec) el programa bin/login.- Esperan a que un usuario entre al sistema.- bin/login ejecuta la shell correspondiente (en /etc/passwd)- La shell crea un hijo por cada comando.

    *

  • *Procesos (6)Estados de procesosPosibles estados de un procesoEn ejecucin (running)Bloqueado (blocked)Preparado (ready)

    planificador (scheduler)fork()exit

    *

  • *Campos de una entrada de la tabla de procesosProcesos (7)Implementacin de los procesos

    *

  • *Acciones que realiza el SO cuando llega una interrupcinProcesos (8)Implementacin de procesos

    *

  • *

    Threads (1)El modelo de los threads(a) Tres procesos cada uno con un thread(b) Un proceso con tres threads

    *

  • *

    Atributos compartidos por todos los threads de un procesoAtributos privados de cada thread

    Threads (2)El modelo de los threads

    *

  • *

    Cada thread tiene su propia pila (stack)Threads (3)El modelo de los threads

    *

  • *

    Operaciones sobre threadsnn

    Crear un thread:

    int pthread_create (pthread_t *identThread, const pthread_att_t *atributos, void *(*funcion, void*), void *argumento)pthread_create (&tA, NULL, escribir, &a)siendo:pthread_t tA; void *escribir (void *letra) {}

    - Esperar a que termine otro thread:int pthread_join (pthread_t thread, void **estado)pthread_join (tA, NULL)

    - Terminar un thread:Tambin:void pthread_exit (void *estado)pthread_self()pthread_exit (NULL)pthread_yield()Threads (4)El modelo de los threads

    *

  • *

    Problemas con los threads Fork. El hijo hereda los threads del padre?

    NO: puede no funcionar SI: un thread en el padre bloqueado por E/S quin lee? el thread del padre? el del hijo? los dos?- Los threads comparten estructuras de datos. Si un thread cierra un fichero mientras otros estn leyendo qu pasa?Threads (5)El modelo de los threadsPara qu se necesitan los threads si hay procesos? Se simplifica el modelo de programacin. Es ms rpido crear/destruir threads que procesos. Razones de rendimiento.

    *

  • *

    Un procesador de textos con 3 threadsPor qu no funciona con tres procesos?Threads (6)Uso de los threads

    *

  • *

    Un servidor web multihiloThreads (7)Uso de los threads

    *

  • *

    Threads (8)Uso de los threadsCmo sin threads?Thread despachadorThread obrero

    *

  • *

    Threads (9)Implementacin en el espacio del usuarioRuntime

    *

  • *

    Threads (10)Implementacin en el espacio del usuarioVentajas: - Se puede tener threads en sistemas operativos que no los soportan - La conmutacin (switching) es mucho ms rpida que si hay que comunicarlo al ncleo - Cada proceso puede tener su propio algoritmo de planificacin de threads

    Inconvenientes: - Cmo se implementan las llamadas al sistema bloqueantes? - Un thread provoca una falta de pgina: bloquea al proceso - los threads tienden a monopolizar la CPU

    *

  • *

    Threads (11)Implementacin en el espacio del ncleo (kernel)

    *

  • *

    Threads (12)Implementacin en el espacio del ncleo (kernel)Ventajas: - El bloqueo de un thread no bloquea todos los threads del proceso que lo contiene.

    Inconvenientes: - La creacin/destruccin de threads es ms cara en el ncleo que en el espacio de usuario (alternativa: reciclar threads). - El cambio de contexto de threads tambin es ms caro

    *La seccin 2.2.5 solo indica la posibilidad de que existan implementaciones hbridas pero no aclara cmo. La seccin 2.2.6 muestra el mecanismo de up-call, que entiendo no es imprescindible para entender los threads, aunque s para implementarlos. La seccin 2.2.7 muestra los threads pop-up que no me parece relevante. La seccin 2.2.8 tambin me parece anecdtica.

  • *Comunicacin entre procesos (1)

    Los procesos necesitan comunicarse y sincronizarse.

    Se presentan tres problemas:

    Paso de informacin de un proceso a otro

    Threads (espacio de direcciones compartido)

    Procesos (espacio de direcciones no compartido)

    Exclusin mutua sobre regiones crticas

    Secuenciamiento cuando existen dependencias

    *

  • *

    A veces los resultados de las operaciones dependen tambin de la velocidad relativa de los procesosComunicacin entre procesos (2)Condiciones de carrera

  • *

    program Cuenta_Eventos;Contador : INTEGER := 0;process Observador;repeatEsperar_Evento;Contador := Contador + 1;forever;end Observador;

    process Reportero;repeatImprimir (Contador);Contador := 0;forever;end Reportero;beginObservador;Reportero;end Cuenta_Eventos;Comunicacin entre procesos (3)Condiciones de carrera

  • *

    Solucin: establecer regiones crticas en las que se acceda al recurso compartido en exclusin mutuaprocess Observador;repeatEsperar_Evento;Entrar_RC;Contador := Contador + 1;Salir_RC;forever;end Observador;

    process Reportero;repeatEntrar_RC;Imprimir (Contador);Contador := 0;Salir_RC;forever;end Reportero;Comunicacin entre procesos (4)Regin crticaProtocolo de entradaProtocolo de salidaProtocolo de entradaProtocolo de salida

  • *

    condiciones para la validez de una solucin ofreciendo exclusin mutua

    Dos procesos no pueden estar al mismo tiempo dentro de la

    (misma) regin crtica No deben hacerse suposiciones sobre el nmero o velocidad

    de las CPUs (sobre la velocidad relativa de los procesos) Ningn proceso que est fuera de la regin crtica debe poder

    bloquear a otros procesos que quieran entrar en la RC Antes o despus, todo proceso que quiera entrar en la RC lo

    consigue La decisin de qu proceso entra en una regin crtica se

    toma en un tiempo finitoComunicacin entre procesos (5)Regin crtica

  • *

    Comunicacin entre procesos (6)Regin crtica

  • *

    Mecanismo: Inhibicin de interrupciones

    entrar_RC: inhibir ints.; salir_RC: permitir ints. dentro de la RC, un proceso no pide E/S

    PERO: pueden perderse interrupciones se impide que otros procesos ajenos puedan continuar no funciona si hay varias CPUs Es peligroso darle al usuario la facultad de inhibir

    las interrupciones

    S es un mecanismo vlido dentro del ncleo del S.O.Comunicacin entre procesos (7)Exclusin mutua con espera activa

  • *

    Mecanismo: Variable cerrojo variable = 0 => RC libre ; variable = 1 => RC ocupadaprotocolo de entrada:

    if variable = 0 then variable:=1; entrar en RC else esperar hasta que variable = 0

    protocolo de salida:

    variable:= 0

    Mismo problema que el problema del Observador y Reportero(condiciones de carrera)Comunicacin entre procesos (8)Exclusin mutua con espera activa

  • *

    Mecanismo: Test and Set Lock

    TSL RX,LOCK

    Lee el contenido de LOCK en RX y pone un 1 en LOCKComunicacin entre procesos (9)Exclusin mutua con espera activa

  • *

    Las soluciones hardware y software son correctas Problemas con las soluciones hardware y software:

    Se pierde tiempo haciendo pooling

    Problema de la inversin de prioridades

    Comunicacin entre procesos (10)Exclusin mutua con espera activa

  • *

    Package Semaforos istype SEMAFOROS is private;procedure Inicializar(S:SEMAFOROS; Valor:INTEGER);procedure Bajar (S:SEMAFOROS);procedure Subir (S: SEMAFOROS);end Semaforos;Comunicacin entre procesos (11)Semforos

  • *

    Program Cuenta_Eventos;Contador: INTEGER;S: SEMAFOROS;

    process Observador;repeatEsperar_Evento;Bajar (S);Contador := Contador + 1;Subir (S);forever;end Observador;

    process Reportero;repeatBajar (S);Imprimir (Contador);Contador := 0;Subir (S);forever;end Reportero;begin Inicializar (S, 1); Observador; Reportero;end Cuenta_Eventos;Comunicacin entre procesos (12)Semforos

  • *

    type SEMAFOROS is private;procedure Inicializar(S :SEMAFOROS; Valor :INTEGER);procedure Bajar (S : SEMAFOROS);procedure Subir (S : SEMAFOROS);private -- Inaccesible al usuariotype SEMAFOROS isrecordContador : INTEGER;Cola : COLA_PROCESOS;end;--procedure Inicializar (S : SEMAFOROS; Valor : INTEGER) isbeginS.Contador := Valor;end Inicializar;Comunicacin entre procesos (13)Semforos

  • *

    procedure Bajar (S : SEMAFOROS) isbeginif S.Contador < 1 thenEncolar (Este_Proceso, S.Cola);Suspender; -- Implica llamada al PlanificadorelseS.Contador := S.Contador - 1;endif;end Bajar;

    procedure Subir (S : SEMAFOROS) isProceso : ID_PROCESO;beginif s.Cola.Primero /= 0 then -- Si algun proc. EsperandoDesencolar (Proceso, S.Cola);Preparar (Proceso); -- Llamada al PlanificadorelseS.Contador := S.Contador + 1;endif;end Subir;Comunicacin entre procesos (14)Semforos

    *Entiendo que estos constructores de concurrencia se lo cuentan en la asignatura (LPSI) en la que dan programacin concurrente.

  • *

    (tomado del libro de Sistemas Operativos de Paco Aylagas)Comunicacin entre ProcesosMemoria CompartidaEl programador resuelve los problemas de concurrenciaPaso de MensajesNo hay variables compartidasEnviar (Mensaje)Recibir (Mensaje)Enviar (Mensaje)Recibir (Mensaje)

    Comunicacin entre procesos (15)Paso de mensajes

  • *

    ALGUNAS CUESTIONESEl Enlace Puede SerUnidireccionalBidireccional Memoria Compartida Bus Hardware Red de ComunicacionesTamao del MensajeFijoVariableModelosLgicos Comunicacin DIRECTA o INDIRECTA Comunicacin SIMTRICA O ASIMTRICACapacidad del BuznComunicacin entre procesos (16)Paso de mensajes

  • *

    Modelos comunicacin. Comunicacin directa- Cada proceso tiene su propio buzn.- Cada proceso implicado debe indicar explcitamente el nombre del receptor o emisor.repeat. . .Esperar_Evento. . .Enviar(Reportero,Mensaje)foreverrepeat. . .Recibir(Observador,Mensaje). . .Imprimir_EventoforeverObservadorReporteroComunicacin entre procesos (17)Paso de mensajes

  • *

    Modelos comunicacin. Comunicacin directaPega de la ComunicacinDirectaSi cambia el nombre de un proceso,hay que revisar todas las referencias a lComunicacin entre procesos (18)Paso de mensajes

  • *

    Modelos comunicacin. Comunicacin indirectaEnviar (Buzn_1, Mensaje)Recibir (Buzn_1, Mensaje);Enviar (Buzn_1, Mensaje)Enviar (Buzn_2, Mensaje)Buzn_1Buzn_2Enviar (Buzn_2, Mensaje)Los Buzones Son CompartidosRecibir (Buzn_2, Mensaje);Recibir (Buzn_2, Mensaje);Los mensajes se envan y reciben a/de buzones, no a procesos.Comunicacin entre procesos (19)Paso de mensajes

  • *

    Tamao del buzn Capacidad Limitada (n mensajes)

    Si hay espacio El emisor contina la ejecucin despus del envoSi est lleno - El emisor queda bloqueado hasta que haya espacio en el buzn para dejar un mensaje.o - Se devuelve un status = lleno Capacidad Ilimitada

    El emisor nunca se bloquea en el envo de mensajes Capacidad Nula (rendez-vous)

    El emisor queda bloqueado hasta que el receptor est listo para recibir el mensaje.AsncronoSncronoComunicacin entre procesos (20)Paso de mensajes

  • *Planificacin de procesos (1)Planificar conjuntamente procesos CPU bound con procesos I/O bound

    Cuando planificar: creacin, terminacin o bloqueo, int. reloj o fin de E/SRfagas de CPUProceso con un uso intensivo de CPU (CPU bound)Proceso con un uso intensivo de E/S (I/O bound)

  • *Planificacin de procesos (2)Criterios:Justicia (fairness)A trabajos parecidos, asignacin parecida de CPU (todos)Eficiencia% de CPU (y dispositivos de E/S) ocupada (todos)Tiempo de retorno (turnaround time)Tiempo medio desde que entra un trabajo hasta que sale (batch)Tiempo de respuesta (response time)Tiempo entre que se da un comando y se obtiene la respuesta (interactivo)Tiempo de esperaTiempo en ejecutarse todos los trabajos delante suyo (batch)Rendimiento (throughput)Nmero de trabajos completados por unidad de tiempo (batch)

  • *Planificacin de procesos (3)Necesidad de un equilibrio

    (Batch). Ejecuto preferentemente trabajos pequeosAlto rendimiento, pero tiempo de retorno largo para trabajos grandes.(Batch + interactivos) preferencia a los interactivos;

    los batch de nocheMaximizo el rendimientoPara los interactivos buen tiempo de respuestaPara los batch tiempo de retorno largoSi la ocupacin de la CPU (eficiencia) se aproxima al 100%,

    el tiempo medio de espera se dispara ( )En ocasiones, es mejor minimizar la varianza que la media

  • *Planificacin de procesos (4)Categoras de algoritmos de planificacin:

    Sistemas BatchNo expulsores o expulsores con un quantum grandeReducen cambios de contexto y mejoran el rendimientoFCFS, SJF, SRTN, por nivelesSistemas interactivosExpulsores: evitan la monopolizacin de la CPURound-Robin, prioridades, mltiples colas, SPN (aging)Sistemas de tiempo realMonotnico en frecuenciaDeadline ms prximo el siguiente

  • *Planificacin de procesos (5)Sistemas BatchPrimero en llegar, primero servido (FCFS)First-Come First-Served Es simple. Tiempo de espera variable. Raramente el mnimo. Desaprovecha los dispositivos de E/STrabajo Tiempo necesario1242333Tiempo medio de espera = (0+24+27) / 3 = 17024 2730

  • *Trabajo ms corto el prximo (SJF) Shortest Job First Ofrece siempre el mnimo tiempo medio de esperaTrabajo Tiempo necesario1242333

    Tiempo medio de espera = (0+3+6) / 3 = 3Tr. 2 Tr. 3 Trabajo 1036 30frmula para el tiempo medio de retorno: (4a+3b+2c+d) / 4Planificacin de procesos (6)Sistemas Batch

  • *Trabajo ms corto el prximo (SJF)Contraejemplo 01234567A(2)B(4)C(1)D(1)E(1)Con SJF: A, B, C, D, Etiempo medio de retorno: 23/5 = 4,6

    Con otro: B, C, D, E, Atiempo medio de retorno: 22/5 = 4,4Planificacin de procesos (7)Sistemas Batch

  • *Menor tiempo restante, el siguiente (SRTN)Shortest Remaining Time Next Variante expulsora del SJF Cuando llega un trabajo nuevo, se compara su peticin de tiempo con

    el tiempo que le queda al actual, seleccionndose el pr. con menor t. Favorece a los trabajos nuevos

    01234567A(2)B(4)C(1)D(1)E(1)Tiempo medio de retorno?Planificacin de procesos (8)Sistemas Batch

  • *Planificacin a tres nivelesPlanificacin de procesos (9)Sistemas Batch

  • *Round-Robin Todos los procesos tienen la misma importanciaA cada proceso se le asigna un quantum de tiempo (rodaja de CPU) Tamao del quantum? Si demasiado pequeo, poco aprovechamiento CPU Si demasiado grande, pobre tiempo de respuesta

    Planificacin de procesos (10)Sistemas Interactivos

  • *Por prioridadesInteractivo (expulsor o no)Cada proceso tiene asignada una prioridadSe selecciona el proceso ms prioritarioPosible inanicin de los procesos menos prioritarios. Solucin:Decrementar cada tic la prioridad del proceso ejecutndoseRound-Robin entre procesos de la misma prioridadAsignacin de prioridades: esttica o dinmicaEsttica: por pago, por clases de usuariosDinmica: 1/ F, /* F = fraccin consumida del ltimo quantum */Clases de prioridadPlanificacin de procesos (11)Sistemas Interactivos

  • *Por prioridades (clases de prioridad)

    Planificacin de procesos (12)Sistemas Interactivos

  • *Mltiples colas

    CTSS: clases de prioridad:1 clase: 1 quantum2 clase: 2 quantum3 clase: 4 quantumSi un proceso agota si quantum, se pasa a la siguiente clase menorEjemplo: un proceso necesita 100 quanta.1, 2, 4, 8, 16, 32, 647 intercambiosCuando un proceso se convierte en interactivo: a la clase ms altaXDS 940: 4 clases de prioridad:Terminal, I/O, short quantum, long quantum

    Planificacin de procesos (13)Sistemas Interactivos

  • *Shortest Process Next (envejecimiento)Variante del SJF para interactivo, expulsor

    SJF genera el mnimo tiempo medio de esperaSe puede aplicar SJF a sistemas interactivos?Algoritmo de envejecimiento (aging)Estimacin actual basada en comportamiento pasadoPrimer comando: T0Segundo comando: T1Estimacin del siguiente: aT0 + (1-a)T1 (0 < a < 1) Si a=1/2, sumar el nuevo valor a la estimacin actual y dividir por 2.Planificacin de procesos (14)Sistemas Interactivos

  • *Planificacin de procesos (15)Sistemas Tiempo RealDado un sistema conm eventos aperidicos, tal queevento i occurre con periodo Pi y precisa Ci segundos

    El sistema es planificable siTiempo real riguroso (hard) y tiempo real moderado (soft)

    Eventos: peridicos o aperidicos

  • *Planificacin de procesos (16)Poltica frente a MecanismoSeparar qu se puede hacer de cmo hacerloUn proceso puede saber cul de sus threads hijos son los ms importantes y asignarles prioridad

    Algoritmo de planificacin parametrizadoMecanismo en el ncleo del s.o.

    Los procesos de usuario ponen el valor de los parmetrosLos procesos de usuario indican la poltica

  • *Planificacin de procesos (17)Planificacin de threads

  • *Planificacin de procesos (18)Planificacin de threads

    *La seccin 2.4 no entra para el examen: no es una asignatura de programacin concurrente, aunque se deben dominar los conceptos.*

    *Creo que podemos eliminar cualquier referencia a Windows y poner los ejemplos solo con Unix.*

    *

    *

    *

    *

    *

    *

    *

    *

    *

    *

    *

    *

    *

    *

    *

    *

    *La seccin 2.2.5 solo indica la posibilidad de que existan implementaciones hbridas pero no aclara cmo. La seccin 2.2.6 muestra el mecanismo de up-call, que entiendo no es imprescindible para entender los threads, aunque s para implementarlos. La seccin 2.2.7 muestra los threads pop-up que no me parece relevante. La seccin 2.2.8 tambin me parece anecdtica.*

    *Entiendo que estos constructores de concurrencia se lo cuentan en la asignatura (LPSI) en la que dan programacin concurrente.