Semafaro Ensayo

12
REPÚBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA DEFENSA UNIVERSIDAD NACIONAL EXPERIMENTAL POLITÉCNICA DE LA FUERZA ARMADA BOLIVARIANA NÚCLEO TÁCHIRA EL PLANIFICADOR DE PROCESOS SEMÁFOROS Materia: Sistemas Operativos Alumna: Castillo Fernández, Keidy Mayerlin C.I. V- 23.136.754 Sección: VIIS-01N Docente: Ramírez, María

Transcript of Semafaro Ensayo

REPBLICA BOLIVARIANA DE VENEZUELAMINISTERIO DEL PODER POPULAR PARA LA DEFENSAUNIVERSIDAD NACIONAL EXPERIMENTAL POLITCNICADE LA FUERZA ARMADA BOLIVARIANANCLEO TCHIRA

EL PLANIFICADOR DE PROCESOS SEMFOROS

Materia: Sistemas OperativosAlumna:Castillo Fernndez, Keidy MayerlinC.I. V- 23.136.754Seccin: VIIS-01NDocente:Ramrez, Mara

San Cristbal, Febrero de 2015INTRODUCCIN

Dos o ms procesos pueden cooperar por medio de simples seales, de forma que se pueda obligar a detenerse a un proceso en una posicin determinada hasta que reciba una seal especfica. Cualquier requisito complicado de coordinacin puede satisfacerse por medio de la estructura de seales adecuada. Para la sealizacin, se usan variables especiales llamadassemforos.Los semforos se emplean para permitir el acceso a diferentes partes de programas (llamados secciones crticas) donde se manipulan variables o recursos que deben ser accedidos de forma especial. Segn el valor con que son inicializados se permiten utilizar el recurso de forma simultnea.

SEMFOROSAutor 1. W. Dijkstra (1965) sugiri el uso de una variable entera para contar el nmero de seales de despertar, guardadas para un uso futuro. En su propuesta introdujo un nuevo tipo de variable, al cual l le llam semforo. Un semforo podra tener el valor 0, indicando que no se guardaron seales de despertar o algn valor positivo si estuvieran pendientes una o ms seales de despertar. Dijkstra propuso que se tuvieran dos operaciones, down y up (generalizaciones de sleep y wakeup, respectivamente). La operacin down en un semforo comprueba si el valor es mayor que 0. De ser as, disminuye el valor (es decir, utiliza una seal de despertar almacenada) y slo contina. Si el valor es 0, el proceso se pone a dormir sin completar la operacin down por el momento. Las acciones de comprobar el valor, modificarlo y posiblemente pasar a dormir, se realizan en conjunto como una sola accin atmica indivisible. Se garantiza que, una vez que empieza una operacin de semforo, ningn otro proceso podr acceder al semforo sino hasta que la operacin se haya completado o bloqueado. Esta atomicidad es absolutamente esencial para resolver problemas de sincronizacin y evitar condiciones de carrera. Las acciones atmicas, en las que un grupo de operaciones relacionadas se realizan sin interrupcin o en definitiva no se realizan, son en extremo importantes en muchas otras reas de las ciencias computacionales tambin.La operacin up incrementa el valor del semforo direccionado. Si uno o ms procesos estaban inactivos en ese semforo, sin poder completar una operacin down anterior, el sistema selecciona uno de ellos (al azar) y permite que complete su operacin down. As, despus de una operacin up en un semforo que contenga procesos dormidos, el semforo seguir en 0 pero habr un proceso menos dormido en l. La operacin de incrementar el semforo y despertar a un proceso tambin es indivisible. Ningn proceso se bloquea al realizar una operacin up, de igual forma que ningn proceso se bloquea realizando una operacin wakeup en el modelo anterior. Tipos de semforosDependiendo de la funcin que cumple el semforo, vamos a diferenciar los siguientes tipos: Semforo de exclusin mutua, inicialmente su contador vale 1 y permite que haya un nico proceso simultneamente dentro de la seccin crtica. Semforo contador, permiten llevar la cuenta del nmero de unidades de recurso compartido disponible, que va desde 0 hasta N. Semforo de espera, generalmente se emplea para forzar que un proceso pase a estado bloqueado hasta que se cumpla la condicin que le permite ejecutarse. Por lo general, el contador vale 0 inicialmente, no obstante, podra tener un valor distinto de cero.Ventajas e inconvenientesLa principal ventaja de los semforos frente a loscerrojoses que permiten sincronizar dos o ms procesos de manera que no se desperdician recursos de CPU realizando comprobaciones continuadas de la condicin que permite progresar al proceso.Los inconvenientes asociados al uso de semforos son los siguientes: Los programadores tienden a usarlos incorrectamente, de manera que no resuelven de manera adecuada el problema de concurrencia o dan lugar a interbloqueos. No hay nada que obligue a los programadores a usarlos. Los compiladores no ofrecen ningn mecanismo de comprobacin sobre el correcto uso de los semforos. Son independientes del recurso compartido al que se asocian.Debido a estos inconvenientes, se desarrollaron losmonitores.GranularidadNmero de recursos controlados por cada semforo. Hay de dos tipos: Granularidad fina: Un recurso por semforo. Hay un mayor grado de paralelismo, lo que puede mejorar la rapidez de ejecucin de la proteccin. Aunque a mayor nmero de semforos existe una mayor probabilidad de que se de un interbloqueo entre semforos, que no sera una mejora de lo que intentamos evitar. Granularidad gruesa: Un semforo para todos los recursos. Caso totalmente inverso al anterior: Ahora al tener un semforo no se produce interbloqueo entre ellos, aunque los tiempos de ejecucin son excesivamente largos.Autor 2Martha Martnez, los sistemas operativos diferencian a menudo entre semforos contadores y semforos binarios. El valor de un semforo contador puede variar en un dominio no restringido, mientras que el valor de un semforo binario solo puede ser 0 01. En algunos sistemas, los semforos binarios se conocen como cerrojos mutex, ya que son cerrojos que proporcionan exclusin mutua.Podemos usar semforos binarios para abordar el problema de la seccincrtica en el caso de mltiples procesos. Los semforos contadores se pueden usar para controlar el acceso a un determinado recurso formado por un nmero finito de instancias. El semforo se inicializa con el nmero de recursos disponibles. Cada proceso que desee usar un recurso ejecuta una operacin wait () en el semforo (decrementando la cuenta). Cuando un proceso libera un recurso, ejecuta una operacin signal()(incrementando la cuenta). Cuando la cuenta del semforo llega a 0, todos los recursos estarn en uso. Despus, los procesos que deseen usar un recurso se bloquearan hasta que la cuenta sea mayor que 0.Los semforos pueden ser usados para diferentes propsitos, entre ellos: Implementar cierres de exclusin mutua o locks Barreras Permitir a un mximo de N threads acceder a un recurso, inicializando el semforo en N Notificacin. Inicializando el semforo en 0 puede usarse para comunicacin entre threads sobre la disponibilidad de un recurso.

Autor 3La herramienta de sincronizacin ms general son los semforos. Estos son herramientas de sincronizacin de procesos que tiene asociada una estructura de datos (descriptor del semforo), una variable entera Id_semforo que almacena el valor del semforo y una cola de procesos detenidos en el semforo. Una de sus principales caractersticas es que cada operacin es indivisible (atmica). Debiendo ser ejecutada globalmente en todas sus fases sin intercalacin de ninguna otra.Las operaciones bsicas sobre los semforos son:1. Inicializar inicializada (valor, Id_semforo)Asigna a la variable asociada con el semforo el valor indicado como parmetro, inicializando el descriptor del semforo y la cola de procesos detenidos. El proceso llamador continuo.Se puede producir un error si no existe espacio para inicializar un nuevo descriptor de semforo.2. Esperarespera (id_ semforo)Cuando se realiza una operacin de espera, el valor de la variable asociada con el semforo ser el responsable de la sincronizacin entre los diversos procesos, de forma que si la variable Id_semforo>0 se permite el paso a los procesos incondicionalmente (el semforo esta verde), y en caso contrario Id_semforo =0, el proceso llamador pierde el control del procesador y es aadido a la cola del semforo (el semforo esta en rojo). SiId_semforo>0 EntoncesId_semforo:= id_semaforo-1; En caso contrario detiene_proceso_llamador_cola_sem; Se puede producir un error si realizamos la operacin sobre un semforo no inicializado.

3. sealizar sealiza(Id_semforo)Cuando se realiza esta operacin y hay procesos detenidos en la cola del semforo, el primero de la cola ser autorizado a continuar. Si la operacin se realiza sin procesos detenidos, la variable del semforo se incrementa. Si hay procesos detenidos en la cola del semforo entonces Pasar un proceso de la cola del semforo A la cola de procesos preparados En caso contrario Id_semforo:= id_semaforo+1 Se puede producir un error si realizamos la operacin sobre un semforo no inicializado.

CONCLUSIN

Un semforo debe inicializarse con un valor no negativo. Son un tipo de semforos utilizados cuando tenemos varias instancias de un mismo recurso. Este tipo de semforos se inicializa al nmero de instancias que tengamos. Los semforos que fueron introducidos inicialmente por Dijkstra (1968). Son componentes de muy bajo nivel de abstraccin, de fcil comprensin y con una gran capacidad funcional. Por el contrario, son unos componentes que por su bajo nivel de abstraccin resultan muy peligrosos de manejar y frecuentemente son causa de muchos errores. Con los semforos binarios hay que permanecer el menor tiempo posible en la seccin crtica. las operaciones UP no suponen suspensin, por lo tanto no son peligrosas. Para recibir una seal del semforo, los procesos ejecutan la primitiva wait(s); si la seal correspondiente an no se ha transmitido, el proceso es suspendido hasta que tenga lugar la transmisin.

REFERENCIAS

Autor 1: Tanenbaum, Andrew (2009). Sistemas Operativos Modernos 3 Edicin. Mxico. Editorial Pearson Educacin. Autor 2: Martnez, M. Sistemas Operativos. Instituto Tecnolgico de Veracruz. Extrado el 25 de febrero de 2015 desde http://sistemasoperativos.angelfire.com/html/2.4.2.1.html,Autor 3: Martnez P. Cabello M. DazJ.C. (1996). Sistemas Operativos Teora y Prctica. Espaa. EdicinDaz de Santos, S.A.(http://rodas.us.es/file/3b15ec90-421c-e145-3f4f c91ee707f37b/2/tema6_wimba_SCORM.zip/pagina_01.htm)(https://1984.lsi.us.es/wiki-ssoo/index.php/Sem%C3%A1foros)(https://aiu.edu/publications/student/spanish/180-207/SISTEMAS-OPERATIVOS-PROCESOS-CONCURRENTES-Unidad-III.html#t7).