Description

TAREA 1COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS 5.1. Enumere cuatro elementos de diseño 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 función de planificación, tratada en la parte Cuatro. • Memoria: la mayoría de los sistemas operativos emplean esquemas de memoria virtual. • Archivos. • Dispositivos de E/S. • Todo sistema operativo debe proteger los datos y los recursos físicos de cada proceso contra injerencias no intencionadas de otros procesos. Esto supone emplear técnicas 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 ejecución de otros procesos concurrentes. 5.2. ¿En que tres contextos se presentan la concurrencia? La concurrencia se puede presentarse en tres contextos diferentes: • Múltiples aplicaciones: la multiprogramación se creo para permitir que el tiempo de procesador de la máquina fuese compartido dinámicamente entre varias aplicaciones activas. • Aplicaciones estructuradas : como ampliación de los principios del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes. • Estructura del sistema operativo: Las mismas ventajas de estructuración son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos están implementados como un conjunto de procesos o hilos. 5.3. ¿Cuáles son los requisitos básicos para la ejecución de procesos concurrentes? 1. Tiempo de procesador: es la función de planificación, tratada en la parte cuatro. 2. Memoria: la mayoría de los sistemas operativos emplean esquemas de memoria virtual. 3. Archivos . Almacena la información 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 demás; estos son procesos independientes que no están pensados para operar juntos. Ej: la multiprogramación de varios procesos independientes. Sus posibles problemas de control son la exclusión mutua, interbloqueo (recursos renovables y la inanición). 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 cooperación para compartir el objeto común. 3. Los procesos tienen un conocimiento directo de los otros los procesos son capaces de comunicarse con los demás por el identificador de proceso y están diseñados para trabajar conjuntamente en alguna actividad. Estos procesos también muestran cooperación. • ¿Cuál es la diferencia entre procesos en competencia y procesos en cooperación? La diferencia entre procesos en competencia y procesos en cooperación es que los procesos concurrentes entran en conflicto cuando compiten por el usos del mismo recurso. No hay intercambio de información entre los procesos en competencia. Sin embargo, la ejecución de un proceso puede influir en el comportamiento de los procesos que compiten. le permite al proceso solicitante realizar la solicitud en forma de mensaje y continuar. supóngase que cada proceso necesita acceder a ambos recursos para llevar a cabo una parte de su función. • Un proceso permanece en su sección crítica sólo por un tiempo finito. recibiendo información de estado. . • No bloqueante: nadie debe esperar el send no bloqueante es la forma más natural para muchas tareas de programación concurrente. Son más sencillos de implementar y puede demostrase que tienen la misma potencia de expresión que los semáforos generales. • ¿Cuál es la diferencia entre los semáforos débiles y los robustos? La diferencia es que el semáforo débil no especifica el orden en el que se retiran los procesos de la cola. y enviando o recibiendo datos. • Cuando ningún proceso está en su sección crítica cualquier proceso que solicite entrar en la suya debe poder hacerlo sin dilación. • Bloqueante: tanto el emisor como el receptor se bloquean hasta que se entrega el mensaje. • ¿Qué es un monitor? Un monitor es son estructuras de un lenguaje de programación que ofrecen una funcionalidad equivalente a la de los semáforos y que son más fáciles de controlar. Por ejemplo si se usa para solicitar una operación de salida. Durante el curso de la ejecución. • ¿Cuál es la diferencia entre los semáforos generales y los binarios? La diferencia es que un semáforo binario sólo puede tomar los valores 0 y 1. p2 y p3 necesitan acceder periódicamente al recurso R. • Un proceso no debe poder solicitar acceso a una sección crítica para después ser demorado indefinidamente. cada proceso enviara órdenes al dispositivo de E/S. se desbloquea un proceso bloqueado por una operación wait. • La operación SIGNAL incrementa el valor del semáforo. • ¿Cuál es la diferencia entre bloqueador y no bloqueador con relación a los mensajes? La diferencia es que tanto el emisor como el receptor pueden ser bloqueantes o no bloqueantes. • La operación wait disminuye el valor del semáforo. • No se deben hacer suposiciones sobre la velocidad relativa de los procesos o el número de procesadores. esta técnica se conoce como rendezvous. el proceso que ejecuta el wait se bloquea. • Enumere los tres problemas de control asociados a la competencia entre procesos y defina brevemente cada uno de ellos • Exclusión mutua: dos o más procesos quieren acceder a un único recurso no compatible como una impresora. debe tener permiso para entrar en ella en un instante dado.Mientras que el caso de cooperación comprende los procesos que interactúan con otros sin tener conocimiento explícito de ellos. Mientras que la robusta emplea la política FIFO en donde el proceso que ha estado bloqueado durante más tiempo se libera de la cola. no puede permitirse el interbloqueo o la inanición. • Un proceso que se interrumpe en una sección no crítica debe hacerlo sin interferir con los otros procesos. Si el valor se hace negativo. • Inanición: tres procesos p1. • ¿Qué operaciones se pueden hacer sobre un semáforo? Las operaciones que se pueden realizar sobre un semáforo son: • Un semáforo puede iniciarse con un valor no negativo. • Enumere los requisitos para la exclusión mutua Los requisitos para la exclusión mutua son: • Debe cumplirse la exclusión mutua: sólo un proceso de entre todos los que poseen secciones críticas por el mismo recurso u objeto compartido. • Interbloqueo: Dos procesos P1 y P2 y dos recursos R1 y R2. Si el valor no es positivo. P0 pone turno a 1 y P1 pone turno a 0 */ a turno = ( turno + 1 ) % n /* n= números de procesos */ Evaluar el algoritmo cuando el número de procesos que ejecutan concurrentemente es mayor de dos. 2. Si tenemos varios procesos concurrente con un algoritmo de esta forma se estará viendo solamente que la sección critica estará libre cuando el residuo de la división del total de los procesos sea un numero exactamente divisible entre la cantidad n de procesos. for (int j=0. j<>n. while ((numero[j] !=0) && (numero[j]. int numero[n]. respectivamente. } } Los vectores eleccion y numero se inicia a falso y a 0. nos habla de cómo se trata a los clientes en las panaderías. Este algoritmo también nos dice que si el P[i . j) <> (numero[i]. El i-esimo elemento de cada vector puede ser leído y modificado por el proceso i. cambiando la sentencia ejecutada cuando se abandona la sección crítica de turno = 1 – i /* es decir. Otro método de software para la exclusión mutua es el algoritmo de la panadería de Lamport. /* seccion critica */. En este caso “numero” es el número de procesos o clientes a atender y “eleccion” será el proceso o cliente elegido. llamado así porque está basado en la costumbre de las panaderías y de otras tiendas en las que cada cliente recibe un número al llegar. El proceso con el número más pequeño será atendido primero. escrito para un número de arbitrario de procesos. eleccion[i] = falso. i)) { }. lo que permite servirles por turnos. pero solo puede ser leído por otros procesos. Cada vez que haya un proceso se le dará un número. el arreglo numero le asignara una etiqueta numérica a cada proceso y el eleccion solo dirá si la región critica esta ocupada o no. La notación (a. numero[i] = 0. numero[i] = 1 + max(numero[ ]. while (cierto) { eleccion[i] = cierto. ningún lector puede leerlo. ¿Cuáles son las condiciones asociadas en general asociadas con el problema de las lecturas/escrituras? • Cualquier número de lectores pueden leer el archivo simultáneamente. • Si un escritor esta accediendo al archivo. b) < (c. • Sólo puede escribir en el archivo un escritor en cada instante. j++) { while (eleccion[j]) { }.13. describir el algoritmo con palabras. Considérese el algoritmo de Dekker. d) se define como: (a<c) or (a = c and b<d) 1. Problemas del Texto 1. n).5. /* resto */. El algoritmo es como sigue: booleano eleccion[n]. Este algoritmo trata de algo común. pero no hay ninguno esperando. En la sección de salida vemos que el Pi asigna 0. Demostrar que respeta la exclusión mutua. 1. pasaj_libre := 0 process pasajero(i := 1 to num_pasajeros) do true -> dormir(int(random(1000*tiempo_paseo))) P(coche_vacio). • El algoritmo de la panadería. el coche debe esperar. V(tomar_coche). \begin{literalmente} Recurso Parque-Jurasico () sem coche_vacio := 0.. Los pasajeros dan vueltas por el museo durante un tiempo y después se ponen en fila para dar un paseo en un coche de safari. y (numero[i].i) < (numero[k]. los que quieren subir deben esperar. tomar_coche := 0. La operabilidad de ambos logaritmos esta dada para brindar soluciones mediante software. 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. V(coche_lleno) dormir(int (random(1000*tiempo_recorrido)) V(pasaj_libre) od end coche end Parque_Jurasico \end{literalmente} . Hay m pasajeros y n coches monoplazas.. P(tomar_coche). coche_lleno := 0. 3. Demostrar que este algoritmo evita el interbloqueo.k).. sino lo hace Pj (P=numero).. ya que la sección critica estará disponible para que sea usada por otro proceso. Cuando el coche está disponible. mas no así direcciones físicas asignadas directamente en la memoria. a < c or si a = c y b < d max(a0. si un coche está listo para recoger pasajeros. carga un pasajero y recorre el parque durante un tiempo aleatorio. • El algoritmo de Peterson.• ] y el P[j] toman el mismo numero y que i es diferente de j. Use semáforos para sincronizar los procesos de los m pasajeros con los n coches. 1. Recuerde que P y V corresponden con wait y signal . Determinar si el siguiente código es correcto. La exclusión mutua esta siendo respetada ya que el algoritmo solo permite que un proceso de los n existente entren a la sección critica y que los otros esperen a que esta sección este libre para entrar. entonces Pi entra primero. Si nos basamos en este supuesto y en lo dicho anteriormente este algoritmo no permitirá el interbloqueo. Si los n coches están todos dando vueltas a los pasajeros. Demostrar que los siguientes métodos de software para la exclusión mutua no dependen de la exclusión mutua básica del nivel de acceso a la memoria. P(coche_lleno) P(pasaj_libre) od end pasajero process coche(j:=1 to num_coches) do true -> V(coche_libre).ak) es un número b tal que: b >= ai para i=0. los cuales usaran direcciones de memoria que serán dadas por el Sistema Operativo. O sea que el hardware no formara parte directa de la solución de la exclusión mutua. 4. Ignorar la sintaxis y las declaraciones ausentes de variables..k Si Proceso[i] está dentro SC es que Proceso[k] ha escogido un numero[k]!= 0. 6. tomar_coche. Al ir bajando en la ejecución del programa vemos que a la hora de enviar una señal para la inserción de otro proceso en el buffer se vera siempre en 0. Si Santa Claus despierta y encuentra y encuentra tres duendes en la puerta de su taller. Resuelva este problema por método de semáforos. porque es mas importante poner su trineo a punto (se supone que los renos no quieren dejar trópico y que permanecen allí hasta el ultimo momento posible). wait(s)  Signal(s).16). Estos semáforos le envían la señal de wait o signal a los procesos (pasajeros) para que se ejecuten (tomen el bus). signal(e) Si nos basamos en el algoritmo del Productor-Consumidor del libro de Stalling (figura 5.  Usan los barberos siempre la misma silla? La misma silla será utilizada. en primera instancia el programa puede tomarlo como si ya el consumidor ha tomado ya el proceso. Los semáforos serán coche_vacio. los duendes sólo pueden despertarle cuando son tres los que tienen problemas. wait(s)  Signal(s). o sea no habrá una señal de que se ha insertado un proceso. Santa Claus duerme en su taller del Polo Norte y sólo puede despertarse por (1) los nueve renos que vuelven de sus vacaciones en el Pacifico Sur o (2) algún duende que tiene dificultades para hacer juguetes. en lo que se ve se usan tres semáforos y un contador de procesos (pasajeros). junto con el último reno que vuelve al trópico. al momento que se liberó la silla. cualquier otro que desee visitar a Santa Claus debe esperar a que vuelvan. Cuando tres duendes van a plantear sus problemas. signal(n)  Wait(n). Responda a las siguientes cuestiones relativas a la barbería equitativa:  Requiere el código que cobre el pago de un corte de pelo a un cliente el mismo barbero que lo terminó? Si se coloca en el código que el mismo barbero sea el que cobre el corte. El último reno en llegar debe avisar a Santa Claus mientras los otros esperan calentitos en un refugio antes de ser enjaezados al trineo. será liberado el barbero el cual estará dispuesto para atender otro cliente. coche_lleno.Según mi punto de vista la lógica tiene sentido. Este problema demuestra el modo en que se usan tres semáforos para coordinar tres tipos de procesos. podemos ver que las funciones declaradas se ejecutan mediante caída libre. 7. Esto puede llevar a una gran espera y retrazar todo el funcionamiento. 5. ya que existe una relación entre el barbero y la silla. para permitir que Santa Claus duerme. Santa Claus decide que los duendes pueden esperar hasta después de Navidad. semáforo re = 0 semáforo en = 0 semáforo enj = 1 semáforo noenj = 1 semáforo en-cuar = 1 semáforo salir = 1 . La codificación utilizada es un poco enredada pero se tiene la lógica. al momento de hacer dichos cambios estaremos cambiando el significado del programa. la política utilizada para definir los semáforos es bastante buena. Analizando el algoritmo para la parte del consumidor el primer wait entrará en 1. Considérese el algoritmo de semáforos. ¿Cambiara el significado del programa si se intercambian las siguientes sentencias?  Wait(e). el proceso (cliente) se demorara más tiempo con el barbero y dejara a los otros procesos esperando más tiempo. Si tomamos la función productor y cambiamos wait(e) por wait(s) el wait del tamaño de buffer estará en 1 siempre y si el tamaño requerido por el proceso es mayor puede generar errores. cada uno de ellos formado por un vector de espacios para mensajes. . wait(salir). en-espera(). wait(enj). } /* Santa Claus */ while (true) { despertado(). implementando el paso de mensajes por medio de semáforos. wait(en-cuar). } void despertado() { wait(enj) entregar() wait(noenj). Demostrar que el paso de mensajes y los semáforos tienen una funcionalidad equivalente: a. } void re-regre(){ if (r==8) { wait(enj). } void despertado() & en-listo() { wait(en-cuar). Pista: haga uso de un área de elementos compartidos para contener buzones. wait(noenj). entregar(). else re = re + 1. consul(). re-regre(). consulta() wait(salir) } 8. } /* Renos */ while (true) { navidad()./* Enanos */ while (true) { hacer(). } void en-espera() { if (e<>3) then { wait(en) en=en + 1 else en-listo(). implementando un semáforo por medio del paso de mensajes. msjp) msj. msjp) consumir(mjsp) send(producir. void productor () { while (cierto) { receive(producir. null) } } void mens() { buzon1(producir) buzon2(consumir) producir = producir + 1 consumir = consumir + 1 } . Pista: cree un proceso independiente para la sincronización./* 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. = producir( ) send(consumir. msjp) } } void consumidor () { while (cierto) { receive(consumir.
Copyright © 2024 DOKUMEN.SITE Inc.