You are on page 1of 7

TAREA 1

COMUNICACIN Y SINCRONIZACIN ENTRE PROCESOS 5.1. Enumere cuatro elementos de diseo para los cuales es necesario el concepto de concurrencia. Todo sistema operativo debe ser capaz de seguir la pista de los distintos procesos activos. Esto lo hace por medio de los bloques de control de procesos. Todo sistema operativo debe asignar y retirar los distintos recursos a cada proceso activo. Entre estos recursos se incluyen: Tiempo de procesador: es la funcin de planificacin, tratada en la parte Cuatro. Memoria: la mayora de los sistemas operativos emplean esquemas de memoria virtual. Archivos. Dispositivos de E/S. Todo sistema operativo debe proteger los datos y los recursos fsicos de cada proceso contra injerencias no intencionadas de otros procesos. Esto supone emplear tcnicas relativas a la memoria, archivos y dispositivos de E/S, que se estudian. Los resultados de un proceso deben ser independientes de la velocidad relativa a la que se realiza la ejecucin de otros procesos concurrentes. 5.2. En que tres contextos se presentan la concurrencia? La concurrencia se puede presentarse en tres contextos diferentes: Mltiples aplicaciones: la multiprogramacin se creo para permitir que el tiempo de procesador de la mquina fuese compartido dinmicamente entre varias aplicaciones activas. Aplicaciones estructuradas : como ampliacin de los principios del diseo modular y la programacin estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes. Estructura del sistema operativo: Las mismas ventajas de estructuracin son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos estn implementados como un conjunto de procesos o hilos. 5.3. Cules son los requisitos bsicos para la ejecucin de procesos concurrentes? 1. Tiempo de procesador: es la funcin de planificacin, tratada en la parte cuatro. 2. Memoria: la mayora de los sistemas operativos emplean esquemas de memoria virtual. 3. Archivos . Almacena la informacin 4. Dispositivos de E/S. 5.4. Enumere tres niveles de conocimiento entre procesos y defina brevemente cada uno de ellos. 1. Los procesos no tienen conocimiento de los dems; estos son procesos independientes que no estn pensados para operar juntos. Ej: la multiprogramacin de varios procesos independientes. Sus posibles problemas de control son la exclusin mutua, interbloqueo (recursos renovables y la inanicin). 2. Los procesos tienen un conocimiento indirecto de los otros los procesos no conocen necesariamente a los otros por sus identificadores de proceso, pero comparten el acceso a algunos objetos, como un buffer de E/S. Estos procesos muestran cooperacin para compartir el objeto comn. 3. Los procesos tienen un conocimiento directo de los otros los procesos son capaces de comunicarse con los dems por el identificador de proceso y estn diseados para trabajar conjuntamente en alguna actividad. Estos procesos tambin muestran cooperacin. Cul es la diferencia entre procesos en competencia y procesos en cooperacin? La diferencia entre procesos en competencia y procesos en cooperacin es que los procesos concurrentes entran en conflicto cuando compiten por el usos del mismo recurso. No hay intercambio de informacin entre los procesos en competencia. Sin embargo, la ejecucin de un proceso puede influir en el comportamiento de los procesos que compiten.

Mientras que el caso de cooperacin comprende los procesos que interactan con otros sin tener conocimiento explcito de ellos. Enumere los tres problemas de control asociados a la competencia entre procesos y defina brevemente cada uno de ellos Exclusin mutua: dos o ms procesos quieren acceder a un nico recurso no compatible como una impresora. Durante el curso de la ejecucin, cada proceso enviara rdenes al dispositivo de E/S, recibiendo informacin de estado, y enviando o recibiendo datos. Interbloqueo: Dos procesos P1 y P2 y dos recursos R1 y R2, supngase que cada proceso necesita acceder a ambos recursos para llevar a cabo una parte de su funcin. Inanicin: tres procesos p1, p2 y p3 necesitan acceder peridicamente al recurso R. Enumere los requisitos para la exclusin mutua Los requisitos para la exclusin mutua son: Debe cumplirse la exclusin mutua: slo un proceso de entre todos los que poseen secciones crticas por el mismo recurso u objeto compartido, debe tener permiso para entrar en ella en un instante dado. Un proceso que se interrumpe en una seccin no crtica debe hacerlo sin interferir con los otros procesos. Un proceso no debe poder solicitar acceso a una seccin crtica para despus ser demorado indefinidamente; no puede permitirse el interbloqueo o la inanicin. Cuando ningn proceso est en su seccin crtica cualquier proceso que solicite entrar en la suya debe poder hacerlo sin dilacin. No se deben hacer suposiciones sobre la velocidad relativa de los procesos o el nmero de procesadores. Un proceso permanece en su seccin crtica slo por un tiempo finito. Qu operaciones se pueden hacer sobre un semforo? Las operaciones que se pueden realizar sobre un semforo son: Un semforo puede iniciarse con un valor no negativo. La operacin wait disminuye el valor del semforo. Si el valor se hace negativo, el proceso que ejecuta el wait se bloquea. La operacin SIGNAL incrementa el valor del semforo. Si el valor no es positivo, se desbloquea un proceso bloqueado por una operacin wait. Cul es la diferencia entre los semforos generales y los binarios? La diferencia es que un semforo binario slo puede tomar los valores 0 y 1. Son ms sencillos de implementar y puede demostrase que tienen la misma potencia de expresin que los semforos generales. Cul es la diferencia entre los semforos dbiles y los robustos? La diferencia es que el semforo dbil no especifica el orden en el que se retiran los procesos de la cola. Mientras que la robusta emplea la poltica FIFO en donde el proceso que ha estado bloqueado durante ms tiempo se libera de la cola. Qu es un monitor? Un monitor es son estructuras de un lenguaje de programacin que ofrecen una funcionalidad equivalente a la de los semforos y que son ms fciles de controlar. Cul es la diferencia entre bloqueador y no bloqueador con relacin a los mensajes? La diferencia es que tanto el emisor como el receptor pueden ser bloqueantes o no bloqueantes. Bloqueante: tanto el emisor como el receptor se bloquean hasta que se entrega el mensaje; esta tcnica se conoce como rendezvous. No bloqueante: nadie debe esperar el send no bloqueante es la forma ms natural para muchas tareas de programacin concurrente. Por ejemplo si se usa para solicitar una operacin de salida, le permite al proceso solicitante realizar la solicitud en forma de mensaje y continuar.

5.13. Cules son las condiciones asociadas en general asociadas con el problema de las lecturas/escrituras? Cualquier nmero de lectores pueden leer el archivo simultneamente. Slo puede escribir en el archivo un escritor en cada instante. Si un escritor esta accediendo al archivo, ningn lector puede leerlo. Problemas del Texto 1. Considrese el algoritmo de Dekker, escrito para un nmero de arbitrario de procesos, cambiando la sentencia ejecutada cuando se abandona la seccin crtica de turno = 1 i /* es decir, P0 pone turno a 1 y P1 pone turno a 0 */ a turno = ( turno + 1 ) % n /* n= nmeros de procesos */ Evaluar el algoritmo cuando el nmero de procesos que ejecutan concurrentemente es mayor de dos. Si tenemos varios procesos concurrente con un algoritmo de esta forma se estar viendo solamente que la seccin critica estar libre cuando el residuo de la divisin del total de los procesos sea un numero exactamente divisible entre la cantidad n de procesos. 2. Otro mtodo de software para la exclusin mutua es el algoritmo de la panadera de Lamport, llamado as porque est basado en la costumbre de las panaderas y de otras tiendas en las que cada cliente recibe un nmero al llegar, lo que permite servirles por turnos. El algoritmo es como sigue: booleano eleccion[n]; int numero[n]; while (cierto) { eleccion[i] = cierto; numero[i] = 1 + max(numero[ ], n); eleccion[i] = falso; for (int j=0; j<>n; j++) { while (eleccion[j]) { }; while ((numero[j] !=0) && (numero[j], j) <> (numero[i], i)) { }; /* seccion critica */; numero[i] = 0; /* resto */; } } Los vectores eleccion y numero se inicia a falso y a 0, respectivamente. El i-esimo elemento de cada vector puede ser ledo y modificado por el proceso i, pero solo puede ser ledo por otros procesos. La notacin (a, b) < (c, d) se define como: (a<c) or (a = c and b<d) 1. describir el algoritmo con palabras. Este algoritmo trata de algo comn; nos habla de cmo se trata a los clientes en las panaderas. En este caso numero es el nmero de procesos o clientes a atender y eleccion ser el proceso o cliente elegido, el arreglo numero le asignara una etiqueta numrica a cada proceso y el eleccion solo dir si la regin critica esta ocupada o no. Cada vez que haya un proceso se le dar un nmero. El proceso con el nmero ms pequeo ser atendido primero. Este algoritmo tambin nos dice que si el P[i

] y el P[j] toman el mismo numero y que i es diferente de j, entonces Pi entra primero; sino lo hace Pj (P=numero). En la seccin de salida vemos que el Pi asigna 0. 1. Demostrar que este algoritmo evita el interbloqueo. a < c or si a = c y b < d max(a0,...ak) es un nmero b tal que: b >= ai para i=0,..k Si Proceso[i] est dentro SC es que Proceso[k] ha escogido un numero[k]!= 0, y (numero[i],i) < (numero[k],k). Si nos basamos en este supuesto y en lo dicho anteriormente este algoritmo no permitir el interbloqueo; ya que la seccin critica estar disponible para que sea usada por otro proceso. 1. Demostrar que respeta la exclusin mutua. La exclusin mutua esta siendo respetada ya que el algoritmo solo permite que un proceso de los n existente entren a la seccin critica y que los otros esperen a que esta seccin este libre para entrar. 3. Demostrar que los siguientes mtodos de software para la exclusin mutua no dependen de la exclusin mutua bsica del nivel de acceso a la memoria. El algoritmo de la panadera. El algoritmo de Peterson. La operabilidad de ambos logaritmos esta dada para brindar soluciones mediante software, los cuales usaran direcciones de memoria que sern dadas por el Sistema Operativo; mas no as direcciones fsicas asignadas directamente en la memoria. O sea que el hardware no formara parte directa de la solucin de la exclusin mutua. 4. El siguiente problema se emple una vez en un examen: Parque Jurasico est formado por un museo de dinosaurios y un parque excursiones de safari. Hay m pasajeros y n coches monoplazas. Los pasajeros dan vueltas por el museo durante un tiempo y despus se ponen en fila para dar un paseo en un coche de safari. Cuando el coche est disponible, carga un pasajero y recorre el parque durante un tiempo aleatorio. Si los n coches estn todos dando vueltas a los pasajeros, los que quieren subir deben esperar; si un coche est listo para recoger pasajeros, pero no hay ninguno esperando, el coche debe esperar. Use semforos para sincronizar los procesos de los m pasajeros con los n coches. Determinar si el siguiente cdigo es correcto. Ignorar la sintaxis y las declaraciones ausentes de variables. Recuerde que P y V corresponden con wait y signal . \begin{literalmente} Recurso Parque-Jurasico () sem coche_vacio := 0, tomar_coche := 0, coche_lleno := 0, pasaj_libre := 0 process pasajero(i := 1 to num_pasajeros) do true -> dormir(int(random(1000*tiempo_paseo))) P(coche_vacio); V(tomar_coche); P(coche_lleno) P(pasaj_libre) od end pasajero process coche(j:=1 to num_coches) do true -> V(coche_libre); P(tomar_coche); V(coche_lleno) dormir(int (random(1000*tiempo_recorrido)) V(pasaj_libre) od end coche end Parque_Jurasico \end{literalmente}

Segn mi punto de vista la lgica tiene sentido, en lo que se ve se usan tres semforos y un contador de procesos (pasajeros). Los semforos sern coche_vacio, tomar_coche, coche_lleno. Estos semforos le envan la seal de wait o signal a los procesos (pasajeros) para que se ejecuten (tomen el bus). La codificacin utilizada es un poco enredada pero se tiene la lgica, la poltica utilizada para definir los semforos es bastante buena. 5. Considrese el algoritmo de semforos. Cambiara el significado del programa si se intercambian las siguientes sentencias? Wait(e); wait(s) Signal(s); signal(n) Wait(n); wait(s) Signal(s); signal(e) Si nos basamos en el algoritmo del Productor-Consumidor del libro de Stalling (figura 5.16), podemos ver que las funciones declaradas se ejecutan mediante cada libre; al momento de hacer dichos cambios estaremos cambiando el significado del programa. Si tomamos la funcin productor y cambiamos wait(e) por wait(s) el wait del tamao de buffer estar en 1 siempre y si el tamao requerido por el proceso es mayor puede generar errores. Al ir bajando en la ejecucin del programa vemos que a la hora de enviar una seal para la insercin de otro proceso en el buffer se vera siempre en 0, o sea no habr una seal de que se ha insertado un proceso. Analizando el algoritmo para la parte del consumidor el primer wait entrar en 1, en primera instancia el programa puede tomarlo como si ya el consumidor ha tomado ya el proceso. 6. Responda a las siguientes cuestiones relativas a la barbera equitativa: Requiere el cdigo que cobre el pago de un corte de pelo a un cliente el mismo barbero que lo termin? Si se coloca en el cdigo que el mismo barbero sea el que cobre el corte, el proceso (cliente) se demorara ms tiempo con el barbero y dejara a los otros procesos esperando ms tiempo. Esto puede llevar a una gran espera y retrazar todo el funcionamiento. Usan los barberos siempre la misma silla? La misma silla ser utilizada, ya que existe una relacin entre el barbero y la silla; al momento que se liber la silla, ser liberado el barbero el cual estar dispuesto para atender otro cliente. 7. Este problema demuestra el modo en que se usan tres semforos para coordinar tres tipos de procesos. Santa Claus duerme en su taller del Polo Norte y slo puede despertarse por (1) los nueve renos que vuelven de sus vacaciones en el Pacifico Sur o (2) algn duende que tiene dificultades para hacer juguetes; para permitir que Santa Claus duerme, los duendes slo pueden despertarle cuando son tres los que tienen problemas. Cuando tres duendes van a plantear sus problemas, cualquier otro que desee visitar a Santa Claus debe esperar a que vuelvan. Si Santa Claus despierta y encuentra y encuentra tres duendes en la puerta de su taller, junto con el ltimo reno que vuelve al trpico, Santa Claus decide que los duendes pueden esperar hasta despus de Navidad, porque es mas importante poner su trineo a punto (se supone que los renos no quieren dejar trpico y que permanecen all hasta el ultimo momento posible). El ltimo reno en llegar debe avisar a Santa Claus mientras los otros esperan calentitos en un refugio antes de ser enjaezados al trineo. Resuelva este problema por mtodo de semforos. semforo re = 0 semforo en = 0 semforo enj = 1 semforo noenj = 1 semforo en-cuar = 1 semforo salir = 1

/* Enanos */ while (true) { hacer(); en-espera(); wait(en-cuar); consul(); wait(salir); } void en-espera() { if (e<>3) then { wait(en) en=en + 1 else en-listo(); } /* Renos */ while (true) { navidad(); re-regre(); wait(enj); entregar(); wait(noenj); } void re-regre(){ if (r==8) { wait(enj); else re = re + 1; } /* Santa Claus */ while (true) { despertado(); } void despertado() { wait(enj) entregar() wait(noenj); } void despertado() & en-listo() { wait(en-cuar); consulta() wait(salir) } 8. Demostrar que el paso de mensajes y los semforos tienen una funcionalidad equivalente: a. implementando el paso de mensajes por medio de semforos. Pista: haga uso de un rea de elementos compartidos para contener buzones, cada uno de ellos formado por un vector de espacios para mensajes.

/* productor consumidor */ cap = prod = 1 cons = 1 void productor () { while (cierto) producir() wait(e) wait(prod) signal(prod) mens() } } void consumidor () { while (cierto) { coger () wait(cons) signal(cons) mens() } } void mens() { msg[prod] = prod + 1 msg[cons] = cons + 1 } b. implementando un semforo por medio del paso de mensajes. Pista: cree un proceso independiente para la sincronizacin. void productor () { while (cierto) { receive(producir, msjp) msj. = producir( ) send(consumir, msjp) } } void consumidor () { while (cierto) { receive(consumir, msjp) consumir(mjsp) send(producir, null)

} } void mens() { buzon1(producir) buzon2(consumir) producir = producir + 1 consumir = consumir + 1 }

You might also like