You are on page 1of 69

SISTEMAS OPERATIVOS

Tutoras Curso 2015 - 2016

Sistemas Operativos Tutora 1


Repasar Guas de Asignatura.

Materias.
Exmenes.
PED.
Bibliografa.

Exmenes aos anteriores.


PED aos anteriores.
Definiciones de Programas, Procesos, Multitarea..

Definiciones de Programa, Programa, Multitarea..


Programa: El algoritmo. Es una secuencia de instrucciones, escritas para realizar una tarea especfica con una computadora. El
programa tiene un formato ejecutable que la computadora puede utilizar directamente para ejecutar las instrucciones
Proceso: Puede informalmente entenderse como un programa en ejecucin en un contexto. Dos o ms procesos pueden ejecutar
el mismo programa empleando sus propios datos y recursos.
Cada invocacin a un programa genera un proceso distinto e independiente. Los procesos compiten por el uso de los recursos
del sistema, de manera que se necesitan herramientas que permitan la sincronizacin y la comunicacin entre los procesos. En
cualquier instante de tiempo, slo un proceso estar en ejecucin mientras que los otros estarn suspendidos, preparados o
esperando a que ocurra algn evento.
Ejercicio. Listar 5 programas y 5 procesos ejecutndose en vuestro sistema operativo.
Multitarea: Capacidad que tienen los S.O. de ejecutar de forma simultnea varios procesos.

Multiprogramacin: Se intenta mantener del modo ms ocupado posible a todos los recursos del sistema con el entrelazado y el
solapamiento de la ejecucin de ms de un programa.
Solamente cambiando la atencin de un nico procesador entre varios programas y dejando que cada uno se ejecute unas
milsimas de segundo antes de ir a otro, permite crear la ilusin de la ejecucin concurrente o al unsono de los programas.
Adems de la multitarea incluye la capacidad de gestin de la memoria y de los ficheros.
Sistemas de tiempo compartido: Sistemas con multiprogramacin interactiva en los que se asigna a cada programa un mismo
intervalo de tiempo de ejecucin.

Sistemas Operativos Tutora 2


Repasar Apuntes Tema 2.

2.2 RELACIN ENTRE LOS PROCESOS


2.3 ESPECIFICACIN DE LOS PROCESOS
2.4 ESTADOS DE LOS PROCESOS
2.4.1 TRANSICIONES ENTRE LOS ESTADOS
2.5 EL BLOQUE DE CONTROL DE PROCESOS
2.7 EL PLANIFICADOR DE PROCESOS

Ejercicios Libro Tema 2.


Ejercicios Exmenes Tema2.

Sistemas Operativos Tutora 2

Sistemas Operativos Tutora 2

Sistemas Operativos Tutora 2

Sistemas Operativos Tutora 2

Sistemas Operativos Tutora 2

Sistemas Operativos Tutora 3

Sistemas Operativos Tutora 3

Sistemas Operativos Tutora 3

Sistemas Operativos Tutora 3

Sistemas Operativos Tutora 3

Sistemas Operativos Tutora 3

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos


La ejecucin concurrente de procesos presenta varios problemas, todos ellos asociados al
hecho de que no es posible predecir la velocidad relativa de ejecucion de un proceso. Dicha
velocidad es funcin de la poltica de planificacin del sistema operativo, de la forma en que se
tratan las interrupciones y de la actividad de los otros procesos en el sistema.

Uno de los principales problemas de la ejecucin concurrente de procesos es que el acceso a


recursos globales compartidos (memoria, dispositivos de E/S, etc) debe controlarse de alguna
forma si se desea que el resultado de la ejecucin de un proceso sea independiente de la
velocidad de ejecucin del proceso con respecto a los otros procesos concurrentes.

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos


Exclusin mutua

Interaccin entre procesos concurrentes


En un sistema con multiprogramacin se ejecutan mltiples procesos de manera concurrente.
Podemos distinguir
Procesos independientes, que se ejecutan sin tener en cuenta la existencia de otros
procesos.
Procesos cooperantes, que intercambian informacin o colaboran entre si para compartir un
recurso o realizar alguna tarea.
Cooperacin directa: los procesos conocen la existencia e identidad de los otros
procesos con los que colaboran.
Cooperacin indirecta, los procesos no conocen la existencia e identidad de los otros
procesos y, en consecuencia, no se comunican con ellos pero deben garantizar que
los recursos queden en un estado coherente.

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos


Condiciones de carrera.
El problema denominado condicin de carrera (race condition) surge cuando mltiples procesos
independientes se ejecutan concurrentemente y acceden para leer o escribir en un recurso
compartido. En ese caso el resultado final de la ejecucion depende del orden en que se hayan
planificado los procesos.

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos


Condiciones de carrera.
En definitiva este programa posee una condicin de carrera, los procesos A y B compiten por
ser los primeros en escribir y leer el valor de la variable contador. En la primera secuencia de
ejemplo, el proceso A es el primero en escribir pero es el segundo en leer la variable contador.
Mientras que en la segunda secuencia, el proceso A es el primero tanto en leer como en
escribir dicha variable. En funcin del resultado de las carreras el resultado del programa es
diferente.

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos


Secciones crticas

Seccin critica o regin critica de un proceso es una instruccin o conjunto de instrucciones


secuenciales de su cdigo que requieren manipular un recurso compartido (variable, dato,
fichero, ) con otros procesos. Dentro del cdigo de un proceso pueden existir varias
regiones criticas.

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos


4. Descripcin de la exclusin mutua
Las condiciones de carrera se evitaran si se garantizase que cuando un proceso A est ejecutando instrucciones
dentro de una seccin crtica S1 asociada un recurso R1 compartido, entonces ningn otro proceso puede ejecutar
cdigo de una seccin crtica asociada a R1 hasta que el proceso A no salga de S1 .
En definitiva lo que se requiere es exclusin mutua, es decir, que el uso de un recurso por parte de un
proceso excluya su uso para los restantes.

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Repaso de los conceptos ms importantes.


En un sistema multiprogramado con un nico procesador, los procesos se intercalan en el
tiempo (i.e. Round Robin) para dar apariencia de ejecucin simultnea. Aunque no se consigue
un procesado en paralelo real, y aunque se produce un sobrecargado en la CPU por el hecho de
tener que cambiar de tarea constantemente, las ventajas de todo esto son muy elevadas.
Uno de los grandes problemas que nos podemos encontrar es que el hecho de compartir
recursos est lleno de riesgos. Por ejemplo, si dos procesos hacen uso al mismo tiempo de una
variable global y ambos llevan a cabo tanto operaciones de lectura como de escritura sobre
dicha variable, el orden en que se ejecuten estas lecturas y escrituras es crtico, puesto que se
ver afectado el valor de la variable.

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Repaso de los conceptos ms importantes.

Concepto de condiciones de carrera:

Situaciones en las que dos o ms procesos leen o escriben en un rea de memoria compartida
y el resultado final depende de los instantes de ejecucin de cada uno. Esto se soluciona
impidiendo que ms de un proceso acceda simultneamente a las variables compartidas. Se
soluciona garantizando la exclusin mutua.
Concepto de exclusin mutua.
Consiste en que un solo proceso excluye temporalmente a todos los dems para usar un
recurso compartido de forma que garantice la integridad del sistema.

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Repaso de los conceptos ms importantes.


Concepto de seccin crtica.
Es la parte del programa con un comienzo y un final claramente marcados que generalmente
contiene la actualizacin de una o ms variables compartidas. Para que una solucin al
problema de la exclusin mutua sea vlida, se tienen que cumplir una serie de condiciones:
Hay que garantizar la exclusin mutua entre los diferentes procesos a la hora de acceder al
recurso compartido. No puede haber en ningn momento dos procesos dentro de sus
respectivas secciones crticas.
No se deben hacer suposiciones en cuanto a la velocidad relativa de los procesos en
conflicto.
Ningn proceso que est fuera de su seccin crtica debe interrumpir a otro para el acceso a
la seccin crtica.
Cuando ms de un proceso desee entrar en su seccin crtica, se le debe conceder la
entrada en un tiempo finito, es decir, que nunca se le tendr esperando en un bucle que no
tenga final.

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Repaso de los conceptos ms importantes.


Para solucionar el problema de la exclusin mutua vamos a tener tres tipos de soluciones:
Soluciones software.
Soluciones hardware.
Soluciones aportadas por el Sistema Operativo.

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Repaso de los conceptos ms importantes.


3. Soluciones del Sistema Operativo.
3.1. Semforos.
3.1.1. Semforos binarios.
Dijkstra dio en 1968 una solucin elegante y sencilla al problema de la exclusin mutua con la
introduccin del concepto de semforo binario. Esta tcnica permite resolver la mayora de los
problemas de sincronizacin entre procesos y forma parte del diseo de muchos sistemas
operativos y de lenguajes de programacin concurrentes.
Un semforo binario es un indicador de condicin (S) que registra si un recurso est disponible
o no. Un semforo binario slo puede tomar dos valores: O 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 slo permiten tres operaciones sobre ellos:
Espera.
Seal.
Inicializar.

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Notas importantes de libro.


La exclusin mutua as planteada resuelve las condiciones de carrera. Sin embargo, si no se exigen algunos
requisitos adicionales puede producir otros problemas de control de procesos, como el interbloqueo y
la inanicin de procesos.
El interbloqueo o bloqueo mutuo de dos o ms procesos, se produce por ejemplo cuando dos procesos A y
B necesitan dos recursos R1 y R2 para realizar una cierta funcin. Si A posee R1 y B posee R2 ninguno
puede progresar, ambos se quedan esperando por el recurso que necesitan, y no pueden liberar el reurso que
poseen hasta obtener el otro recurso y realizar la funcin correspondiente.
Por su parte la inanicin de un proceso se produce cuando un proceso no puede progresar al necesitar un
recurso al que nunca llega a acceder porque el sistema operativo siempre le relega dando prioridad a
otros procesos.

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos


Soluciones software a la exclusin mutua. Primeras aproximaciones
En esta seccin se van describir dos posibles soluciones software a la exclusin mutua: el uso de
un cerrojo y alternancia estricta, y el algoritmo de Peterson. Para simplificar su explicacin se van a
considerar nicamente dos procesos A y B concurrentes.
Ambas soluciones se caracterizan porque no presuponen el apoyo de sistema operativo o del hardware del
computador para su implementacin.
El principal inconveniente de ambas soluciones es que cualquier proceso que desea entrar en una seccin
crtica, si est siendo ejecutada por otro proceso, debe esperar a que ste termine mediante la ejecucin de un
bucle que comprueba el valor de una condicin basada en el valor de una o varias
variables. Esta variable hace las veces de cerrojo (lock). Cuando el valor del cerrojo se comprueba dentro
de un bucle se habla de cerrojo con vuelta (spinlock). A dicho tipo de espera se le denomina espera activa
(busy waiting) o espera cclica (spin waiting). La espera activa supone un problema si se dilata mucho en
el tiempo ya que consume valiosos ciclos de uso del procesador que podran ser utilizados para ejecutar
otros procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos


TRUE=l
Int turno=0; / * Variable global que se usa como cerrojo * /
Void procesoA ()
{
while(TRUE) { / * Bucle infinito * /
/ * seccin no crtica * /
while(turno!=0 ) ; / * Bucle de espera * /
/ * seccin crtica * /
turno=l;
/ * seccin no crtica */
}

Void procesoB ()
{
while(TRUE) { / * Bucle infinito * /
/ * seccin no crtica * /
while(turno!=1 ) ; / * Bucle de espera * /
/ * seccin crtica * /
turno=0;
/ * seccin no crtica */
}

En esta solucin se considera la existencia de una variable global de acceso turno, que se usa como cerrojo y que
puede tomar como valor el identificador numrico de un proceso. En este caso el proceso A tiene el identificador 0 y el
proceso B el identificador 1. Ntese que el valor al que se inicializa el cerrojo determina qu proceso puede entrar en
primer lugar en su seccin crtica, en este caso es el proceso A.

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos


Esta solucin garantiza la propiedad en exclusiva de un recurso, que es el primer requisito para
garantizar la exclusin mutua. Sin embargo posee dos inconvenientes.
En primer lugar la velocidad de ejecucin de los procesos A y B viene limitada por la velocidad de ejecucin
del proceso ms lento. Puesto que la ejecucin de los procesos A y B se va alternando estrictamente para
garantizar la propiedad en exclusiva del recurso compartido, hasta que un proceso (por ejemplo A) no termina en
su seccin critica y configura la variable turno con el identificador del otro proceso (B), ste no puede acceder.
En consecuencia, aunque la velocidad ejecucin de B fuera ms rpida que la de A, su velocidad real se
ralentiza al tener que esperar por A.
El segundo problema que tiene esta solucin es que si un proceso falla (por ejemplo A) antes de
poder cambiar el valor de turno al identificador del otro proceso (B), entonces ste (B) permanecer
bloqueado indefinidamente.

Sistemas Operativos Tutora 5

Sincronizacin y comunicacin de procesos


Condicin de carrera:
El uso de recursos compartidos no se produce nicamente en el caso de procesos cooperantes. Tambin lo
procesos independientes ejecutndose concurrentemente utilizan recursos compartidos, aunque en vez de cooperar,
compiten por el uso de dichos recursos.
Un problema denominado condicin de carrera (race condition) que surge cuando mltiples procesos independientes
se ejecutan concurrentemente y acceden para leer o escribir en un recurso compartido, es que el resultado final de la
ejecucin depende del orden en que se hayan planificado los procesos, es decir, en que se hayan ejecutado las
instrucciones de lectura y escritura de cada proceso sobre el recurso.
La depuracin de programas que pueden poseer condiciones de carrera es complicada, ya que la mayora de las veces
que se ejecutan parecen funcionar correctamente y las condiciones de carrera solo se manifiestan en algunos casos
muy concretos.
Regin crtica:
Se denomina seccin crtica o regin crtica de un proceso a una instruccin o conjunto de instrucciones secuenciales
de su cdigo que requieren manipular un recurso compartido (variable, dato, fichero, .. . ) con otros procesos. Dentro
del cdigo de un proceso pueden existir varias secciones crticas.

Sistemas Operativos Tutora 5

Sincronizacin y comunicacin de procesos


Exclusin Mutua:
Las condiciones de carrera se evitaran si se garantizase que cuando un proceso A est ejecutando instrucciones dentro
de una seccin crtica S1 asociada un recurso R1 compartido, entonces ningn otro proceso puede ejecutar cdigo de
una seccin crtica asociada a R1 hasta que el proceso A no salga de S1.
En definitiva lo que se requiere es exclusin mutua, es decir, que el uso de un recurso por parte de un proceso excluya
su uso para los restantes.
Dos posibles soluciones para implementar la Exclusin Mutua: El uso de un cerrojo y alternancia estricta, y el
algoritmo de Peterso. Cerrojo, ej ejemplo de Turno. Ver el ejemplo del libro.
El principal problema es La espera Activa: La espera activa supone un problema si se dilata mucho en el tiempo ya
que consume valiosos ciclos de uso del procesador que podran ser utilizados para ejecutar otros procesos.
El segundo problema que tiene esta solucin es que si un proceso falla (por ejemplo A) antes de poder cambiar el
valor de turno al identificador del otro proceso (B), entonces ste (B) permanecer bloqueado indefinidamente.

Sistemas Operativos Tutora 5

Sincronizacin y comunicacin de procesos


Otro problema alternancia estricta y velocidad. En primer lugar la velocidad de ejecucin de los procesos A y B viene
limitada por la velocidad de ejecucin del proceso ms lento. Puesto que la ejecucin de los procesos A y B se va
alternando estrictamente para garantizar la propiedad en exclusiva del recurso compartido, hasta que un proceso (por
ejemplo A) no termina en su seccin critica y configura la variable turno con el identificador del otro proceso (B), ste
no puede acceder. En consecuencia, aunque la velocidad ejecucin de B fuera ms rpida que la de A, su velocidad
real se ralentiza al tener que esperar por A.
T. Dekker para obtener exclusin mutua sin necesidad de asegurar una alternancia estricta de los procesos. Dicha
solucin, conocida como algoritmo de Dekker, en su forma original solo es aplicable para la ejecucin concurrente
de do procesos y no es sencillo extenderla para un nmero superior.
Peterson obtuvo una solucin simple y elegante para el problema de garantizar completamente la exclusin mutua
de un nmero arbitrario de procesos concurrentes. Dicha solucin, conocida como algoritmo de Peterson se
muestra en la Figura 4.5 escrita en pseudocdigo basado en el lenguaje C para el caso de dos procesos concurrentes.
Por otra parte este algoritmo evita la posibilidad de interbloqueo

Sistemas Operativos Tutora 5

Sincronizacin y comunicacin de procesos

Semforos
El funcionamiento de las operaciones wait_sem y signa1_sem que se ha descrito en los prrafos anteriores corresponde
a un semforo general o semforo con contador. Una versin simplificada de este semforo general corresponde al caso
del semforo binario, tambin denominado mutex en la literatura que nicamente puede tomar los valores 0 y 1. En el
caso de un semforo binario las operaciones wait_sem y signal_sem funcionan de la siguiente manera:
wait_sem (s). Esta operacin comprueba el valor del semforo S. Si S=0, entonces el proceso es colocado en la cola de
procesos bloqueados asociada al semforo y se bloquea. Si S = 1 , entonces pone el semforo a 0 y el proceso puede
continuar su ejecucin.
Signal_sem (s) . Esta operacin comprueba si la cola de procesos bloqueados asociada al semforo S est vaca. En
caso afirmativo, pone el semforo a 1, y contina su ejecucin. En caso negativo, es decir, hay procesos bloqueados en
el semforo, entonces el sistema operativo elimina de la cola asociada al semforo a uno de los procesos bloqueados, y
le despierta lo que hace que pase al estado preparado para ejecucin.
Por otra parte, un semforo binario solamente puede ser inicializado a 0 o 1.

Sistemas Operativos Tutora 5

Sincronizacin y comunicacin de procesos


Utilidad de los semforos. Obtencin de exclusin mutua.
El problema de la exclusin mutua se soluciona fcilmente utilizando semforos. Simplemente hay que
utilizar tantos semforos como recursos distintos compartan, a travs de regiones crticas, los procesos
concurrentes.

Sistemas Operativos Tutora 5

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos


Productores

Consumidores

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos


Los semforos proporcionan un mecanismo de sincronizacin de procesos concurrentes muy til y flexible.
Sin embargo, deben introducirse cuidadosamente en el cdigo de los programas para que el funcionamiento
sea el esperado. Para intentar evitar los errores potenciales asociados a una inadecuada colocacin de los
semforos y, en definitiva, para simplificar la escritura de los programas de procesos concurrentes, C.A.R.
Hoare introdujo en 1974 el concepto de monitor.

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

semforos proporcionan un mecanismo de sincronizacin de


procesos concurrentes muy til y
e. Sin embargo, deben introducirse cuidadosamente en el cdigo
de los programas para que el
narniento sea el esperado. Para intentar evitar los errores
potenciales asociados a una inadecuada
in de los semforos y, en definitiva, para simplificar la
escritura de los programas de procesos
entes, C.A.R. Hoare introdujo en 1974 el concepto de monitor.

Sistemas Operativos Tutora 4

Monitores

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

Sistemas Operativos Tutora 4

Sincronizacin y comunicacin de procesos

You might also like