la planificación so

26
CONCEPTOS DE PLANIFICACION: La planificación hace referencia a un conjunto de políticas y mecanismos incorporados al SO que gobiernan el orden en que se ejecutan los trabajos que deben ser completados por el sistema informático. Un planificador es un módulo del SO que selecciona el siguiente trabajo a admitir en el sistema y el siguiente proceso que tomara el control sobre el procesador. El objetivo primario optimizar el rendimiento del sistema. Medidas de Rendimiento y los Criterios de Optimización. UTILIZACIÓN DEL PROCESADOR: La utilización del procesador es la fracción de tiempo durante la cual el procesador se encuentra activo ejecutando algún proceso de usuario del propio SO.

Upload: andrei-ccahuana-ignacio

Post on 16-Dec-2015

225 views

Category:

Documents


0 download

DESCRIPTION

La planificación hace referencia a un conjunto de políticas y mecanismos incorporados al SO que gobiernan el orden en que se ejecutan los trabajos que deben ser completados por el sistema informático.

TRANSCRIPT

CONCEPTOS DE PLANIFICACION:

La planificacin hace referencia a un conjunto de polticas y mecanismos incorporados al SO que gobiernan el orden en que se ejecutan los trabajos que deben ser completados por el sistema informtico. Un planificador es un mdulo del SO que selecciona el siguiente trabajo a admitir en el sistema y el siguiente proceso que tomara el control sobre el procesador. El objetivo primario optimizar el rendimiento del sistema.

Medidas de Rendimiento y los Criterios de Optimizacin.

UTILIZACIN DEL PROCESADOR:La utilizacin del procesador es la fraccin de tiempo durante la cual el procesador se encuentra activo ejecutando algn proceso de usuario del propio SO. El objetivo es mantener al procesador ocupado tanto tiempo como sea posible. De esta forma, se conseguir que los factores de utilizacin de los restantes componentes tambin sean elevados obtenindose con ello buenas medidas de rendimiento.

PRODUCTIVIDAD:La productividad se refiere a la cantidad de trabajo completada por unidad de tiempo.Un modo de expresarla es definindola como el nmero de trabajos de usuario ejecutados por una unidad de tiempo. Cuanto mayor sea este nmero, ms trabajo aparentemente est siendo ejecutado por el sistema.

TIEMPO DE RETORNO:El tiempo de retorno TR se define como el tiempo que transcurre desde el momento en que un trabajo o programa es remitido al sistema hasta que es totalmente completado por el mismo. Es decir, el tiempo de retorno TR es el tiempo consumido por el proceso dentro del sistema y puede ser expresado como la suma del tiempo de servicio o tiempo de ejecucin + el tiempo de espera.

TR=TS+TETIEMPO DE ESPERA:El tiempo de espera TE es el tiempo que un proceso o trabajo espera de la asignacin de algn recurso o de que tenga lugar algn evento. En este tiempo tambin se incluyen el periodo de espera por la obtencin del propio procesador debido a la competencia con otros procesos en un sistema con multiprogramacin.

TIEMPO DE RESPUESTA:El tiempo de respuesta en sistemas interactivos se define como el tiempo que transcurre desde el momento en que se introduce el ltimo carcter de una orden que desencadena la ejecucin de un programa o transaccin hasta que aparece el primer resultado en el terminal. Generalmente tambin se le denomina tiempo de respuesta de terminal.En sistemas en tiempo real, el tiempo de respuesta es esencialmente una latencia y se define como el tiempo que transcurre desde el momento en que un suceso interno o externo es sealado hasta que se ejecuta la primera instruccin de su correspondiente rutina de servicio. A este tiempo suele denominrsele tiempo de respuesta al proceso.

Programacin Concurrente.Grafosde precedencia.El trminoprogramacinconcurrente o simplemente concurrencia se refiere a la ejecucin paralela de instrucciones o procesos (aunque sea pseudo-paralela se debern tener en cuenta las mismas consideraciones). Resulta conveniente revisar primero lo referente a las instrucciones.Suponga que se dispone de unprocesadorcon varias unidades funcionales para realizar las instrucciones o simplemente se tienen mltiplesCPUy se desean ejecutar engrupode instrucciones pertenecientes a unprograma.

S1: a = x + y;S2: b = z + 1;S3: c = a - b;S4: w = c + 1;

Lgicamente la instruccin c = a - b no puede ser ejecutada hasta que no hayan sido realizadas la S1 y la S2 de forma tal quelos valoresde a y b hayan sido calculados. Lo mismo ocurre con S4 con respecto a S3. Encambiolas instrucciones a = x + y, y b = z + 1 se pueden ejecutar concurrentemente debido a que una no depende de la otra.Lo importante de notar en este ejemplo es que dentro de unprocesoexisten restricciones de precedencia entre las distintas instrucciones. Para esquematizar estas situaciones se hace uso de los llamados grafos de precedencia.Un grafo de precedencia es un grafo dirigido y sin ciclos donde los nodos corresponden a instrucciones. Un arco desde un nodo Si a un nodo Sj significa que la instruccin Sj solo puede ser ejecutada despus que se realice la Si.Por ejemplo, en las instrucciones antes indicadas se tendra:

Otro ejemplo de grafo de precedencia podra ser:

POLITICAS DE PLANIFICACION:Planificacin de procesos en Sistemas Operativos.Conjunto de polticas y mecanismos incorporados alsistema operativo, a travs de un mdulo denominado planificador, que debe decidir cul de los procesos en condiciones de ser ejecutado conviene ser despachado primero y qu orden de ejecucin debe seguirse. Esto debe realizarse sin perder de vista su principal objetivo que consiste en el mximo aprovechamiento del sistema, lo que implica proveer un buen servicio a los procesos existentes en un momento dado.Objetivos de la Planificacin de procesosLa Planificacin de procesos tiene como principales objetivos la equidad, la eficacia, el tiempo de respuesta, el tiempo de regreso y el rendimiento. Equidad:Todos los procesos deben ser atendidos. Eficacia:El procesador debe estar ocupado el 100% del tiempo. Tiempo de respuesta:El tiempo empleado en dar respuesta a las solicitudes del usuario debe ser el menor posible. Tiempo de regreso:Reducir al mnimo el tiempo de espera de los resultados esperados por los usuarios por lotes. Rendimiento:Maximizar el nmero de tareas que se procesan por cada hora.Algoritmos de PlanificacinPrimero en llegar primero en ser servido:Conocido como FCFS (First Come First Served). Este algoritmo emplea una cola de procesos, asignando un lugar a cada proceso por el orden de llegada. Cuando el proceso llega es puesto en su lugar en la cola despus del que lleg antes que l y se pone en estado de listo. Cuando un proceso comienza a ejecutarse no se interrumpe su ejecucin hasta que termina de hacerlo.Prioridad al ms corto:Su nombre es SJF (Shortest Job First). El proceso que se encuentra en ejecucin cambiar de estado voluntariamente, o sea, no tendr un tiempo de ejecucin determinado para el proceso. A cada proceso se le asigna el tiempo que usar cuando vuelva a estar en ejecucin, y se ir ejecutando el que tenga un menor tiempo asignado. Si se da el caso de que dos procesos tengan igual valor en ese aspecto emplea el algoritmo FCFS.Round Robin:A cada proceso se le asigna un tiempo determinado para su ejecucin, el mismo tiempo para todos. En caso de que un proceso no pueda ser ejecutado completamente en ese tiempo se continuar su ejecucin despus de que todos los procesos restantes sean ejecutados durante el tiempo establecido. Este es un algoritmo basado en FCFS que trata la cola de procesos que se encuentran en estado de listos como una cola circular.Planificacin por prioridad:En este tipo de planificacin a cada proceso se le asigna una prioridad siguiendo un criterio determinado, y de acuerdo con esa prioridad ser el orden en que se atienda cada proceso.Planificacin garantizada:Para realizar esta planificacin el sistema tiene en cuenta el nmero de usuarios que deben ser atendidos. Para un nmero "n" de usuarios se asignar a cada uno un tiempo de ejecucin igual a 1/n.Planificacin de Colas Mltiples:El nombre se deriva de MQS (Multilevel Queue Schedulling). En este algoritmo la cola de procesos que se encuentran en estado de listos es dividida en un nmero determinado de colas ms pequeas. Los procesos son clasificados mediante un criterio para determinar en qu cola ser colocado cada uno cuando quede en estado de listo. Cada cola puede manejar un algoritmo de planificacin diferente a las dems.Tiempos:En la Planificacin de procesos se tiene en cuenta diferentes tiempos que pueden ser calculados, como son el "Tiempo de espera medio", el "Tiempo de retorno del proceso" y el "Tiempo de retorno medio".Tiempo de espera medio:Es el promedio de tiempos en que los procesos estn en estado de listos. En algoritmos FCFS este tiempo suele ser bastante largo. En algoritmos SJF para los procesos largos este tiempo suele ser muy grande, pues se estarn ejecutando constantemente los procesos ms cortos y los ms largos se encontrarn constantemente en espera, por lo que pueden entrar en inanicin. En Planificacin por prioridad los procesos de prioridad baja podran no ejecutarse nunca. Para dar solucin a este problema el envejecimiento de un programa eleva su prioridad.Tiempo de retorno del proceso:Es el tiempo que transcurre desde la creacin de un proceso hasta que termina la ejecucin del programa que le dio lugar.Tiempo de retorno medio:Es la suma de los tiempos de retorno de cada uno de los procesos dividida entre la cantidad de procesos.

CONDICIONES DE BERNSTEINPara poder determinar si dos conjuntos de instrucciones se pueden ejecutar de forma concurrente, se definen en primer lugar los siguientes conjuntos: L (Sk) = {a1, a2,..,an}, como el conjunto de lectura del conjunto de instrucciones Sk y que est formado por todas las variables cuyos valores son referenciados (se leen) durante la ejecucin de las instrucciones en Sk. E (Sk) = {a1, a2,..an}, como el conjunto de escritura del conjunto de instrucciones Sk y que est formado por todas las variables cuyos valores son referenciados (se escriben) durante la ejecucin de las instrucciones en Sk.Para que dos conjuntos de instrucciones Si y Sj se puedan ejecutar concurrentemente, se tiene que cumplir que:1. L () E ( ) = 2. E () L ( ) = 3. E () E ( ) = Como ejemplo supongamos que tenemos:S1 a; = x + y;S2 a; = z - 1;S3 a; = a - b;S4 a; = c + 1;Utilizando las condiciones de Bernstein veremos qu sentencias pueden ejecutarse de formas concurrentes y cules no. Para ello, en primer lugar calculamos los conjuntos de lectura y escritura:L (S1) = {x, y} E (S1) = {a}L (S2) = {z} E (S2) = {b}L (S3) = {a, b} E (S3) = {c}L (S4) = {c} E (S4) = {w}Ahora aplicamos las condiciones de Bernstein a cada par de sentencias:Entre S1 y S2:1. L () E ( ) = 2. E ( ) L ( ) = 3. E () E ( ) =

Entre S1 y S3:1. L () E ( ) = 2. E () L ( ) = 3. E () E ( ) = Entre S1 y S4:1. L () E ( ) = 2. E () L ( ) = 3. E () E ( ) = Entre S2 y S4:1. L ( ) E ( ) = 2. E ( ) L ( ) = 3. E ( ) E ( ) = Entre S2 y S3:1. L ( ) E ( ) = 2. E ( ) L ( ) = 3. E ( ) E ( ) = Entre S3 y S4:1. L ( ) E ( ) = 2. E ( ) L ( ) = 3. E ( ) E ( ) = De todo esto se deduce la siguiente tabla en la que puede verse qu pares de sentencias pueden ejecutarse de forma concurrente:

Una vez que sabemos qu se puede y qu no se puede ejecutar concurrentemente, se hace necesario algn tipo de notacin para especificar qu partes de un programa pueden ejecutarse concurrentemente y qu partes no.

TIPOS DE PLANIFICACIN

El afn de la planificacin del procesador consiste en asignar los procesos al procesador o los procesadores para que sean ejecutados en algn momento, de forma que se cumplan objetivos del sistema tales como el tiempo de respuesta, la productividad y la eficiencia del procesador. En muchos sistemas, la actividad de planificacin se divide en tres funciones in-dependientes: planificacin a largo, medio y corto plazo. Los nombres hacen referencia a la frecuencia relativa con la que son ejecutadas estas funciones.La figura 8.1 relaciona las funciones de planificacin con el diagrama de transicin de es- tados de un proceso. La planificacin a largo plazo se lleva a cabo al crear un proceso nuevo. La creacin de un nuevo proceso parte de la decisin de si aadir un proceso al conjunto de procesos activos. La planificacin a medio plazo forma parte del proceso de intercambio y tiene como origen la decisin de aadir un proceso a los que se encuentran, al menos parcialmente, en memoria principal y, por tanto, disponibles para ejecutar. La planificacin a corto plazo es la decisin de qu proceso en estado Listo ser el que ejecute a continuacin. En la figura 8.2 se reorganiza el diagrama de transicin de estados para representar grficamente el anidamiento de las funciones de planificacin.La planificacin afecta al rendimiento del sistema, pues determina qu proceso esperar y qu proceso continuar. Este punto de vista es el que se presenta en la figura 8.3, que muestra las colas involucradas en las transiciones de estado de un proceso. Fundamentalmente, la planificacin no es sino una gestin de dichas colas que minimice la espera y optimice el rendimiento del entorno.

Planificacin a largo plazo:La planificacin a largo plazo determina cules son los programas admitidos en el sistema. De este modo, se controla el grado de multiprogramacin. Una vez admitido, un trabajo o un programa de usuario se convierten en un proceso y es aadido a la cola del planificador a corto plazo. En algunos sistemas, un proceso recin creado comienza en situacin de descargado de la memoria principal, en cuyo caso se aade a la cola del planificador a medio plazo.En un sistema de proceso por lotes o bien en la parte de proceso por lotes de un sistema operativo de propsito general, los procesos recin incorporados se encaminan hacia el disco y permanecen detenidos en una cola de procesamiento por lotes. El planificador a largo plazo crear procesos a partir de la cola cuando sea posible. Dos decisiones entran en juego en este sistema. Primero, el planificador debe decidir si el sistema operativo puede acoger algn proceso ms. Segundo, el planificador debe decidir qu trabajos son aceptados y se convierten en procesos. Considrense un momento estas dos decisiones.La decisin de cundo crear un nuevo proceso viene dada, en general, por el grado de multiprogramacin. Cuantos ms procesos se crean, menor es el porcentaje de tiempo en el que cada proceso puede ejecutar. As pues, el planificador a largo plazo puede limitar el grado de multiprogramacin para ofrecer un servicio satisfactorio al conjunto de procesos actual. Cada vez que finaliza un trabajo, el planificador puede tomar la decisin de aadir uno o ms trabajos" nuevos. Adems, si la fraccin de tiempo que el procesador est desocupado excede un cierto umbral, se puede volver a invocar al planificador a largo plazo.La decisin de cul va a ser el siguiente proceso a admitir puede basarse en un simple algoritmo primero en llegar/primero en servirse (FCFS, First-come, First-served) o bien puede basarse en alguna herramienta de gestin de la actividad del sistema. El criterio empleado puede tener en cuenta prioridades, tiempos de ejecucin esperados y exigencias de E/S. Por ejemplo, si se encuentra disponible la informacin, el planificador puede intentar mantener una combinacin de procesos con mayor carga de E/S. Adems, en un intento de equilibrar el uso de la E/S, la decisin puede tomarse de- pendiendo del recurso de E/S que se solicite.Para programas interactivos en un sistema de tiempo compartido, cuando un usuario intenta conectarse al sistema, se genera una solicitud de crear un proceso. Los usuarios de tiempo compartido no pueden ser puestos simplemente en cola y hacerles esperar hasta que el sistema pueda aceptarlos. Por el contrario, el sistema operativo acepta todas las llegadas autorizadas hasta que el sistema se sature de acuerdo con alguna medida predefinida. Llegado este punto, las solicitudes de conexin se responden con un mensaje que indica que el sistema est completo y que debe intentarse ms tarde.

Planificacin a medio plazo:La planificacin a medio plazo forma parte de la funcin de intercambio. Los temas relacionados se tratan en los captulos 3 y 6. Generalmente, la decisin de cargar un proceso en memoria principal se basa en la necesidad de controlar el grado de multiprogramacin. En un sistema que no emplee memoria virtual, la gestin de memoria tambin es un punto a tratar. As pues, la decisin de carga en memoria tendr en cuenta las necesidades de memoria del proceso descargado.Planificacin a corto plazo:El planificador a largo plazo se ejecuta con relativa poca frecuencia, tomando una primera decisin sobre si tomar o no un nuevo proceso y cul tomar. El planificador a medio plazo se ejecuta con algo ms de frecuencia, para tomar la decisin del intercambio. El planificador a corto plazo, tambin conocido como distribuidor (dispatcher), es el de ejecucin ms frecuente y toma decisiones con un mayor detalle sobre el proceso que se ejecutar a continuacin.El planificador a corto plazo se ejecuta cuando ocurre un suceso que puede conducir a la interrupcin del proceso actual o que ofrece la oportunidad de expulsar de la ejecucin al proceso actual en favor de otro. Como ejemplos de estos sucesos se tienen: Interrupciones del reloj Interrupciones de E/S Llamadas al sistema operativo Seales

Programacin Concurrente1. Qu es la programacin concurrente?Se conoce por programacin concurrente a la rama de la informtica que trata de las tcnicas de programacin que se usan para expresar el paralelismo entre tareas y para resolver los problemas de comunicacin y sincronizacin entre procesos. El principal problema de la programacin concurrente corresponde a no saber en qu orden se ejecutan los programas (en especial los programas que se comunican). Se debe tener especial cuidado en que este orden no afecte el resultado de los programas.2. Cobegin y Coend.La ejecucin concurrente de los procesos la indicaremos mediante la estructura cobegin/coend. La palabra cobegin indica el comienzo de la ejecucin concurrente de los procesos que se sealan hasta la sentencia coend. Veamos un ejemplo:S1; COBEGINS2;S3;COENDS4;Esto quiere decir que:Primeramente se debe ejecutar S1, y no se puede ejecutar en paralelo con nada.S2 y S3 se pueden ejecutar en paralelo, luego de ejecutado S1S4 se ejecutar al terminar S2 y S3, y no se puede ejecutar en paralelo con nada.Veamos un ejemplo de un programa no consistente: el orden de ejecucin de las sentencias afecta el resultado.J= 10;COBEGINPrint J;J = 1000;COENDPrint J;Si se ejecutara primero la sentencia Print J entonces se imprimira 10 1000. Pero si se ejecutara primero la sentencia J=1000 entonces se imprimira 1000 10. El resultado no es el mismo, por lo cual el programa es inconsistente.

3. Seccin crtica y mutua exclusinEl mtodo ms sencillo de comunicacin entre los procesos de un programa concurrente es el uso comn de unas variables de datos. Esta forma tan sencilla de comunicacin puede llevar, no obstante, a errores en el programa ya que el acceso concurrente puede hacer que la accin de un proceso interfiera en las acciones de otro de una forma no adecuada.Para evitar este tipo de errores se pueden identificar aquellas regiones de los procesos que acceden a variables compartidas y dotarlas de la posibilidad de ejecucin como si fueran una nica instruccin. Se denomina Seccin Crtica a aquellas partes de los procesos concurrentes que no pueden ejecutarse de forma concurrente o, tambin, que desde otro proceso se ven como si fueran una nica instruccin. Esto quiere decir que si un proceso entra a ejecutar una seccin crtica en la que se accede a unas variables compartidas, entonces otro proceso no puede entrar a ejecutar una regin crtica en la que acceda a variables compartidas con el anterior.Las secciones crticas se pueden mutuo excluir. Para conseguir dicha exclusin se deben implementar protocolos software que impidan o el acceso a una seccin crtica mientras est siendo utilizada por un proceso.4. Semforos: ConceptoDijkstra dio en 1968 una solucin al problema de la exclusin mutua con la introduccin del concepto de semforo binario. Est tcnica permite resolver la mayora de los problemas de sincronizacin entre procesos y forma parte del diseo de muchos sistemas operativos.Un semforo binario es un indicador (S) de condicin que registra si un recurso est disponible o no. Un semforo binario slo puede tomar dos valores: 0 y 1. Si, para un semforo binario, S = 1 entonces el recurso est disponible y la tarea lo puede utilizar; si S = 0 el recurso no est disponible y el proceso debe esperar.Los semforos se implementan con una cola de tareas a la cual se aaden los procesos que estn en espera del recurso. As pues, un semforo binario se puede definir como un tipo de datos especial que slo puede tomar los valores 0 y 1, con una cola de tareas asociada y con slo tres operaciones para actuar sobre l: INIT (S, val): inicializa al semforo en el valor val (0 1)P(S): if S = 1 thenS := 0elseSuspender la tarea que hace la llamada y ponerla en la cola de tareasV(S): if la cola de tareas est vaca thenS := 1elseReanudar la primera tarea de la cola de tareas

La operacin INIT se debe llevar a cabo antes de que comience la ejecucin concurrente de los procesos ya que su funcin exclusiva es dar un valor inicial al semforo.Un proceso que corre la operacin P y encuentra el semforo a 1, lo pone a 0 y prosigue su ejecucin. Si el semforo est a 0 el proceso queda en estado de bloqueado hasta que el semforo se libera.Cuando se ejecuta la operacin V puede haber varios procesos en la lista o cola. El proceso que la dejar para pasar al estado listo depender del esquema de gestin de la Cola. Si no hay ningn proceso en espera del semforo este se deja libre (S := 1) para el primero que lo requiera.El semforo binario resulta adecuado cuando hay que proteger un recurso que pueden compartir varios procesos, pero cuando lo que hay que proteger es un conjunto de recursos similares, se puede usar una versin ms general de semforo que lleve la cuenta del nmero de recursos disponibles. En este caso el semforo se inicializa con el nmero total de recursos disponibles (N) y las operaciones P y V se disean de modo que se impida el acceso al recurso protegido por el semforo cuando el valor de ste es menor o igual que cero. Cada vez que se solicita y obtiene un recurso, el semforo se decrementa y se incrementa cuando que uno de ellos se libera.Las operaciones que tenemos son las mismas, con algunas diferencias en su semntica:INIT (S, val): inicializa al semforo en el valor val (puede ser cualquier valor)P(S): if S > 0 thenS = S -1;elseSuspender la tarea que hace la llamada y ponerla en la cola de tareasV(S): if la cola de tareas est vaca thenS = S +1;elseReanudar la primera tarea de la cola de tareas5. Semforos: mutua exclusinLa exclusin mutua se realiza fcilmente utilizando semforos. La operacin P se usar como procedimiento de bloqueo antes de acceder a una seccin crtica y la operacin V como procedimiento de desbloqueo. Se utilizarn tantos semforos como clases de secciones crticas se establezcan.process P1:P (S) ;Seccin CrticaV (S) ;(* resto del proceso *)end P1;process P2:P (S) ;Seccin CrticaV (S) ;(* resto del proceso *)end P2;process Principal:INIT(S,1);COBEGINP1;P2;COENDend Principal;Con esta estructura, el primer proceso que ejecute P(S) pone a S en cero, pasa a ejecutar la seccin crtica y generar que el otro proceso, cuando quiera acceder a la seccin critica, se bloquee.Cuando el primer proceso termine la seccin crtica, ejecutar V(S), liberando al otro proceso bloqueado y permitindole ejecutar su seccin crtica.Si tuviramos n procesos, y no quisiramos que se ejecuten ms de m secciones crticas simultneamente, basta con cambiar INIT(S,m).6. Semforos: Problema Productor ConsumidorEste problema aparece en distintos lugares de un sistema operativo y caracteriza a aquellos problemas en los que existe un conjunto de procesos que producen informacin que otros procesos consumen, siendo diferentes las velocidades de produccin y consumo de la informacin. Este desajuste en las velocidades, hace necesario que se establezca una sincronizacin entre los procesos de manera que la informacin no se pierda ni se duplique, consumindose en el orden en que es producida.Para ello se considera un buffer comn, del que el consumidor toma datos y donde el productor los coloca. Se debe mutuo-excluir, porque ambos, productor y consumidor, pueden modificarlo.Cuando el productor desea colocar un dato en el buffer y este est lleno, el productor se quedar bloqueado hasta que exista espacio disponible en el buffer.Cuando el consumidor desea tomar un dato en el buffer y este est vaco, el consumidor se quedar bloqueado hasta que exista algn dato disponible en el buffer.process Productor:repeatd= producirDato();P(libres);P(S);AgregarBuffer(d);V(S);V(ocupados);Forever;end Productor;process Consumidor:repeatP(ocupados);P(S);d = SacarDato();V(S);V(libres);consumirDato(d);Forever;end Consumidor;5process Principal:INIT(libres, Tamao_Buffer);INIT(ocupados, 0);INIT(S,1);COBEGINProductorConsumidorCOENDend Principal;Se necesitarn como variables compartidas los semforos S, ocupados y libres, que representarn:S ser el semforo para mutuo-excluir la seccin crtica correspondiente a modificar el buffer.Ocupados ser el semforo que contabilizar la cantidad de datos que hay en el buffer.Libres ser el semforo que contabilizar la cantidad de lugares libres que le restan al buffer.7. Semforos: Problema Lector - EscritorOtro problema famoso es el de los lectores y escritores, que modela el acceso a una base de datos. Supongamos una base de datos, con muchos procesos que compiten por leer y escribir en ella. Se puede permitir que varios procesos lean de la base de datos al mismo tiempo, pero si uno de los procesos est escribiendo (es decir, modificando) la base de datos, ninguno de los dems debera tener acceso a sta, ni siquiera los lectores.En esta solucin, el primer lector que obtiene el acceso a la base de datos realiza un P sobre el semforo wrt.. Los lectores siguientes slo incrementan un contador, Cant_Lectores. Al salir los lectores, stos decrementan el contador, y el ltimo en salir realiza un V sobre el semforo, lo que permite entrar a un escritor bloqueado, si existe.Una hiptesis implcita en esta solucin es que los lectores tienen prioridad sobre los escritores. Si surge un escritor mientras varios lectores se encuentran en la base de datos el escritor debe esperar. Pero si aparecen nuevos lectores, y queda al menos un lector accediendo a la base de datos, el escritor deber esperar hasta que no haya ms lectores interesados en la base de datos.process Escritor:repeatP(wrt);Escribir();V(wrt);Forever;end Escritor;process Lector:repeatP(S);Cant_Lectores ++;If (Cant_Lectores == 1)P(wrt);V(S);Leer();P(S);Cant_Lectores --;If (Cant_Lectores == 0)V(wrt);V(S);Forever;end Lector;process Principal:INIT(wrt, 1);INIT(S,1);Int Cant_Lectores = 0;COBEGINLector;.Lector;Escritor;.Escritor;COENDend Principal;Se necesitarn como variables compartidas los semforos S y wrt, que representarn:S ser el semforo para mutuoexcluir la seccin critica correspondiente a modificar la variable compartida Cant_Lectores.Wrt ser el semforo que indicar cuando se habilita a escribir y cuando se debe esperar.8. Semforos: Problema de los filsofos que cenanCinco filsofos se sientan alrededor de una mesa y pasan su vida cenando y pensando. Cada filsofo tiene un plato de fideos y un tenedor a la izquierda de su plato. Para comer los fideos son necesarios dos tenedores y cada filsofo slo puede tomar los que estn a su izquierda y derecha. Si cualquier filsofo coge un tenedor y el otro est ocupado, se quedar esperando, con el tenedor en la mano, hasta que pueda coger el otro tenedor, para luego empezar a comer.Si dos filsofos adyacentes intentan tomar el mismo tenedor a una vez, se produce una condicin de carrera: ambos compiten por tomar el mismo tenedor, y uno de ellos se queda sin comer.Si todos los filsofos cogen el tenedor que est a su derecha al mismo tiempo, entonces todos se quedarn esperando eternamente, porque alguien debe liberar el tenedor que les falta. Nadie lo har porque todos se encuentran en la misma situacin (esperando que alguno deje sus tenedores). Entonces los filsofos se morirn de hambre. Este bloqueo mutuo se denomina interbloqueo o deadlock.El problema consiste en encontrar un algoritmo que permita que los filsofos nunca se mueran de hambre.Veamos una posible Solucin:process Principal:INIT(Comedor, 4);For (int i=0; i