Está en la página 1de 32

Tema 3.

Gestión de Procesos
• Introducción: En lo que respecta a la gestión de procesos, el sistema
operativo debe ser capaz de soportar:
• La creación, suspensión, reanudación, eliminación y planificación de
procesos
• La comunicación y la sincronización entre procesos
• Procesos: Un proceso es un programa en ejecución que necesita estar
cargado en memoria y disponer de recursos (cpu, memoria, archivos,
dispositivos de E/S) para cumplir su objetivo, se trata de una entidad activa.
Mientras que los programas son un conjunto de archivos que están
almacenados en algún dispositivo de almacenamiento (disco duro, pendrive…)
y cuyo código fuente está escrito en algún lenguaje de programación. Cuando
este conjunto de archivos se ejecutan, entonces pasan a ser un proceso.
A los procesos, dependiendo especialmente del sistema operativo utilizado,
se les denomina flujos de control, tareas, threads o hilos, según el contexto.
Cuando se ejecuta más de un proceso de forma concurrente en un sistema,
todos necesitan que el propio sistema les suministre una serie de recursos.
Para ello, el sistema operativo gracias al cpu (Unidad Central de Proceso), se
encarga de asignar estos recursos en un orden adecuado y atendiendo a
ciertas prioridades. También realiza funciones de sincronización de todos los
procesos, para que se ejecuten en el orden adecuado y según la prioridad
definida.
Cada vez que un programa se convierte en proceso, es decir, cada vez que se
ejecuta un programa, además de ubicar en memoria las instrucciones que lo
componen y los datos asociados a dicho proceso, se le asocia una estructura
de datos.
Esta estructura de datos, que es única para cada proceso, identifica el
proceso respecto de los demás y sirve para controlar su correcta ejecución.
Es lo que se denomina bloque de control del proceso o BCP
• Estados de un Proceso: El estado de un proceso se define por su actividad
actual, cambiando a medida que se ejecuta. La ejecución de un proceso alterna
una serie de ráfagas de CPU y E/S.
Un proceso puede pasar por los siguientes estados:
nuevo, preparado, en ejecución, bloqueado y terminado,
puede también solo ejecutarse y terminarse.
Básicamente los estados posibles de un proceso, son los siguientes:
• En ejecución: El procesador está ejecutando instrucciones del programa que lo
compone y tiene concedido el tiempo de uso de CPU en un instante concreto.
• Preparado, en espera o activo: Un proceso está preparado para ser ejecutado;
es decir, está esperando turno para poder utilizar su intervalo de tiempo y poner
en funcionamiento sus instrucciones accediendo a los recursos del sistema.
• Bloqueado: El proceso está retenido; es decir se encuentra bloqueado debido a
causas múltiples. Una de estas causas puede ser que dos procesos utilicen el
mismo fichero de datos. Otra causa puede ser que dos procesos necesiten utilizar
la misma unidad de CD-ROM para cargar determinados datos, etc.
En general, todos los procesos dentro de cualquier sistema operativo tienen
ciertas características que los identifican. Cada programa en ejecución, es decir,
cada proceso, tiene un identificador que lo discrimina de los demás.
Cada proceso tiene un número asignado por el sistema operativo que sirve para
identificar dicho proceso, lanzarlo a ejecución, detenerlo, cancelarlo, reanudarlo,
etc. Este identificador de proceso se nombra con la abreviatura PID (process
identifier)
En cada tipo de sistema operativo, los procesos los lanzan
normalmente otros procesos. Es decir, que cada proceso que se lanza a
ejecución depende, en la mayoría de los casos, de otro proceso
denominado proceso padre. De esta manera, al nuevo proceso lanzado
se le denomina proceso hijo.
• Transiciones de los Procesos: Una vez que un programa se ha
lanzado y se ha convertido en un proceso, puede atravesar varias
fases o estados hasta que finaliza o termina.
Cuando un proceso se lanza, nunca se ejecuta directamente, sino que
se coloca en la cola de procesos en un estado denominado
“preparado”. Cuando el CPU le asigna su tiempo, el proceso pasa de
preparado a ejecución. Estos dos estados se alternarán en caso de que
se esté ejecutando más de un proceso en el sistema.
Los cambios de estado en los que se puede encontrar un proceso se denominan
transiciones:
• Nuevo-Preparado: el sistema operativo está preparado para admitir un
proceso más.
• Preparado-Ejecución: El planificador escoge un proceso para la ejecución.
(tiempo de CPU para ejecutarse)
• Ejecución-Preparado: El proceso en ejecución es interrumpido y expulsado del
procesador, debido a que ya ha consumido su tiempo asignado o porque otro
proceso de mayor prioridad está esperando.
• Ejecución-Bloqueado: El proceso abandona voluntariamente el CPU y espera a
un evento externo.
• Bloqueado-Preparado: Cuando finaliza el evento que estaba esperando el
proceso, y luego pasa al estado preparado.
• Ejecución-Terminado: El proceso termina su ejecución (terminación normal)
• Preparado/Bloqueado-Terminado: El proceso es eliminado (terminación
anormal).
En un sistema multiproceso, cuando un proceso pasa de un estado a otro
(por ejemplo, de espera a ejecución), lo que se producirá es un cambio de
contexto.
• Bloque de Control de Procesos (BCP): Los sistemas operativos
disponen de los servicios necesarios para la gestión de los procesos,
tales como su creación, terminación, ejecución periódica, cambio de
prioridad, etc. Además, durante su existencia, los procesos pasan por
distintos estados cuyas transiciones están controladas por el sistema
operativo.
Toda la información de un proceso que el sistema operativo necesita
para controlarlo, se mantiene en una estructura de datos denominado
“Bloque de Control de Procesos” o BCP.
En sistemas operativos multiproceso, el sistema operativo mantiene
varias listas de Bloques de Control de Procesos para cada uno de los
estados del sistema.
El BCP de cada proceso almacena información como:
• Estado actual del proceso: Ejecución, preparado o bloqueado.
• Identificador del proceso: Dependiendo del sistema operativo, a cada
proceso se le asigna un PID (process identifier)
• Prioridad del proceso: Prioridad asignada por el planificador.
• Ubicación en memoria: Dirección de memoria en la que se carga el
proceso.
• Recursos utilizados: Recursos de hardware y software para poder
ejecutarse.
El sistema operativo es el responsable de asignar recursos a los procesos,
crear y destruir procesos, parar y reanudar procesos y proporcionar que
los procesos se puedan comunicar y sincronizar.
La parte del sistema operativo encargada de seleccionar el siguiente
proceso para su ejecución es el planificador y el algoritmo que utiliza, es
el algoritmo de planificación.
Todo proceso consume recursos de hardware de un Sistema Informático,
y el sistema operativo es el que determina, mediante el planificador, de
qué forma se asignan los recursos a cada proceso.
• Algoritmos de Planificación:
Un algoritmo de planificación se utiliza para calcular los recursos que
consume otro algoritmo o proceso al realizar una determinada tarea. Ej:
tiempo de finalización, porcentaje de utilización de CPU, etc.
Gracias a los algoritmos de planificación, especialmente en sistemas
operativos multiproceso o en sistemas operativos en red, siempre y
cuando se ejecuten varios procesos en el mismo equipo, el CPU se
encarga de asignar tiempos de ejecución a cada proceso según el tipo de
algoritmo y la prioridad de cada proceso, para la ejecución ordenada de
los procesos
Algunos de los algoritmos de planificación más utilizados en sistemas
operativos multiproceso y multiusuario, son:
(actualmente utilizados en sistemas operativos como: Windows, Unix y Linux)
• Algoritmo de Rueda o Round-Robin: Asigna rotativamente tiempos
de ejecución a los diferentes procesos. A cada uno se le asigna el
mismo quantum o intervalo de tiempo de ejecución. La selección entre
los procesos se realiza mediante una cola FIFO (First In First Out, el
primero en entrar es el primero en salir o ser servido). Es el algoritmo
utilizado normalmente en la asignación de tiempos en sistemas
operativos multiusuario y multiproceso, y en la actualidad se puede
decir que es utilizado también en sistemas operativos monousuario y
que trabajan en multitarea.
• Algoritmo FIFO (First In First Out) o FCFS (First Come First Serve):
Los ciclos de CPU asignados a cada proceso, se asignan en función de
una cola FIFO. Al primer proceso que llega se le asignan tiempos o
ciclos de CPU hasta que termina completamente. A continuación, se
ejecuta completo el siguiente proceso que está en la cola FIFO y así
sucesivamente hasta terminar con el último proceso. Este algoritmo de
planificación normalmente se utiliza para la gestión de trabajos en
colas de impresión, respecto de los trabajos que van llegando a la
impresora.
• Sincronización de Procesos:
Los semáforos son un mecanismo de sincronización de procesos
inventados por Edsger Dijkstra en 1965, y se utilizaron por primera vez en
el sistema operativo THEOS.
Los semáforos permiten al programador asistir al planificador del sistema
operativo en su toma de decisiones de manera que permiten sincronizar
la ejecución de dos o más procesos
La sincronización es la transmisión y recepción de señales que tiene por
objeto llevar a cabo el trabajo de un grupo de procesos cooperativos. Es
la coordinación y cooperación de un conjunto de procesos para asegurar
la comparación de recursos de computo.
Un semáforo es una variable especial (o tipo abstracto de datos) que
constituye el método clásico para restringir o permitir el acceso a
recursos compartidos (por ejemplo: un recurso de almacenamiento del
sistema o variables del código fuente) en un entorno de
multiprocesamiento (en el que se ejecutarán varios procesos en forma
concurrente)
Para evitar la espera activa, un semáforo puede tener asociada una cola
de procesos (normalmente una cola FIFO). Si un proceso efectúa una
operación P en un semáforo que tiene valor cero, el proceso es detenido
y añadido a la cola del semáforo.
La sincronización entre procesos permite intercambiar señales de
tiempo (arranque /parada), para que los procesos puedan sincronizarse
es necesario disponer de servicios que permitan bloquear o suspender
bajo determinadas circunstancias la ejecución de un proceso. Los
distintos hilos de ejecución comparten una serie de recursos
Los mecanismos de sincronización permiten forzar a un proceso a
detener su ejecución hasta que ocurra un evento en otro proceso.
• Hilos, hebras o threads:
En los actuales sistemas operativos, un proceso puede tener internamente
varias actividades concurrentes llamadas hilos de ejecución o threads.
Un hilo o hebra, es una secuencia de tareas encadenadas muy pequeñas que
pueden ser ejecutadas por el sistema operativo
Son como “mini procesos”, unidades pequeñas en las que se divide un proceso,
cada una de las cuales realiza una acción.
Una hebra o hilo es un subproceso de un proceso que consume recursos propios
pero que depende del proceso padre que lo ha ejecutado.
Las hebras de un mismo proceso compartirán recursos, tales como: espacio de
memoria, archivos, situación de autenticación, recursos de hardware, recursos
de software, etc.
Esta técnica permite simplificar el diseño de una aplicación que debe llevar a
cabo distintas funciones simultáneamente.
Cuando un hilo modifica un dato en la memoria, los otros hilos acceden a ese
dato modificado inmediatamente.
Un proceso tradicional es igual a una tarea con un solo hilo. Los hilos
permiten la ejecución concurrente de varias secuencias de instrucciones
asociadas a diferentes funciones dentro de un mismo proceso,
compartiendo un mismo espacio de direcciones y las mismas estructuras
de datos del núcleo
Un proceso sigue en ejecución mientras al menos uno de sus hilos de
ejecución siga activo. Cuando el proceso finaliza, todos sus hilos de ejecución
también han terminado. Asimismo en el momento en el que todos los hilos
de ejecución finalizan, el proceso no existe más y todos sus recursos son
liberados.
Algunos lenguajes de programación tienen características de diseño
expresamente creadas para permitir a los programadores lidiar con hilos de
ejecución (como Java o Delphi). Otros lenguajes de programación desconocen
la existencia de hilos de ejecución y estos deben ser creados mediante
llamadas de biblioteca especiales que dependen del sistema operativo en el
que estos lenguajes están siendo utilizados (como es el caso del C y del C++).
• Funcionalidad de los Hilos: Al igual que los procesos, los hilos poseen un
estado de ejecución y pueden sincronizarse entre ellos para evitar problemas
de compartición de recursos. Generalmente, cada hilo tiene una tarea
específica y determinada, como forma de aumentar la eficiencia del uso del
procesador.
• Estados de un Hilo (thread): Los principales estados de los hilos son:
Ejecución, Listo y Bloqueado.
No tiene sentido asociar estados de suspensión de hilos ya que este es un
concepto de proceso. En todo caso, si un proceso es expulsado de la memoria
principal (RAM), todos sus hilos deberán estarlo también, ya que todos
comparten el mismo espacio de direcciones del proceso.
• Cambio de Estados:
• Creación: Cuando se crea un proceso, también se crea un hilo para ese proceso.
Luego, este hilo a su vez, puede crear otros hilos dentro del mismo proceso,
proporcionando un puntero de instrucción y los argumentos del nuevo hilo. El hilo
tendrá su propio contexto y su propio espacio de la columna, y pasará al final de
los Listos.
• Bloqueo: Cuando un hilo necesita esperar por un suceso, se bloquea (salvando
sus registros de usuario, contador de programa y punteros de pila). Ahora el
procesador podrá pasar a ejecutar otro hilo que esté al principio de los Listos
mientras el anterior permanece bloqueado.
• Desbloqueo: Cuando el suceso por el que el hilo se bloqueó se produce, el hilo
pasa a la final de los Listos.
• Terminación: Cuando un hilo finaliza su tarea, se liberan tanto su contexto como
también sus columnas.
• Ventajas de los Hilos vs. los Procesos: Si bien los hilos son generados
a partir de la creación de un proceso, podemos decir que un proceso
es un hilo de ejecución, conocido como Monohilo. Pero las ventajas de
los hilos se dan cuando se tienen Multihilos (multithreading), que
ocurre cuando un proceso tiene múltiples hilos de ejecución los cuales
realizan actividades distintas, que pueden ser o no ser cooperativas
entre sí. Los beneficios de los hilos se derivan de las implicaciones de
rendimiento:
1. Se tarda mucho menos tiempo en crear un hilo nuevo en un proceso
ya existente, que en crear un nuevo proceso.
2. Se tarda mucho menos tiempo en terminar un hilo que un proceso, ya
que cuando se elimina un proceso se debe eliminar el BCP1 del mismo,
mientras que para un hilo solamente se elimina su contexto y la pila.
3. Se tarda mucho menos tiempo en cambiar entre dos hilos de un
mismo proceso.
4. Los hilos aumentan la eficiencia de la comunicación entre programas
en ejecución, si existe una aplicación que debe implementarse como un
conjunto de unidades de ejecución relacionadas, será más eficiente
hacerlo con una colección de hilos que con una colección de procesos
separados.
• Sincronización de Hilos: Todos los hilos comparten el mismo espacio
de direcciones y otros recursos, como pueden ser archivos abiertos.
Cualquier modificación de un recurso desde un hilo afecta al entorno
del resto de los hilos del mismo proceso. Por lo tanto, es necesario
sincronizar la actividad de los distintos hilos para que no interfieran
unos con otros o corrompan estructuras de datos.
Una ventaja de la programación multihilo es que los programas
operan con mayor velocidad en sistemas de computadores con
múltiples CPUs (sistemas multiprocesador o a través de un grupo de
máquinas) ya que los hilos del programa se prestan verdaderamente
para la ejecución concurrente.
Es posible que los hilos requieran de operaciones atómicas para impedir
que los datos comunes sean cambiados o leídos mientras estén siendo
modificados, para lo que usualmente se utilizan los semáforos. El
descuido de esto puede generar un interbloqueo o bloqueo mutuo
(deadlock).
Los semáforos limitan la ejecución simultánea de un código
(procedimiento, línea de código, etc.) a uno o más hilos en un momento
dado. Un semáforo se puede compartir entre varias aplicaciones.

- Investigar sobre el concepto, características y funciones de los


semáforos
- Investigar sobre interbloqueo o bloqueo mutuo en hilos y procesos
Tema 4: Concurrencia de Procesos:
• Introducción: la concurrencia es una propiedad de los sistemas en la
cual los procesos se realizan simultáneamente, y pueden interactuar
entre ellos, es decir son procesados al mismo tiempo, de manera que,
para ejecutar uno de ellos, no hace falta que se haya ejecutado otro.
• La concurrencia de procesos se refiere a las situaciones en las que dos o
más procesos puedan coincidir en el acceso a un recurso compartido o,
dicho de otra forma, que requieran coordinarse en su ejecución
• Un programa concurrente es aquel en el que ciertas unidades de
ejecución internamente secuenciales (procesos o threads), se ejecutan
paralela o simultáneamente, es decir la asignación del tiempo de
procesador a diferentes procesos.
• Los procesos son concurrentes si existen simultáneamente. Los procesos
concurrentes pueden funcionar en forma totalmente independiente
unos de otros, o pueden ser asíncronos, lo que significa que en
ocasiones requieren cierta sincronización o cooperación.
• Cuando existen varios usuarios intentando modificar los datos al mismo
tiempo, se necesita establecer algún tipo de control para que dichas
modificaciones de un usuario no interfieran en las de los otros usuarios,
a este sistema se le denomina control de concurrencia.
La concurrencia abarca varios aspectos como ser: la comunicación entre
procesos y la compartición de o competencia por recursos, la
sincronización de actividades de múltiples procesos y la reserva de
tiempo de procesador para los procesos. También ocurre en sistemas de
tipo monoprocesador multiprogramados
La concurrencia aparece en tres contextos diferentes:
• Múltiples aplicaciones: la multiprogramación permite compartir
dinámicamente el tiempo de procesamiento entre varias aplicaciones
activas
• Aplicaciones estructuradas: como parte de los principios del diseño
modular y de la programación estructurada, algunas aplicaciones
pueden ser programadas eficazmente como un conjunto de procesos
concurrente
• Estructura del sistema operativo: las mismas ventajas son aplicadas a
la programación de sistemas y de hecho los sistemas operativos son a
menudo implementados en si mismos como un conjunto de procesos o
de hilos
El requisito básico para conseguir procesos concurrentes es la capacidad
de aplicar la exclusión mutua, es decir, la capacidad de impedir a
cualquier proceso realizar una acción mientras se le haya permitido a
otro. Entonces, se verán soluciones que no requieren espera activa o
que pueden ser ofrecidas por el sistema operativo, como también
impuestas por el compilador del lenguaje.
Términos clave relacionados con la Concurrencia:
• Interbloqueo, bloqueo mutuo (deadlock): situación en la cual dos o
más procesos son incapaces de actuar porque cada uno esta
esperando que alguno de los otros actúe o haga algo
• Exclusión mutua (mutual exclusion): requisito de que cuando un
proceso este en una sección critica que accede a recursos compartidos,
ningún otro proceso puede estar en una sección critica que acceda a
ninguno de esos recursos compartidos
• Condición de carrera (race condition): situación en la cual múltiples
hilos o procesos leen y escriben un dato compartido y el resultado final
depende de la coordinación relativa de sus ejecuciones
• Inanición (starvation): situación en la cual un proceso preparado para
avanzar es soslayado o retirado indefinidamente por el planificador,
aunque es capaz de avanzar, nunca se le escoge
• Interacción entre procesos:
Se pueden clasificar las formas en que los procesos interaccionan en base al
grado en que perciben la existencia de cada uno de los otros procesos. Los
tres posibles grados de percepción, juntamente con las consecuencias de
cada uno, son los siguientes:
• Procesos que no se perciben entre sí: son procesos independientes que no se
pretende que trabajen juntos. El mejor ejemplo de esta situación es la
Multiprogramación de múltiples procesos independientes, pueden ser trabajos
por lotes o sesiones interactivas o una mezcla. Aunque los procesos no estén
trabajando juntos, el sistema operativo necesita preocuparse de la competencia
por recursos. Por ejemplo, dos aplicaciones independientes pueden querer ambas
acceder al mismo disco, fichero o impresora. El sistema operativo debe regular
estos accesos.
• Procesos que se perciben indirectamente entre sí: Son procesos que no están
necesariamente al tanto de la presencia de los demás mediante sus respectivos ID
de procesos, pero que comparten accesos a algún objeto, como un buffer de E/S.
Tales procesos exhiben cooperación en la compartición del objeto común
• Procesos que se perciben directamente entre sí: Son procesos capaces de
comunicarse entre si vía el ID del proceso y que son diseñados para trabajar
conjuntamente en cierta actividad. Tales procesos exhiben cooperación por
comunicación
Interacción entre procesos
Grado de Percepción Relación Influencia que un Potenciales problemas
proceso tiene sobre otro de control

Procesos que no se Competencia Los resultados de un Exclusión mutua


perciben entre si proceso son Interbloqueo
independientes de la Inanición
acción de los otros
La temporización del
proceso puede verse
afectada
Procesos que se Cooperación por Los resultados de un Exclusión mutua
perciben indirectamente compartición proceso pueden Interbloqueo
entre si (objeto depender de la Inanición
compartido) información obtenida de Coherencia de datos
otros
La temporización del
proceso puede verse
afectada

Procesos que se Cooperación por Los resultados de un Interbloqueo


perciben directamente comunicación proceso pueden Inanición
entre si depender de la
información obtenida de
otros
La temporización del
proceso puede verse
afectada
• Competencia entre procesos por recursos: los procesos concurrentes
entran en conflicto entre ellos cuando compiten por el uso del mismo
recurso
Dos o mas procesos necesitan acceso a un recurso durante el curso de su
ejecución. Ningún proceso se percata de la existencia de los otros
procesos y ninguno debe verse afectado por la ejecución de los otros
procesos. Es decir, cada proceso debe dejar inalterado el estado de cada
recurso que utilice. Ejemplos de recursos son: los dispositivos de E/S, la
memoria, el tiempo de procesador y el reloj
No hay intercambio de información entre los procesos en competencia.
No obstante, la ejecución de un proceso puede afectar al comportamiento
de los procesos en competencia. Si dos procesos desean acceder al mismo
recurso único, entonces el sistema operativo reservará el recurso para uno
de ellos, y el otro proceso tendrá que esperar. Por lo tanto, el proceso al
que se le niega el acceso será relentizado. En un caso extremo, el proceso
bloqueado puede no conseguir nunca el recurso y por lo tanto no
terminar nunca satisfactoriamente
En el caso de procesos en competencia, deben afrontarse problemas de
control. Primero esta la necesidad de exclusión mutua. Supóngase que dos
o más procesos requieren acceso a un recurso único no compartible, como
es una impresora. Durante el curso de la ejecución, cada proceso estará
enviando mandatos al dispositivo de E/S, recibiendo información de
estado, enviando datos o recibiendo datos. Es decir, un recurso crítico, o la
parte de programa que lo utiliza como la sección critica del programa. Es
importante que solo se permita un programa al mismo tiempo en su
sección critica.
En el caso de una impresora, por ejemplo, se quiere que cualquier proceso
individual tenga el control de la impresora mientras imprime el archivo
completo. De otro modo, las líneas de los procesos en competencia se
intercalarían.
• Cooperación entre procesos vía compartición: este caso cubre procesos
que interaccionan con otros procesos sin tener conocimiento explicito
de ellos. Por ejemplo, múltiples procesos pueden tener acceso a
variables compartidas, a ficheros o a bases de datos compartidas. Los
procesos pueden usar y actualizar los datos compartidos sin referenciar
otros procesos, pero saben que otros procesos pueden tener acceso a
los mismos datos. Así, los procesos deben cooperar para asegurar que
los datos que comparten son manipulados adecuadamente. Los
mecanismos de control deben asegurar la integridad de los datos
compartidos.
Dado que los datos están contenidos en recursos (dispositivos E/S,
memoria), los problemas de control de exclusión mutua, interbloqueo e
inanición están presentes de nuevo. La única diferencia es que los datos
individuales pueden ser accedidos de dos maneras diferentes, lectura y
escritura, y solo las operaciones de escritura deben ser mutuamente
exclusivas.
• Cooperación entre procesos vía comunicación: En los anteriores
casos, cada proceso tiene su propio entorno aislado que no incluye a
los otros procesos. Las interacciones entre procesos son indirectas, en
ambos casos hay cierta compartición, en el caso de la competencia
existen recursos compartidos sin ser conscientes de los otros
procesos. En el segundo caso, hay compartición de valores y aunque
cada proceso no es explícitamente consciente de los demás procesos,
es consciente de la necesidad de mantener integridad de datos.
• Cuando los procesos cooperan vía comunicación, los diversos
procesos involucrados participan en un esfuerzo común que los
vincula a todos ellos. La comunicación proporciona una manera de
sincronizar o coordinar varias actividades. La comunicación se
fundamenta en mensajes de algún tipo (los procesos no comparten
nada), por lo tanto, la exclusión mutua no es un requisito de control
en este tipo de cooperación. Sin embargo, los problemas de
interbloqueo e inanición están presentes.
• Ejemplo de interbloqueo: cuando dos procesos pueden estar
bloqueados, cada uno esperando por una comunicación del otro. Como
ejemplo de inanición: considérense tres procesos, P1, P2 y P3 que
muestran el siguiente comportamiento. P1 esta intentando
repetidamente comunicarse con P2 o con P3, y P2 y P3 están ambos
intentando comunicarse con P1. Podría suceder una secuencia en la cual
P1 y P2 intercambiasen información repetidamente, mientras P3 está
bloqueado esperando comunicación de P1. No hay interbloqueo porque
P1 permanece activo, pero P3 pasa hambre (inanición).
• Exclusión Mutua en Sistemas Operativos:
La aplicación de la exclusión mutua crea dos problemas de control
adicionales:
- el interbloqueo (deadlock)
- la inanición (starvation)
• Requisitos para la exclusión mutua:
• Un proceso que se interrumpe en una sección no crítica debe hacerlo sin
interferir con 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.
• Esta técnica permite resolver la mayoría de los problemas de
sincronización entre procesos y forma parte del diseño de muchos
sistemas operativos y de lenguajes de programación concurrentes
• Cualquier mecanismo o técnica que vaya a proporcionar exclusión mutua
debe cumplir con los siguientes requisitos:
1. Solo se permite un proceso al tiempo dentro de su sección
critica, de todos los procesos que tienen secciones criticas para el
mismo recurso u objeto compartido
2. Un proceso que se para en su sección no critica debe hacerlo sin
interferir con otros procesos
3. No debe ser posible que un proceso que solicite acceso a una
sección critica sea postergado indefinidamente: ni interbloqueo, ni
inanición
4. Cuando ningún proceso está en una sección critica, a cualquier
proceso que solicite entrar en su sección critica debe permitírsele
entrar sin demora
5. No se hacen suposiciones sobre las velocidades relativas de los
procesos ni sobre el número de procesadores
6. Un proceso permanece dentro de su sección critica solo por un
tiempo finito
La concurrencia es fundamental en ambientes de multiprogramación,
multiprocesamiento y de procesamiento distribuido, también en la
tecnología de diseño de sistemas operativos, cuando múltiples procesos
están ejecutando concurrentemente, en el caso de un sistema
multiprocesador y también de un sistema multiprogramado de procesador
único, surgen cuestiones o problemas sobre la resolución de conflictos y la
cooperación.

También podría gustarte