sistemas operativos unidad iii administración de procesos

Download Sistemas Operativos Unidad III Administración de procesos

Post on 22-Jan-2016

229 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Sistemas OperativosUnidad IIIAdministracin de procesos

  • Administracin de procesosProcesos concurrentesProblemas clsicos de comunicacin y sincronizacinMecanismos de comunicacin y sincronizacinPaso de mensajesAspectos de implementacin de los mecanismos de sincronizacin

  • Procesos concurrentesPlataformas:Multiprogramacin en un nico procesador.Multiprocesador.Multicomputador (procesamiento distribuido)RazonesCompartir recursos fsicos.Compartir recursos lgicos.Almacenar los clculosModularidadComodidadMultiprogramacin con un solo CPUMultiprogramacin con dos CPUs

  • Procesos concurrentes (2)Tipos de procesos concurrentesIndependientesSe ejecuta sin requerir la ayuda o cooperacin de otros procesos.Ejemplo: el shell o intrprete de mandatos.CooperantesEstn diseados para trabajar conjuntamente en alguna actividad.Deben ser capaces de comunicarse entre ellosEjemplo: el compilador (gcc: precompila, compila y enlaza).

  • Procesos concurrentes (3)Interaccin entre procesosLos procesos comparten o compiten por el acceso a recursos fsicos o lgicos.Por ejemplo dos procesos independientes pueden competir por el acceso a disco.El SO debe garantizar que todos los procesos accedan ordenadamente a los recursos.Los procesos se comunican y sincronizan.Se trata de alcanzar un objetivo comnPor ejemplo al generar cdigo ejecutable los procesos de compilacin y ensamble deben comunicarse y sincronizarse.

  • Problemas clsicos de comunicacin y sincronizacinLa interaccin entre procesos plantea una serie de situaciones clsicas de comunicacin y sincronizacin:El problema de la seccin crticaEl problema del Productor-ConsumidorEl problema de los Lectores-EscritoresComunicacin Cliente-Servidor

  • Problemas clsicos de comunicacin y sincronizacin (2)El problema de la seccin crticaEs el de mayor frecuencia cuando se ejecutan n procesos concurrentes.Cada uno tiene un fragmento de cdigo: la seccin crtica.Slo uno de los procesos en cada instante puede ejecutar en la seccin crticaCuando un proceso est ejecutando en la seccin crtica, ningn otro puede hacerlo.Ejemplos:Generacin de un PID en un sistema mutiprocesador.Calcular la suma de los n primeros nmeros naturales de forma paralela con dos hilos.

  • Problemas clsicos de comunicacin y sincronizacin (3)Ejemplo 1: Generacin de un PID en un sistema multiprocesadorSi no existe sincronizacin se puede incurrir en el error de asignar el mismo PID a dos procesos distintos

  • Problemas clsicos de comunicacin y sincronizacin (4)Ejemplo 2: Calcular la suma de los n primeros nmeros naturales de forma paralela con dos hilos.

  • Problemas clsicos de comunicacin y sincronizacin (5)Solucin al problema de la seccin crticaLa estructura general de cualquier mecanismo para resolver el problema de la seccin crtica es:Entrada en la seccin crticaCdigo de la seccin crticaSalida de la seccin crticaLos tres requisitos que debe tener cualquier solucin del problema de la seccin critica son:Exclusin mutuaSi un proceso est ejecutando un cdigo de la seccin crtica, ningn otro proceso lo podr hacer.ProgresoSi ningn procesos esta ejecutando dentro de la seccin crtica, la decisin de qu proceso entra en la seccin se har sobre los procesos que desean entrar, tal decisin debe realizarse en un tiempo finito.Espera acotadaDebe haber un lmite en el nmero de veces que se permite que los dems procesos entren a ejecutar cdigo de la seccin crtica.

  • Problemas clsicos de comunicacin y sincronizacin (6)Problema del productor-consumidorUno o ms procesos, los productores, generan un cierto tipo de datos que son utilizados por otros procesos, los consumidores.Es necesario un mecanismo de comunicacin para que productores y consumidores intercambien informacin.Cuando el mecanismo de comunicacin se llena el productor debe dejar de producir.Cuando el mecanismo de comunicacin est vaco el lector debe esperar a que se produzca un dato

  • Problemas clsicos de comunicacin y sincronizacin (7)El problema de los lectores-escritoresExiste un determinado objeto que va a ser utilizado y compartido por una serie de procesos concurrentes.Algunos procesos solo acceden al objeto sin modificarlo y algunos acceden para modificarlo, lo que lleva a algunas restricciones:Solo se permite que un escritor tenga acceso al mismo tiempo.Se permite cualquier numero de lectores accediendo al mismo tiempo.

  • Problemas clsicos de comunicacin y sincronizacin (8)Comunicacin cliente-servidorExisten procesos llamados servidores que ofrecen una serie de servicios a otros proceso denominados clientes.El proceso servidor puede residir en la misma mquina o en una mquina distinta.Se utilizan tcnicas basadas en el paso de mensajes.

  • Mecanismos de comunicacin y sincronizacinEl SO ofrece una serie de servicios que permiten a los procesos comunicarse y sincronizarse.Principales mecanismos de comunicacin:Archivos.Tuberas.Variables en memoria compartida.Paso de mensajes.Principales mecanismos de sincronizacin:Tuberas.Semforos.Mutex y variables condicionales.Paso de mensajes.

  • Mecanismos de comunicacin y sincronizacin (2)ArchivosEs un mecanismo que puede utilizarse para comunicar procesos.Presenta las siguientes ventajas:Permite comunicar un nmero potencialmente ilimitado de proceso.Los servidores de archivos ofrecen servicios sencillos y fciles de utilizar.Tambin presenta una serie de inconvenientes:Es poco eficiente, la escritura y lectura a disco es lenta.Necesita de algn otro mecanismo que permita que los procesos se sincronicen en el acceso de los datos almacenados en el archivo.

  • Mecanismos de comunicacin y sincronizacin (3)TuberasEs un mecanismo de comunicacin y sincronizacin. Existen dos tipos:Tuberas sin nombre (pipe)Solo el proceso que la crea y sus descendientes pueden utilizarla.Tuberas con nombre (FIFO)Para los procesos que no guardan ninguna relacin de parentesco.Conceptualmente cada proceso ve a la tubera como un conducto con dos extremos, uno para insertar y otro para extraer datos de la tubera.

  • Mecanismos de comunicacin y sincronizacin (4)Comunicacin bidireccional con tuberas.

  • Mecanismos de comunicacin y sincronizacin (5)Escritura en una tuberaIntroduce los datos en orden FIFOSi tubera llena se bloquea el escritor.Si no hay lectores se retorna el error correspondiente.Lectura de una tuberaRecupera los datos en el orden en que se introdujeron.Si tubera vaca se bloquea el lector.Si la tubera almacena M bytes y se quieren leer n bytes, entonces:Si M n, se recuperan n bytesSi M < n, se recuperan M bytesSi no hay escritores y la tubera est vaca se retorna fin de archivoAmbas operaciones (escritura y lectura) son atmicas, es decir, si dos procesos intenta acceder al mismo tiempo, uno de ellos se bloquear.

  • Mecanismos de comunicacin y sincronizacin (6)Seccin crtica con tuberasLa solucin consiste en crear una tubera y escribir en ella un dato testigo.Escrito el dato testigo, los procesos protegen su cdigo de la seccin crtica.Ej:Leer dato de la tuberaCdigo correspondiente a la seccin crticaEscribir el dato en la tuberavoid main(void){ int fildes[2]; char c;

    pipe(fildes); write(fildes[1], &c, 1);

    if( fork() == 0){ for( ; ; ){ read( fildes[0], &c, 1); /*SECCION CRITICA*/ write( fildes[1], &c, 1); } } else{ for( ; ; ){ read( fildes[0], &c, 1); /*SECCION CRITICA*/ write( fildes[1], &c, 1); }}

  • Mecanismos de comunicacin y sincronizacin (7)Productor-consumidor con tuberasCuando el productor ha elaborado un elemento lo escribe en la tubera.Cuando el consumidor quiere procesar algn elemento lo lee de la tubera.void main(void){ int fildes[2]; int dato_p[4]; char dato_c;

    pipe(fildes);

    if( fork() == 0){ for( ; ; ){ /*PRODUCIR DATO p*/ write( fildes[1], dato_p, 4*sizeof(int)); } } else{ for( ; ; ){ read( fildes[0], &dato_c, sizeof(int)); /*CONSUMIR DATO p*/ }}

  • Mecanismos de comunicacin y sincronizacin (8)SemforosMecanismo de sincronizacin que se utiliza generalmente en sistemas con memoria compartida.Es un objeto con un valor enteroSe le puede asignar un valor inicial no negativo.Se accede mediante dos operaciones atmicas:waitsignalwait(s){ s = s-1; if( s < 0 ) { /*BLOQUEAR PROCESO*/ }}

    signal(s){ s = s+1; if( s

  • Mecanismos de comunicacin y sincronizacin (9)Seccin crtica con semforoswait(s); /*Entrada a la seccin crtica*/

    signal(s); /*Salida de la seccin crtica*/

  • Mecanismos de comunicacin y sincronizacin (10)Productor-Consumidor con semforosSe usa un buffer circular compartido por ambos procesos.Existen dos tipos de recursos: elementos y huecos. Un semforo por cada uno.Productor ( ){ int posicion = 0; for( ; ; ){ Producir un dato; wait (huecos); buffer[posicion] = dato; posicion = (posicion + 1) % TAMBUFF; signal (elementos); }}

    Consumidor ( ){ int posicion = 0; for( ; ; ){ wait (elementos); dato = buffer [posicion]; posicion = (posicion + 1) % TAMBUFF; signal (huecos); Consumir el dato; }}

  • Mecanismos de comunicacin y sincronizacin (11)Memoria compartidaPermite comunicar a procesos que se ejecutan en la misma mquina.Dos procesos acceden a una misma variable.

  • Mecanismos de comunicacin y sincronizacin (12)MutexSon mecanismos de sincronizacin especiales para hilos.Es un semforo binario con dos operaciones atmicas:lock(m) Intenta bloquear el mutex, si el mutex ya est bloqueado el hilo se suspende.unlock(m) Desbloquea el mutex, si existen procesos bloqueados en el mutex se desbloquea uno.variables condicionalesVariables de sincronizacin asociadas a un mutexConviene eje