Académique Documents
Professionnel Documents
Culture Documents
Activar y Desactivar
Peterson y TSL soluciones correctas, pero con espera activa. Prdida de tiempo en CPU, y efectos inesperados, como Problema de inversin de prioridad.
Sleep - wakeup
En vez de utilizar espera activa, se utilizan primitivas de comunicacin entre procesos que se bloquean, (sleep y wakeup). sleep es una llamada al sistema que hace que el invocador se bloquee, hasta que otro proceso lo active, con la llamada al sistema wakeup.
Semforos
Un semforo es una variable entera sobre la que se pueden realizar tres operaciones atmicas 1.- Asignacin de valores no negativos 2.- Wait o P o espera.- Comprueba que el valor del semforo es mayor que 0; si es as, decrementa el valor y contina. Si el valor es 0 el proceso se bloquea. 3.- signal o V o seal. Incrementa en una unidad el valor del semforo. Si hay algn proceso bloqueado en este semforo, se despierta a unos de los procesos.
Tipos de Semforos
Hay dos tipos de semforos. Binarios.- Solo pueden tomar el valor de 0 o 1. Generales.- 0 o cualquier valor positivo.
Mutexes
Versin simplificada del semforo, para administrar la exclusin mutua respecto a algn recurso o fragmento de cdigo compartido. Se utiliza mas en hilos (en espacio de usuario). Es una variable con 2 estados posibles (bloqueado o desbloqueado). Basta un bit para representarlo. (Ver algoritmo)
Mutexes
La diferencia con entrar_region en la instruccin TSL es que al invovar mutex_lock, si est ocupada la regin crtica, invoca a thread_yield, para ceder la CPU a otro proceso, en lugar de realizar una espera activa.
Monitores
Los monitores son estructuras de un lenguaje de programacin que ofrecen una funcionalidad equivalente a las de los semforos pero son ms fciles de controlar. La estructura de monitor se ha implementado en varios lenguajes de programacin como: Pascal concurrente, Modulo-2, Java, etc. En concreto, para una lista enlazada se puede necesitar un cierre que bloquee todas las listas enlazadas o bien un cierre por cada elemento de una lista.
Al ser un proceso por vez, el monitor puede ofrecer un servicio de exclusin mutua fcilmente. As una estructura de datos puede protegerse situndola dentro de un monitor.
Paso de Mensajes
Son 2 los requisitos bsicos que deben satisfacerse cuando los procesos interactan entre si. Ellos son:
La sincronizacin La comunicacin
Los procesos tienen que sincronizarse para cumplir la exclusin mutua, los procesos cooperantes pueden necesitar intercambiar informacin. El paso de mensajes es un mtodo que permite que se realice ambas funciones. Este mtodo tiene la ventaja de que es de fcil implementacin en sistemas distribuidos y tambin en sistemas de multiprocesador y monoprocesador de memoria compartida.
Paso de Mensajes
La funcionalidad real del paso de mensajes, generalmente, se da por medio de un par de primitivas:
send(destino, mensaje) receive(origen, mensaje)
Este es el conjunto mnimo de operaciones necesarias para que los procesos puedan dedicarse al paso de mensajes.
Sincronizacin
La comunicacin de un mensaje entre 2 procesos implica cierto nivel de sincronizacin entre ambos. El receptor no puede recibir un mensaje hasta que sea enviado por otro proceso. Adems hace falta especificar que le sucede a un proceso despus de ejecutar una primitiva SEND o RECEIVE.
Paso de Mensajes
Considrese en primer lugar la primitiva send. Cuando se ejecuta una primitiva send en un proceso, hay 2 posibilidades: o bien el proceso emisor se bloquea hasta que recibe el mensaje o no se bloquea. Igualmente cuando un proceso ejecuta una primitiva RECEIVE, existen 2 opciones: 1) Si previamente se ha enviado algn mensaje, este es recibido y continua la ejecucin. 2) Si no hay ningn mensaje esperando entonces: a) el proceso se bloquea hasta que llega un mensaje o, b) el proceso contina ejecutando, abandonando el intento de recepcin. El emisor y el receptor pueden ser bloqueantes o no bloqueantes.
Paso de Mensajes
Existen 3 tipos de combinaciones pero un sistema solo implementa uno o dos. I) Envo bloqueante, recepcin bloqueante: tanto el emisor como el receptor se bloquean hasta que llega el mensaje; esta tcnica se conoce como rendezvous. II) Envo no bloqueante, recepcin bloqueante: aunque el emisor puede continuar, el receptor se bloquea hasta que llega el mensaje solicitado. Es la combinacin ms til. III) Envo no bloqueante, recepcin no bloqueante: nadie debe esperar.
Paso de Mensajes
El send no bloqueante es la forma ms natural para muchas tareas de programacin concurrente. Un posible riesgo del send no bloquente es que por error puede llevar a una situacin en la que el proceso genere mensajes repetidamente. Para el receive, la versin bloqueante es la mas natural para muchas tareas de programacin concurrente. En general, un proceso que solicita un mensaje necesitara la informacin esperada antes de continuar.
Direccionamiento
Es necesario disponer de alguna forma de especificar en la primitiva send que proceso va a recibir el mensaje. La mayora de las implementaciones permiten a los procesos receptores indicar el origen del mensaje que se va a recibir. Los distintos esquemas para hacer referencia a los procesos en las primitivas send y receive se encuadran dentro de 2 categoras:
Direccionamiento Directo
La primitiva send incluye una identificacin especfica del proceso de destino. La primitiva receive se puede gestionar de 2 formas:
1.- Una posibilidad requiere que el proceso designe explcitamente un proceso emisor. El proceso debe conocer de antemano de que proceso espera un mensaje. 2.- En otros casos es imposible especificar el proceso de origen por anticipado.
Direccionamiento Indirecto
Los mensajes no se envan directamente del emisor al receptor, sino a una estructura de datos compartidos formada por colas, que pueden guardar los mensajes temporalmente, que se denominan BUZONES (mailboxes). Para que 2 procesos se comuniquen, uno enva mensajes al buzn apropiado y el otro los retira. Una ventaja de este tipo de direccionamiento es que se desacopla a emisor y receptor, asegurando mayor flexibilidad en el uso de mensajes.
Barreras
Mecanismo de sincronizacin para mas de un proceso. Algunas aplicaciones se dividen en fases y tienen la regla de que ningn proceso puede pasar a la siguiente fase antes de que todos los procesos estn listos para hacerlo. Este comportamiento puede lograrse colocando una barrera al final de cada fase. Cuando un proceso llega a la barrera, se bloquea hasta que todos los procesos han llegado a ella.
Barreras
Ver algoritmo para problema de relajacin en fsica o ingeniera.
CALENDARIZACIN
Despachador - Dispatcher
El S.O. es el encargado de distribuir el uso de la CPU entre los diferentes procesos. Para ello ha de encargarse de:
Conmutar la CPU entre los proceso (repartir el uso de la CPU entre los procesos). Evitar que los procesos puedan modificarse entre s o al S.O.
La parte del SO encargada de entregar la CPU a un proceso se denomina distribuidor o despachador (dispatcher) y constituye el mecanismo utilizado por el CPU para entregar el CPU a otro proceso.
Calendarizador
La decisin acerca del proceso al que se le entregar la CPU representa la poltica de planificacin y la parte del SO que la implementa se le conoce como planificador (calendarizador, scheduler). (El cdigo del despachador se ejecuta desde que inicia el SO, constituye su parte ms interna y est escrito en ensamblador, pues se ejecuta con mucha frecuencia)
Despachador
El despachador guarda en el PCB del proceso todo aquella informacin que sea necesaria para la reanudacin del proceso. (El contenido de los registros de la CPU, reas de memoria donde se encuentran los datos e instrucciones, etc).
Calendarizador
El Despachador se activa siempre que el calendarizador decide entregar la CPU a otro proceso. El calendarizador puede activarse en las siguientes circunstancias:
1. 2. 3. 4. Cambio de ejecucin a espera. Cambio de ejecucin a preparado. Cambio de espera a preparado. Fin de proceso.
En todas las situaciones el calendarizador podr seleccionar un nuevo proceso para que el despachador le ceda la CPU.
Apropiativa No Apropiativa
Si el calendarizador slo entra en accin cuando un proceso realiza una llamada al sistema o termina, la planificacin recibe el nombre de Planificacin no apropiativa, cooperativa o sin requisa. (Win 3.1 o Mac OS) Si la activacin se produce en todas las situaciones mencionadas, entonces se denomina Planificacin apropiativa, no cooperativa o con requisa. (Unix, Windows XP, VMS)
Algoritmos de Planificacin
El objetivo de la planificacin de CPU consiste en repartir el tiempo de CPU entre los procesos para aumentar el rendimiento, siendo el planificador o el calendarizador el encargado de decidir en que orden se deben atender las solicitudes de uso del procesador por parte de los procesos.
Criterios de Comparacin
Para poder comparar diferentes algoritmos de planificacin se establecen diversos criterios: Rendimiento o productividad.- Numero de tareas procesadas por unidad de tiempo. Tiempo de espera.- Tiempo que el proceso para esperando algn recurso incluido la CPU Tiempo de retorno o estancia.- Tiempo transcurrido desde que el trabajo entra en el sistema hasta que lo abandona.
Criterios de comparacin
Tiempo de Respuesta.- Tiempo tpico de sistemas interactivos, es el tiempo que transcurre desde que el usuario enva una peticin al sistema hasta que comienza a aparecer la respuesta. Grado de sobrecarga.- Fraccin de tiempo de CPU consumida por el dispatcher y el scheduler frente al tiempo total empleada en la ejecucin de los trabajos.
Tiempo de Espera
Los algoritmos de planificacin no afectan la cantidad de tiempo de CPU que necesita un proceso para ejecutarse, as como tampoco afectan al tiempo que se necesita para completar sus operaciones de E/S. Estos algoritmos afectan nicamente a la cantidad de tiempo que el proceso pasa en la cola de procesos preparados, por lo que en muchas ocasiones en lugar de medir el tiempo de retorno se mide el tiempo de espera de cada proceso.
Tipos de Planificadores
Si atendemos a la frecuencia con que se ejecutan los planificadores y al alcance en el tiempo de sus decisiones, podemos clasificarlos en tres tipos: Planificadores a largo plazo Planificadores a mediano plazo Planificadores a corto plazo
Algoritmos de Planificacin
Algunos de los algoritmos de planificacin mas comunes son: FCFS (First-come, First-served) SPN (Shortest Process Next) SRT SRTF ( Shortest Remaining Time First) Por prioridad Round Robin (circular)
FCFS
Primero en llegar, primero en servirse. En este algoritmo, las peticiones de uso de CPU se atienden en el mismo orden en que ingresan al sistema.
El primer proceso que pide la CPU es al primero que se le entrega. Se implementa tratando la cola de proceso preparados como una estructura FIFO. No apropiativo. Un proceso retiene la CPU hasta que finaliza o solicita una operacin de E/S Sus prestaciones dependen fuertemente del orden de llegada de los procesos y de sus caractersticas.
SPN
Primero el trabajo mas corto. (SJF). Consiste en asociar a cada trabajo la duracin de su tiempo en CPU y asignar a la CPU a aquel que presente el menor tiempo. Si hay varios con igual valor, se aplica FCFS entre ellos.
Si todos los trabajos llegan al sistema al mismo tiempo, este algoritmo minimiza el tiempo medio de espera. Puede producirse inanicin sobre procesos con tiempos de CPU grandes. No conocemos la duracin del siguiente tiempo del CPU.
SRT - SRTF
Shortest Remaining Time First.- Es una variante del SPN. Minimiza an mas los tiempos de retorno en caso de que no todos los trabajos a planificar estn disponibles en el instante inicial. Siempre que ingresa un trabajo, se compara la duracin de su siguiente rfaga frente al tiempo que le queda al proceso en la CPU. As si el nuevo trabajo ofrece una duracin de siguiente rfaga menor que el tiempo de rfaga restante del proceso que est en la CPU, el planificador desaloja al proceso de la CPU y se la cede al nuevo.
Por Prioridad
Tanto SJF como SRTF pueden considerarse como casos particulares de algoritmos de planificacin por prioridad. En este tipo de algoritmos se asocia una prioridad a cada proceso y se cede la CPU al mas prioritario. Las prioridades suelen definirse en base a parmetros internos (como tiempo de CPU consumido) o externos (tipo de usuario o dinero pagado por tiempo de CPU). Puede presentarse inanicin. Para evitarlo se puede variar la prioridad en funcin del tiempo.