SISTEMAS INFORMATICOS Y COMPUTACIONSISTEMAS OPERATIVOSSINCRONIZACION DE PROCESOSIntegrantes:Andrea MendozaAnita Salinas
Objetivos* Presentar el problema de las secciones criticas, cuyas soluciones pueden utilizarse para asegurar la coherencia de los datos compartidos* Presentar soluciones tanto software como hardware para el problema de las secciones criticas. * Presentar el concepto de transacción atónica y describir los mecanismos para garantizar la atomicidad
Sincronización de ProcesosUn proceso cooperativo  es aquel que puede afectar o verse afectado por otros procesos que estén ejecutándose en el sistema. Estos pueden compartir directamente un espacio de direcciones lógico (código o datos)  o compartir los datos solo a través de archivos o mensajes.
FundamentosSupongamos que deseamos modificar el algoritmo para remediar una deficiencia.  Nuestra solución permite que haya como máximo BUFFER_SIZE -1 elementos al buffer al mismo tiempo. La posibilidad es  añadir una variable entera counterinicializada con el valor de cero.Código para el proceso productor:While  (true){	/* Produce un elemento en nextProduced */while (counter == BUFFER_SIZE); /*No hace nada*/		buffer [in] = nextProduced;in= (in +1) % BUFFER_SIZE;counter ++;	}
Código para el proceso consumidor:While  (true){while (counter == 0);	 /*No hace nada*/nextConsumed= buffer [out];out= (out +1) % BUFFER_SIZE;counter --;		}La ejecución concurrente de “counter++ y “counter--” es equivalente a una ejecucion secuencial donde las instrucciones de menor nivel se intercalan en un cierto orden arbitrario  (pero el orden dentro de cada nivel se conserva)
Problema de la selección criticaConsideremos un sistema que consta de n procesos. Cada proceso tiene un segmento de código llamado sección critica, en el que el proceso puede modificar variables comunes, actualizar una tabla, escribir un archivo, etc.Dos procesos no pueden ejecutar su sección critica a la vez.Cualquier solución al problema de la sección critica deberá satisfacer los tres requisitos:Exclusion mutua.
Progreso
Espera limitada.Se usan dos métodos para gestionar las secciones criticas:Kernels apropiativos: Permite que un proceso sea desalojado mientras se esta ejecutando en modo kernel Kernels no apropiativos: No permite que un proceso en modo  kernel sea desalojado.
¿Por qué es preferible un kernel apropiativo a uno no apropiativo?Un kernel apropiativo es mas adecuado para la programación en tiempo real ya que permite a un proceso en tiempo real desalojar a un proceso que este ejecutando actualmente en el kernel
Solución de PetersonProporciona una buena descripción algorítmica de la resolución del problema de la sección critica e ilustra algunas de las complejidades asociadas al diseño del software que satisfaga los requisitos de exclusión mutua progreso y tiempo de espera limitado.La solución de Peterson restringe a dos procesos que van alternando la ejecución de sus secciones criticas y de sus secciones restantes.
La variable turn indica que proceso va a entrar en su sección critica.La matriz flag se usa para indicar si un proceso esta preparado para entrar en su sección critica. Propiedades:La exclusión mutua se conserva
El requisito del progreso se  satisface
El requisito de espera limitada se cumple.Hardware de sincronizaciónForma parte de la sección crítica y esta basada en la premisa de bloqueo(cerrojos)Prueba y modifica el contenido de una palabra	atómicamentebooleanTestAndSet(boolean &target) {booleanrv = *target;			*target= true;returnrv;			}
Ejemplo:En un entorno de un solo procesador pudiésemos impedir interrupciones, modificando una variable compartida asegurando así la secuencia actual de  instrucciones por orden y sin desalojo, este es el método que emplean los Kernels no apropiados.A diferencia de un entorno multiprocesador, si desactivamos las interrupciones consumimos mucho tiempo debido al paso de mensajes a todos los procesadores, retardando la entrada a la sección crítica y la eficiencia del sistema.
Por lo que los sistemas modernos proporcionan instrucciones especiales que permiten consultar y modificar el contenido de dos palabras atómicamente, como unidad de trabajo interrumpible.Tal es el caso de Exclusión Mutua con Test-and-Set		  Datos compartidos:booleanlock = false;			do{while(TestAndSetLock (&lock))			;  /*No hace nada*/				//sección criticalock= False;				 //sección restante			}while (TRUE);
Hardware de SincronizaciónAtómicamente intercambia (swap) dos variables.		void Swap(boolean &a, boolean &b) {booleantemp = a;				a = b;				b = temp;		}
Exclusión Mutua con Intercambio (Swap)Datos compartidos (inicializados a false):booleanlock;booleanwaiting[n];	  Proceso Pido {key = true;while (key == true)Swap(lock,key);//seccion criticalock = false;//sección restante}
SemáforosHerramienta de sincronización que no requiere de esperaSemáforo S – variable enteraPuede solo se puede acceder mediante dos operaciones indivisibles(atómicas)		operaciones:wait (S): // P: proberen = probarwhileS<= 0;			//no-op			S--;signal (S): // V:verhogen = incrementar			S++;
UtilizaciónExisten diferencias entre los semáforos  contadores y los semáforos binarios que trabajan con (0,1) también conocidos como cerrojos mutexya que proporcionan exclusión mutuaDatos compartidos:semaphoremutex; //inicialmente mutex = 1	Proceso Pi:do {waiting(mutex);//seccion criticasignal(mutex);//sección restante} while (TRUE);
ImplementaciónEs necesario dedinir un semáforo como un registrotypedefstruct {intvalue;structprocess *list;} semaphore;Suponiendo que hayan dos operaciones simples:block: suspende el proceso que lo invoco.wakeup(P) : reanuda la ejecución de un proceso P bloqueado

S Incronizacion De Procesos

  • 1.
    SISTEMAS INFORMATICOS YCOMPUTACIONSISTEMAS OPERATIVOSSINCRONIZACION DE PROCESOSIntegrantes:Andrea MendozaAnita Salinas
  • 2.
    Objetivos* Presentar elproblema de las secciones criticas, cuyas soluciones pueden utilizarse para asegurar la coherencia de los datos compartidos* Presentar soluciones tanto software como hardware para el problema de las secciones criticas. * Presentar el concepto de transacción atónica y describir los mecanismos para garantizar la atomicidad
  • 3.
    Sincronización de ProcesosUnproceso cooperativo es aquel que puede afectar o verse afectado por otros procesos que estén ejecutándose en el sistema. Estos pueden compartir directamente un espacio de direcciones lógico (código o datos) o compartir los datos solo a través de archivos o mensajes.
  • 4.
    FundamentosSupongamos que deseamosmodificar el algoritmo para remediar una deficiencia. Nuestra solución permite que haya como máximo BUFFER_SIZE -1 elementos al buffer al mismo tiempo. La posibilidad es añadir una variable entera counterinicializada con el valor de cero.Código para el proceso productor:While (true){ /* Produce un elemento en nextProduced */while (counter == BUFFER_SIZE); /*No hace nada*/ buffer [in] = nextProduced;in= (in +1) % BUFFER_SIZE;counter ++; }
  • 5.
    Código para elproceso consumidor:While (true){while (counter == 0); /*No hace nada*/nextConsumed= buffer [out];out= (out +1) % BUFFER_SIZE;counter --; }La ejecución concurrente de “counter++ y “counter--” es equivalente a una ejecucion secuencial donde las instrucciones de menor nivel se intercalan en un cierto orden arbitrario (pero el orden dentro de cada nivel se conserva)
  • 6.
    Problema de laselección criticaConsideremos un sistema que consta de n procesos. Cada proceso tiene un segmento de código llamado sección critica, en el que el proceso puede modificar variables comunes, actualizar una tabla, escribir un archivo, etc.Dos procesos no pueden ejecutar su sección critica a la vez.Cualquier solución al problema de la sección critica deberá satisfacer los tres requisitos:Exclusion mutua.
  • 7.
  • 8.
    Espera limitada.Se usandos métodos para gestionar las secciones criticas:Kernels apropiativos: Permite que un proceso sea desalojado mientras se esta ejecutando en modo kernel Kernels no apropiativos: No permite que un proceso en modo kernel sea desalojado.
  • 9.
    ¿Por qué espreferible un kernel apropiativo a uno no apropiativo?Un kernel apropiativo es mas adecuado para la programación en tiempo real ya que permite a un proceso en tiempo real desalojar a un proceso que este ejecutando actualmente en el kernel
  • 10.
    Solución de PetersonProporcionauna buena descripción algorítmica de la resolución del problema de la sección critica e ilustra algunas de las complejidades asociadas al diseño del software que satisfaga los requisitos de exclusión mutua progreso y tiempo de espera limitado.La solución de Peterson restringe a dos procesos que van alternando la ejecución de sus secciones criticas y de sus secciones restantes.
  • 11.
    La variable turnindica que proceso va a entrar en su sección critica.La matriz flag se usa para indicar si un proceso esta preparado para entrar en su sección critica. Propiedades:La exclusión mutua se conserva
  • 12.
    El requisito delprogreso se satisface
  • 13.
    El requisito deespera limitada se cumple.Hardware de sincronizaciónForma parte de la sección crítica y esta basada en la premisa de bloqueo(cerrojos)Prueba y modifica el contenido de una palabra atómicamentebooleanTestAndSet(boolean &target) {booleanrv = *target; *target= true;returnrv; }
  • 14.
    Ejemplo:En un entornode un solo procesador pudiésemos impedir interrupciones, modificando una variable compartida asegurando así la secuencia actual de instrucciones por orden y sin desalojo, este es el método que emplean los Kernels no apropiados.A diferencia de un entorno multiprocesador, si desactivamos las interrupciones consumimos mucho tiempo debido al paso de mensajes a todos los procesadores, retardando la entrada a la sección crítica y la eficiencia del sistema.
  • 15.
    Por lo quelos sistemas modernos proporcionan instrucciones especiales que permiten consultar y modificar el contenido de dos palabras atómicamente, como unidad de trabajo interrumpible.Tal es el caso de Exclusión Mutua con Test-and-Set Datos compartidos:booleanlock = false; do{while(TestAndSetLock (&lock)) ; /*No hace nada*/ //sección criticalock= False; //sección restante }while (TRUE);
  • 16.
    Hardware de SincronizaciónAtómicamenteintercambia (swap) dos variables. void Swap(boolean &a, boolean &b) {booleantemp = a; a = b; b = temp; }
  • 17.
    Exclusión Mutua conIntercambio (Swap)Datos compartidos (inicializados a false):booleanlock;booleanwaiting[n]; Proceso Pido {key = true;while (key == true)Swap(lock,key);//seccion criticalock = false;//sección restante}
  • 18.
    SemáforosHerramienta de sincronizaciónque no requiere de esperaSemáforo S – variable enteraPuede solo se puede acceder mediante dos operaciones indivisibles(atómicas) operaciones:wait (S): // P: proberen = probarwhileS<= 0; //no-op S--;signal (S): // V:verhogen = incrementar S++;
  • 19.
    UtilizaciónExisten diferencias entrelos semáforos contadores y los semáforos binarios que trabajan con (0,1) también conocidos como cerrojos mutexya que proporcionan exclusión mutuaDatos compartidos:semaphoremutex; //inicialmente mutex = 1 Proceso Pi:do {waiting(mutex);//seccion criticasignal(mutex);//sección restante} while (TRUE);
  • 20.
    ImplementaciónEs necesario dedinirun semáforo como un registrotypedefstruct {intvalue;structprocess *list;} semaphore;Suponiendo que hayan dos operaciones simples:block: suspende el proceso que lo invoco.wakeup(P) : reanuda la ejecución de un proceso P bloqueado
  • 21.
    Bloqueos Mutuos eInaniciónBloqueo mutuo (Deadlock) – dos ó más procesos están esperando indefinidamente por un evento que puede ser causado sólo por uno de los procesos que están en espera. Supongamos que: S y Q son dos semáforos inicializados a 1 P0 P1wait(S); wait(Q);wait(Q); wait(S); . . signal(S); signal(Q);signal(Q); signal(S);Inanición – bloqueo indefinido. Un proceso puede jamás ser removido de la cola de semáforos en la cual se encuentra suspendido.
  • 22.