Sei sulla pagina 1di 66

Es un programa en

ejecución, e incluye
los valores Un proceso es un
actuales del conjunto de threads
contador de
programa, los (hilos) que ejecutan
registros y las el mismo código,
variables. junto con las zonas
de memoria
asociadas a ellos y
los ficheros que
tienen abiertos.
Las instrucciones de un programa destinadas a ser
ejecutadas por el microprocesador.
Su estado de ejecución en un momento dado, esto es,
los valores de los registros de la CPU para dicho
programa.
Su memoria de trabajo, es decir, la memoria que ha
reservado y sus contenidos.
Otra información que permite al sistema operativo su
planificación.
PROCESOS DE UN S.O.

Listo o
• El proceso preparado: • Al proceso le falta
ocupa la CPU algún recurso para
actualmente, poder seguir
es decir, se ejecutándose. El
está proceso necesita que
ejecutando. ocurra algún evento
• El proceso
dispone de que le permita poder
todos los proseguir su ejecución.
recursos para su
En ejecución, sólo le
ejecución: falta la CPU.

Bloqueado:
Por ejemplo operación de E/S.

READY  está listo para usar el CPU


SEND.BLOCKED
RECEIVE.BLOCKED
REPLY.BLOCKED
SIGNAL.BLOCKED
SEMAPHORE.BLOCKED
HELD  recibe una señal de Stop. No puede utilizar el CPU.
Se libera por una señal de Continuar o por otra señal de finalización
WAIT.BLOCKED  esta a la espera del estado de uno o más
procesos hijos
DEAD  el proceso ha terminado pero no puede enviar su
mensaje de exit a su padre. La memoria que ocupa, es liberada
Los procesos pueden ser cooperativos o independientes. Dos o más procesos pueden cooperar mediante
señales de forma que uno obliga a detenerse a los otros hasta que reciban una señal para continuar.

• Se usa una variable de tipo semáforo para sincronizar los procesos.


• Si un proceso está esperando una señal, se suspende hasta que la señal se envíe.
• Se mantiene una cola de procesos en espera en el semáforo.
• La forma de elegir los procesos de la cola en espera es mediante una política first in first out.

La sincronización explícita entre procesos es un caso particular del estado "bloqueado". En este caso, el
suceso que permite desbloquear un proceso no es una operación de entrada/salida, sino una señal generada
a propósito por el programador desde otro proceso.
CREACIÓN DE PROCESOS
Básicamente hasta el día de hoy existen sólo 4 formas de crear un proceso:

• Arranque del sistema.


• En la ejecución, desde un proceso, de una llamada al sistema para la
creación del proceso.
• Una petición deliberada del usuario para crear un proceso.
• El inicio de un trabajo por lotes.

La forma de creación de procesos en Unix es a través de una llamada al


sistema fork la cual creará un proceso hijo en total semejanza al padre, hasta
que el recién proceso decida cambiar su imagen en memoria, incluso obtener
sus propios descriptores de archivos abiertos.
TERMINACIÓN DE PROCESOS
El ciclo de vida de un proceso es sencillo, consta de la creación, la ejecución de
instrucciones y la terminación. Cabe señalar que un proceso en el transcurso de su
ciclo puede estar en diferentes estados.

• Salida normal.
• Salida por error.
• Error fatal.
• Eliminado por otro proceso.

Salida normal, ésta se presenta cuando el proceso termina de forma voluntaria,


por ejemplo, cuando se cierra en navegador web o el procesador de textos.

Salida por error, ésta se presenta cuando el proceso tiene que salir debido a
TERMINACIÓN DE PROCESOS

Error fatal, éste sucede por un error en el programa, como las divisiones entre 0
o requerimiento de memoria inaccesible.

Eliminado por otro proceso, éste es sumamente útil cuando un proceso se queda
colgado, es decir, sin terminar, pero tampoco responde. En Unix un ejemplo es
cuando se utiliza el comando kill para terminar procesos abruptamente.
DE EJECUCIÓN Á BLOQUEADO: al iniciar una operación de E/S, al
realizar una operación WAIT sobre un semáforo a cero.
DE EJECUCIÓN Á LISTO: por ejemplo, en un sistema de tiempo
compartido, cuando el proceso que ocupa la CPU lleva demasiado
tiempo ejecutándose continuamente (agota su quantum (tiempo)) el
sistema operativo decide que otro proceso ocupe la CPU, pasando el
proceso que ocupaba la CPU a estado listo.
DE LISTO Á EN EJECUCIÓN: cuando lo requiere el planificador de la
CPU
DE BLOQUEADO Á LISTO: se dispone del recurso por el que se había
bloqueado el proceso. Por ejemplo, termina la operación de E/S, o se
produce una operación SIGNAL sobre el semáforo en que se bloqueó el
proceso, no habiendo otros procesos bloqueados en el semáforo.
HELD

WAIT SEND
blocked blocked
12
9 11
1
10 6
2
WAIT 16
READY 3
blocked
15
REPLY
blocked
13
5 4
DEAD
14
(zombie) 8 7

RECEIVE
blocked
SIGNAL
blocked
El concepto de proceso engloba dos conceptos separados y potencialmente
independientes: uno relativo a la propiedad de recursos y otro que hace referencia a
la ejecución.

• A un proceso se le asigna • Un proceso es un flujo de


un espacio de memoria y, ejecución (una traza) a
de tanto en tanto, se le través de uno o más
puede asignar otros programas. Esta ejecución
recursos como dispositivos se entremezcla con la de
de E/S o ficheros. SE otros procesos. . SE
CONOCE COMO CONOCE COMO HILO.
PROCESO.

Unidad a la que
Unidad que posee se le asigna el
recursos: procesador:
• Un hilo representa básicamente una acción de un programa, un proceso en si
mismo no hace nada, en su lugar hospeda los recursos consumidos de la
aplicación que se esta ejecutando, tal como el head y la pila de memoria en
otras palabras proporciona los recursos necesario para que un programa
pueda ejecutarse.

• Un proceso contiene un espacio de memoria virtual, código, ejecutable, un


contexto de seguridad, un identificador de proceso único, variables de
entorno, y al menos un thread de ejecución.

• Cada proceso se inicia con un único thread, a menudo llamado thread


principal, pero puede crear threads adicionales.
• Un estado de ejecución (en ejecución, listo, bloqueado).
• Un contexto de procesador, que se salva cuando no esté
ejecutándose.
• Una pila de ejecución.
• Algún almacenamiento estático para variables locales.
• Acceso a la memoria y a los recursos de ese trabajo que
comparte con los otros hilos.

Dentro de un proceso puede haber uno


o más hilos de control cada uno con:
Un proceso ligero (thread o
hebra) es un programa en
ejecución que comparte la
imagen de la memoria y
otras informaciones con otros
procesos ligeros.
Es una unidad básica de
utilización de la CPU
consistente en un juego de
registros y un espacio de
pila. Comparte el código,
los datos y los recursos con
sus hebras pares
Una tarea (o proceso
pesado) está formada
ahora por una o más
hebras
Una hebra sólo puede
pertenecer a una tarea
Los procesos ligeros permiten paralelizar una aplicación
asignación del
Comunicación tiempo de
entre procesador a
procesos los procesos

CONCEPTO
DE
CONCURRENCIA.

sincronización
comparación y
de la ejecución
competencia por
de varios
los recursos
procesos
Cuando dos o más procesos llegan al mismo tiempo a ejecutarse, se
dice que se ha presentado una concurrencia de procesos. La
concurrencia puede presentarse en tres contextos diferentes:

Varias aplicaciones: La multiprogramación se creó para permitir que


el tiempo de procesador de la máquina fuese compartido
dinámicamente entre varios trabajos o 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.
Existen diversas razones que
motivan la ejecución de procesos
concurrentes en un sistema:
Facilita la programación de
aplicaciones
Acelera los cálculos.
Posibilita el uso interactivo a
múltiples usuarios que trabajan
de forma simultánea.
Permite un mejor
aprovechamiento de los recursos
PROCESO INDEPENDIENTE: Es aquel que ejecuta sin requerir la ayuda o
cooperación de otros procesos.
PROCESOS SON COOPERANTES: Son aquellos que están diseñados para
trabajar conjuntamente en alguna actividad, para lo que deben ser
capaces de comunicarse e interactuar entre ellos.

En ambos tipos de procesos (independientes y cooperantes), puede


producirse una serie de interacciones entre ellos y pueden ser de dos tipos:
Interacciones motivadas porque los procesos comparten o compiten por
el acceso a recursos físicos o lógicos. Por ejemplo, dos procesos
independientes compiten por el acceso a disco o para modificar una base
de datos.
Interacción motivada porque los procesos se comunican y sincronizan
entre sí para alcanzar un objetivo común, Por ejemplo, un compilador que
tiene varios procesos que trabajan conjuntamente para obtener un solo
archivo de salida.
ELEMENTOS A GESTIONAR Y DISEÑAR A CAUSA DE LA CONCURRENCIA.
1.- El sistema operativo debe ser capaz de seguir la pista de los distintos procesos
activos.

2.- El sistema operativo debe asignar y quitar los distintos recursos a cada proceso
activo. Entre estos recursos se incluyen:

Tiempo de procesador: Es función de la planificación.


Memoria: La mayoría de los sistemas operativos emplean esquemas de
memoria virtual.
Archivos.
Dispositivos de E/S.

3.- El sistema operativo debe proteger los datos y los recursos físicos de cada
proceso contra injerencias no intencionadas de otros procesos.

4.- Los resultados de un proceso deben ser independientes de la velocidad relativa


a la que se realiza la ejecución con respecto a otros procesos concurrentes.
2.4.1.- EXCLUSIÓN MUTUA DE SECCIONES
CRÍTICAS.
REGIONES CRÍTICAS
Es posible clasificar las interacciones de los procesos en función del nivel
de conocimiento que cada proceso tiene de la existencia de los demás:

Los procesos no tienen conocimiento de los demás: Estos son procesos


independientes que no están pensados para operar juntos.
Los procesos tienen un conocimiento indirecto de los otros: Los
procesos no conocen necesariamente a los otros, pero comparten el acceso
a algunos objetos.
Los procesos tienen un conocimiento directo de los otros: Los
procesos son capaces de comunicarse con los demás y están diseñados
para trabajar conjuntamente en alguna actividad.
2.4.1.- EXCLUSIÓN MUTUA DE SECCIONES
CRÍTICAS.
SOLUCIÓN A LA SECCIÓN CRÍTICA.
Para resolver el problema de la sección crítica es necesario utilizar
algún mecanismo de sincronización que permita a los procesos
cooperar entre ellos sin problemas y su funcionamiento básico es el
siguiente:

Cada proceso debe solicitar Cuando un proceso sale de la


permiso para entrar en la sección critica debe indicarlo
sección crítica, mediante algún mediante otro fragmento de
fragmento de código que se código que se denomina salida
denomina de forma genérica de la sección crítica. Este
entrada en la sección crítica. fragmento permitirá que otros
procesos entren a ejecutar el
código de la sección crítica.
2.4.1.- EXCLUSIÓN MUTUA DE SECCIONES
CRÍTICAS.
2.4.1.- EXCLUSIÓN MUTUA DE SECCIONES
CRÍTICAS.

Hacer que
se cumpla
la exclusión
mutua crea
dos Interbloqueo Inanición
problemas
P1 y P2 y dos recursos críticos, P1, P2 y P3 y solo un
de control R1 y R2 recurso R.
adicionales
.
REQUISITOS PARA LA EXCLUSIÓN MUTUA.
Cualquier servicio o capacidad que dé soporte para la exclusión mutua
debe cumplir los requisitos siguientes:
Debe cumplirse la exclusión mutua: Solo un proceso, de entre todos los
que poseen secciones críticas 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 sección no crítica debe hacerlo sin
estorbar a los otros procesos.
Un proceso no debe poder solicitar acceso a una sección crítica para
después ser demorado indefinidamente; no puede permitirse el
interbloqueo o la inanición.
Cuando ningún proceso está en su sección crítica, cualquier proceso que
solicite entrar en la suya debe poder hacerlo.
No se pueden hacer suposiciones sobre la velocidad relativa de los
procesos o su número.
Un proceso permanece en su sección crítica solo por un tiempo finito.
SOLUCIONES A LA EXCLUSIÓN MUTUA
Hay varias formas de satisfacer los requisitos de exclusión mutua:
Soluciones por Software. Una manera es dejar la
responsabilidad a los procesos que deseen ejecutar
concurrentemente, de esta manera los procesos deben coordinarse
unos con otros para cumplir la exclusión mutua sin ayuda alguna.
Soluciones por Hardware. Propone el uso de instrucciones de la
máquina a tal efecto, estas tienen la ventaja de reducir la
sobrecarga.

El tercer método consiste en dar algún tipo de soporte en el


sistema operativo, entre estos métodos se encuentran los semaforos,
monitores, paso de mensajes, etc.
2.4.2.- SINCRONIZACIÓN DE PROCESOS
EN S. C.
Planificación del procesador
La planificación del procesador se refiere a la manera o técnicas que se
usan para decidir cuánto tiempo de ejecución y cuando se le asignan a
cada proceso del sistema.
Niveles de planificación
El nivel alto decide que trabajos (conjunto de procesos) son candidatos a
convertirse en procesos compitiendo por los recursos del sistema.
El nivel intermedio decide que procesos se suspenden o reanudan para
lograr ciertas metas de rendimiento.
Planificador de bajo nivel es el que decide que proceso, de los que ya
están listos (y que en algún momento paso por los otros dos
planificadores) es al que le toca ahora estar ejecutándose en la unidad
central de procesamiento.
2.4.2.- SINCRONIZACIÓN DE PROCESOS
EN S. C.

LOS SERVICIOS BÁSICOS DE COMUNICACIÓN SON:

a. crear: el proceso solicita la creación del mecanismo


b. enviar o escribir: el proceso emisor envía información al proceso
receptor
c. recibir o leer: el proceso receptor recibe información
d. destruir: el proceso solicita la destrucción del mecanismo de
comunicación
2.4.2.- SINCRONIZACIÓN DE PROCESOS
EN S. C.

LA COMUNICACIÓN PUEDE SER SINCRONA Y ASÍNCRONA:

A. Síncrona: los dos procesos han de ejecutar servicios de forma


simultánea. El emisor ha de ejecutar el servicio enviar mientras el
receptor ejecuta recibir.

B. Asíncrona: el emisor hace el envío y prosigue su ejecución. El SO


ofrece un almacenamiento intermedio para guardar la
información enviada, hasta que el receptor la solicite.
2.4.2.- SINCRONIZACIÓN DE PROCESOS
EN S. C.
Justicia o Maximizar el Tiempo de
Imparcialidad Respuesta

OBJETIVOS DE LA
PLANIFICACIÓN

Maximizar la Evitar el aplazamiento


Producción indefinido

El sistema debe ser


predecible
2.4.2.- SINCRONIZACIÓN DE PROCESOS
EN S. C.
Asignación del turno de ejecución
Los algoritmos de la capa baja para asignar el turno de ejecución se
describen a continuación:
Por prioridad: Los procesos de mayor prioridad se ejecutan primero. Si
existen varios procesos de mayor prioridad que otros, pero entre ellos con
la misma prioridad, pueden ejecutarse estos de acuerdo a su orden de
llegada o por 'round robin'. La ventaja de este algoritmo es que es
flexible en cuanto a permitir que ciertos procesos se ejecuten primero e,
incluso, por más tiempo. Su desventaja es que puede provocar
aplazamiento indefinido en los procesos de baja prioridad. Por ejemplo,
suponga que existen procesos de prioridad 20 y procesos de prioridad
10. Si durante todo el día terminan procesos de prioridad 20 al mismo
ritmo que entran otros con esa prioridad, el efecto es que los de
prioridad 10 estarán esperando por siempre. También provoca que el
sistema sea impredecible para los procesos de baja prioridad.
2.4.2.- SINCRONIZACIÓN DE PROCESOS
EN S. C.
EL TRABAJO MÁS CORTO PRIMERO: Es difícil porque se requiere
saber o tener una estimación de cuánto tiempo necesita el proceso
para terminar. Pero si se sabe, se ejecutan primero aquellos trabajos
que necesitan menos tiempo. Por ejemplo, si llegan 5 procesos A,B,C,D
y E cuyos tiempos de CPU son 26, 18, 24, 12 y 4 unidades de tiempo,
se observa que el orden de ejecución será E,D,B,C y A (4,12,18, 24 y
26 unidades de tiempo respectivamente). EJEMPLO:
Proceso Espera desde Termina Tiempo de Espera
A044
B 0 16 16
C 0 34 34
D 0 58 58
E 0 84 84
Tiempo promedio = (4 + 16 + 34 + 58 + 84 )/5 = 39 unidades.
2.4.2.- SINCRONIZACIÓN DE PROCESOS
EN S. C.

EL PRIMERO EN LLEGAR, PRIMERO EN EJECUTARSE: Es muy


simple, los procesos reciben su turno conforme llegan. La
ventaja de este algoritmo es que es justo y no provoca
aplazamiento indefinido. La desventaja es que no
aprovecha ninguna característica de los procesos y puede
no servir para un proceso de tiempo real.
2.4.2.- SINCRONIZACIÓN DE PROCESOS
EN S. C.
EL PRIMERO EN LLEGAR, PRIMERO EN EJECUTARSE: Es muy simple,
los procesos reciben su turno conforme llegan. La ventaja de este
algoritmo es que es justo y no provoca aplazamiento indefinido. La
desventaja es que no aprovecha ninguna característica de los
procesos y puede no servir para un proceso de tiempo real.

ROUND ROBIN: También llamada por turno, consiste en darle a cada


proceso un intervalo de tiempo de ejecución (llamado time slice), y cada
vez que se vence ese intervalo se copia el contexto del proceso a un lugar
seguro y se le da su turno a otro proceso. Los procesos están ordenados en
una cola circular. Por ejemplo, si existen tres procesos, el A,B y C, dos
repasadas del planificador darían sus turnos a los procesos en el orden
A,B,C,A,B,C. La ventaja de este algoritmo es su simplicidad, es justo y no
provoca aplazamiento indefinido.
2.4.2.- SINCRONIZACIÓN DE PROCESOS
EN S. C.
EL TIEMPO RESTANTE MÁS CORTO: se está calculando en todo
momento cuánto tiempo le resta para terminar a todos los procesos,
incluyendo los nuevos, y aquel que le quede menos tiempo para
finalizar es escogido para ejecutarse. La ventaja es que es muy útil
para sistemas de tiempo compartido; su desventaja es que provoca
más sobrecarga porque el algoritmo es más complejo.

LA TASA DE RESPUESTA MÁS ALTA: Este algoritmo concede el turno


de ejecución al proceso que produzca el valor mayor de la siguiente
formula:

tiempo que ha esperado + tiempo total para terminar


2.4.2.- SINCRONIZACIÓN DE PROCESOS
EN S. C.

POR POLÍTICA: se establece algún reglamento específico que el


planificador debe obedecer. Por ejemplo, una política podría ser
que todos los procesos reciban el mismo tiempo de uso de CPU en
cualquier momento. Esto significa, por ejemplo, que si existen 2
procesos y han recibido 20 unidades de tiempo cada uno y en este
momento entra un tercer proceso, el planificador le dará
inmediatamente el turno de ejecución por 20 unidades de tiempo.
Una vez que todos los procesos están 'parejos' en uso de CPU, se les
aplica 'round robin'.
2.4.2.1.- Mecanismo de Semáforos.
En 1965, E.W. Dijkstra sugirió el uso de una variable llamada
Semáforo. Un semáforo puede tener el valor 0, lo que indica que no
existen despertares almacenados; o bien algún valor positivo si
están pendientes uno o más despertares.

DOWN
UP

La operación Down verifica si Si uno o más procesos dormían en ese


el valor de un semáforo es semáforo y no podían completar una
mayor que 0. En este caso, operación Down anterior, el sistema
decrementa el valor y elige alguno de ellos (por ejemplo, en
continúa. Si el valor es cero, forma aleatoria) y se le permite
el proceso se va a dormir. terminar Down.
.
Los monitores son estructuras de datos
utilizadas en lenguajes de programación
para sincronizar dos o más procesos o hilos
de ejecución que usan recursos
compartidos.

El concepto de monitor fue definido por


primera vez por Charles Antony Richard
Hoare en un artículo del año 1974.
COMPONENTES

Inicialización: contiene el código a ser ejecutado cuando el monitor es


creado

Datos privados: contiene los procedimientos privados, que sólo pueden ser
usados desde dentro del monitor y no son visibles desde fuera

Procedimientos del monitor: son los procedimientos que pueden ser


llamados desde fuera del monitor.

Cola de entrada: contiene a los threads que han llamado a algún


procedimiento del monitor pero no han podido adquirir permiso para
ejecutarlos aún.
2.4.2.2

CARACTERISTICAS

La política de inserción de procesos en las colas de


las variables condición es la FIFO, ya que asegura que
ningún proceso caiga en la espera indefinida, cosa que
sí ocurre con la política LIFO (puede que los procesos de
la base de la pila nunca sean despertados) o con una
política en la que se desbloquea a un proceso aleatorio.

• En un monitor los procesos se bloquean y


desbloquean.
Un conjunto de procesos está en interbloqueo si cada proceso del
conjunto está esperando un evento que sólo otro proceso del
conjunto puede causar.

Se pueden distinguir dos categorías generales de recursos:

Reutilizables
Un recurso reutilizable es aquél que puede ser usado con seguridad por
un proceso y no se agota con el uso.

Como ejemplos de recursos reutilizables se tienen los procesadores,


canales de E/S, memoria principal y secundaria, dispositivos y
estructuras de datos tales como archivos, bases de datos y semáforos.
Consumibles
Un recurso consumible es aquél que puede ser creado (producido)
y destruido (consumido). Cuando un proceso adquiere un recurso,
éste deja de existir. Como ejemplos de recursos consumibles están
las interrupciones, señales, mensajes, e información en buffers de
E/S.
Ejemplo de interbloqueos

Cuatro coches llegan aproximadamente en el mismo instante a un cruce de


cuatro caminos. Los cuatro cuadrantes de la intersección son los recursos
compartidos sobre los que se demanda control; por tanto, si los coches
desean atravesar el cruce, las necesidades de recursos son las siguientes:

- El coche que va hacia el norte necesita los cuadrantes 1 y 2.


- El coche que va hacia el oeste necesita los cuadrantes 2 y 3.
- El coche que va hacia el sur necesita los cuadrantes 3 y 4.
- El coche que va hacia el este necesita los cuadrantes 4 y 1.
Los métodos para prevenir el interbloqueo son de dos tipos

Los métodos indirectos que


consisten en impedir la Los métodos directos
aparición de alguna de las que consisten en evitar
tres condiciones necesarias la aparición del círculo
para que se de el vicioso de espera
interbloqueo.
SOLUCCIONES AL INTERBLOQUEO

Primero, si a un proceso que retiene ciertos recursos se le deniega


una nueva solicitud, dicho proceso deberá liberar sus recursos
anteriores y solicitarlos de nuevo, cuando sea necesario, junto con el
recurso adicional.

Por otra parte, si un proceso solicita un recurso que actualmente


está retenido por otro proceso, el sistema operativo puede
expulsar al segundo proceso y exigirle que libere sus recursos. Este
último esquema evitará el interbloqueo sólo si no hay dos procesos
que posean la misma prioridad.
La detección del interbloqueo es el proceso de determinar
si realmente existe un interbloqueo e identificar los procesos
y recursos implicados en él. Una posibilidad de detectar un
interbloqueo es monitorear cada cierto tiempo el estado de
los recursos. Cada vez que se solicita o se devuelve un
recurso, se actualiza el estado de los recursos y se hace una
verificación para observar si existe algún ciclo.
Abandonar todos Abandonar sucesivamente los
los procesos procesos bloqueados hasta que deje
bloqueados. de haber interbloqueo.

Una vez detectado el


interbloqueo, hace falta
alguna estrategia de
Apropiarse de recuperación
recursos sucesivamente
hasta que deje de Retroceder cada proceso
haber interbloqueo. interbloqueado hasta algún punto de
control definido previamente y volver
a ejecutar todos los procesos.
Actualmente, la recuperación se
suele realizar eliminando un proceso Los procesos pueden eliminarse
y quitándole sus recursos. El proceso de acuerdo con algún orden de
eliminado se pierde, pero gracias a prioridad, aunque es posible que
esto ahora es posible terminar. no existan prioridades entre los
Algunas veces es necesario, eliminar procesos bloqueados, de modo
varios procesos hasta que se hayan que el operador necesita tomar
liberado los recursos necesarios una decisión arbitraria para
para que terminen los procesos decidir que procesos se
restantes. eliminarán.
2.5.- Niveles, Objetivos y Criterios de
Planificación.

La planificación es el proceso por el


cual el sistema operativo selecciona
que proceso ejecutar. La selección del
proceso se basa en alguno de los
algoritmos de planificación.
Dar mejor tratamiento a
Ser justa Ser predecible
los procesos que muestren
un “comportamiento
deseable”:
Equilibrar respuesta y
utilización Equilibrar el uso de
recursos
Dar preferencia a los
procesos que mantienen Objetivos de la Evitar la
recursos claves postergación
Planificación indefinida

Degradarse suavemente con Maximizar la


cargas pesadas capacidad de
ejecución

Maximizar el número de Minimizar la sobrecarga


usuarios interactivos que
reciban unos tiempos de
respuesta aceptables Asegurar la prioridad
2.6.- Técnicas de Administración del
Planificador.

Antes de realizar la elección


Se denomina planificador al de un algoritmo se debe
software del sistema operativo considerar las propiedades
encargado de asignar los de estos frente al criterio de
recursos de un sistema entre los diseño elegido. Algunos de
procesos que los solicitan. estos son:
Eficacia: Se expresa como un porcentaje del tiempo medio de
utilización.

Rendimiento: Es una medida del numero de procesos


completados por unidad de tiempo. Por ejemplo 10
procesos por segundo.

Tiempo de retorno o regreso: Es el intervalo de tiempo


que transcurre desde que un proceso se crea o
presenta hasta que completa por el sistema.
Tiempo de espera: Es el tiempo que el proceso espera hasta
que se le concede el procesador.

Tiempo de respuesta a un evento: Se denomina así el


intervalo de tiempo que transcurre desde que se
señala un evento hasta que se ejecuta la primera
instrucción de la rutina de servicio de dicho evento. El
criterio de selección de un algoritmo se suele basar en
la maximización o minimización de una función de los
parámetros anteriores.
2.6.1.- First In First Out.

FIFO (First In Firs Out).

Los procesos se ordenan en una fila, en la cual se ejecutan cada


uno de los procesos hasta su finalización secuencialmente.
Es tremendamente ineficiente, cuando se tiene que elegir a qué
proceso asignar la CPU se escoge al que llevara más tiempo listo. El
proceso se mantiene en la CPU hasta que se bloquea
voluntariamente.
Para implementar el algoritmo sólo se necesita mantener una
cola con los procesos listos ordenada por tiempo de llegada.
Cuando un proceso pasa de bloqueado a listo se sitúa el último de
la cola.
Como ejemplo de banderas de estado FIFO, se pueden
enumerar: full (lleno), empty (vacio), almost full (casi lleno) o
almost empty (casi vacio).

FIFO FULL (LLENO)/EMPTY (VACIO)

En el hardware FIFO se usa para propósitos de sincronización.


Comportándose como una cola circular.
Tiene dos punteros:

Puntero de Lectura/Registro de Dirección de Lectura


Puntero de Escritura/Registro de Dirección de Escritura
2.6.2.- SJF.

Es una disciplina no apropiativa y por lo


tanto no recomendable en ambientes del
tiempo compartido. El proceso en espera
con el menor tiempo estimado de ejecución
hasta su terminación es el siguiente en
ejecutarse. Los tiempos promedio de
espera son menores que con “FIFO”.

Una vez que un proceso ejecuta no deja de


hacerlo hasta que voluntariamente cambia de
estado (no hay interrupción por tiempo).
Asocia a cada proceso el tiempo de CPU que
habrá de usar en su próxima vuelta y va a
decidir por el más pequeño.
2.6.4- Queves Multi-level.

Un algoritmo de planificación multinivel particiona la cola de listas


en colas separadas. Se asignan en forma permanente los trabajos
a una cola, generalmente, basándose en alguna propiedad del
mismo (requerimientos de memoria, tipo de trabajo), teniendo cada
cola su propio algoritmo. Por ejemplo, la cola interactiva podría
planificarse usando RR y la batch FIFO.

Ningún trabajo en una cola de baja prioridad puede ejecutarse si


las colas con mayor prioridad no están vacías. Si algún trabajo
entra en una cola de mayor prioridad, el trabajo de otras colas es
interrumpido.
2.6.5.- Multi-level feedback queves.
En colas multinivel realimentadas los trabajos pueden moverse dentro de
distintas colas. La idea es separar procesos con distintos tipos de
interrupciones de la CPU. Si un trabajo consume mucho tiempo de CPU,
será movido a una cola con menor prioridad.

En forma similar, si
un proceso espera En general un
demasiado tiempo planificador de este
en una cola de baja tipo esta definido
prioridad, lo por los siguientes
moveremos a una parámetros:
cola de mayor
prioridad.
El número de El tipo de algoritmo
colas. de planificación de
cada cola.

Un método de Un método de
determinación de determinación de
cuando mover un cuando mover un
trabajo a una cola trabajo a una cola
de mayor de menor
prioridad. prioridad.

Potrebbero piacerti anche