Está en la página 1de 8

Implantación de Sistemas Operativos

TEMA 2. GESTIÓN DE PROCESOS

1. COMPONENTES DE UN SISTEMA OPERATIVO

En un sistema operativo se distinguen los siguientes componentes:

• Kernel. Es el núcleo del sistema operativo. Cuando arranca el ordenador se


carga en memoria y permanece allí, realizando funciones básicas como:
1. Manejo de la memoria
2. Comunicación entre procesos
3. Control de interrupciones
4. Manejo de condiciones de error
5. Traslado de control de un proceso a otro
6. Control de periféricos
• Programas y Procesos. Un proceso es un programa en ejecución que se
compone de un código que se ejecuta y una estructura de datos.
Los procesos son distintos que los archivos o los programas.
El sistema operativo mantiene para cada proceso un bloque de control de
proceso (PCB), donde se guarda para cada proceso la información necesaria
para reanudarlo si es suspendido y otros datos. Consta de:
- Estado actual del proceso. Situación en la que se encuentra un proceso en
un instante dado. Puede estar en ejecución, preparado o bloqueado.
Un estado está en ejecución cuando está en la CPU; preparado cuando está
listo para ser ejecutado, es decir, está esperando el turno para poder usar su
intervalo de tiempo; y bloqueado cuando está retenido, es decir, está
bloqueado debido a causas múltiples.
La transición de estos tres estados puede hacerse de la siguiente manera:
1. Transición a. Ocurre cuando el programa que está en ejecución
necesita algún elemento, señal, dato, etc., para poder continuar
ejecutándose.
2. Transición b. Cuando un programa o proceso ha utilizado el tiempo
asignado por la CPU para su ejecución y tiene que dejar paso al
siguiente proceso.
3. Transición c. Cuando el proceso que está preparado pasa a ejecución
4. Transición d. Cuando el proceso pasa de estar bloqueado a estar
preparado, es decir, cuando el proceso recibe una orden o señal que
estaba esperando para pasar al proceso de preparado y
posteriormente pasar a ejecución.

1/8
Implantación de Sistemas Operativos

- Identificación unívoca del proceso. A cada proceso se le asigna un PID


(código identificador de proceso) que se utilizará para identificarlo ante el
SO.
- Prioridad del proceso. Cada proceso tiene asignada una prioridad, de forma
que, el proceso de mayor prioridad entre los que están en estado de espera,
se ejecutará.
- Contador de Programa (PC): dirección de memoria de la siguiente
instrucción que debe ejecutar el proceso.
- Zona de memoria asignada. Cada proceso debe tener una zona de memoria
independiente que no puede ser interferida por otros procesos.
- Recursos asociados al proceso como ficheros, semáforos, etc.
- Estadísticas y otros: tiempo real y tiempo de CPU usado, identificador del
proceso, identificador de dueño, proceso padre, procesos hijos, etc.

El sistema mantiene una cola con los procesos que están en estado listo. Los
procesos suspendidos se podrían poner todos en otra cola, pero suele ser más
eficiente manejar colas distintas según cuál sea la condición por la cual están
bloqueados. Así, se maneja una cola de procesos para cada dispositivo.

2. PLANIFICACIÓN DE CPU – MULTIPROCESAMIENTO

Existen ordenadores que disponen de varios procesadores, por lo que son capaces de
ejecutar al mismo tiempo varias tareas, luego disponen de SO especiales denominados
Sistemas multiprocesador. En los ordenadores convencionales, normalmente solo dispone
de un procesador por lo que en cada momento solo se estará procesando una tarea. No
obstante, es posible crear la ilusión de multiprocesamiento por medio de interrupciones,
cambiando el proceso activo cada cierto tiempo aunque no haya finalizado la tarea en
ejecución.

La Planificación de Procesos es un conjunto de mecanismos incorporados al


sistema operativo que establecen el orden en el que se van a realizar los diferentes procesos,
y se encargan de cargar y descargar un proceso de la memoria. Cada proceso es único e
imprescindible. El objetivo de la planificación es dar un buen servicio a todos los procesos
que compitan en un momento dado por un recurso del ordenador.

Cuando hay más de un proceso que está en condiciones de ejecutar en la CPU, se


debe escoger alguno. El encargado de tomar esa decisión es el planificador o scheduler, y el
algoritmo que usa se llama algoritmo de planificación.

Conforme los procesos entran en el sistema, se colocan en una cola de trabajos


formada por todos los procesos que residen en almacenamiento secundario esperando la
asignación de la memoria principal. Los procesos que residen en la memoria principal y
que están listos y esperando su ejecución se mantienen en una cola de procesos listos. La
lista de procesos que espera a un dispositivo de E/S determinado se denomina cola del
dispositivo, y cada dispositivo tiene su propia cola.

2/8
Implantación de Sistemas Operativos

El SO se encarga de compartir la CPU entre los distintos procesos de la manera más


eficiente posible, persiguiendo los siguientes objetivos:

- Justicia. Asegurarse que todos los procesos tengan su turno de CPU.


- Máxima capacidad de ejecución: los trabajos se realicen los más
rápidamente posible, para ello debemos reducir el número de cambios de
proceso.
- Máximo número de usuarios interactivos: para lo que se requiere mucha
memoria y un procesador muy rápido, así como una gestión del procesador
ágil.
- Predecibilidad: una política de planificación debe concebirse de forma que
se pueda saber en todo momento cómo se ejecutará.
- Equilibrio del uso de recursos: para que de todos los procesos puedan
ejecutarse lo más equitativamente posible, consiguiendo que los recursos del
ordenador soporten una ocupación similar al mayor tiempo posible.
- Seguridad de las prioridades: si un proceso se ejecuta con una prioridad, y
es más alta que las del resto, éste se ejecute más rápidamente y sea más
favorecido.

Existen dos formas básicas de realizar esta conmutación entre tareas:

• Cooperative switching. Las tareas se suspenden voluntariamente (o por


finalización de ésta o por cederle la CPU a otra tarea) cada cierto tiempo en
puntos determinados de su ejecución. Ejemplo: Windows 3.1
• Pre-emptive switching. El SO interrumpe la tarea que se está ejecutando
según cierto algoritmo de prioridades. Ejemplos: UNIX y Windows NT

Cuando un proceso se suspende temporalmente, deberá reiniciarse después,


exactamente en el mismo estado en que se encontraba cuando se detuvo. El SO se encarga
de guardar el estado en el que está la tarea al suspenderse, guardando el contenido de
registros del procesador y reemplazándolos con valores de la próxima tarea a ejecutar.

Este cambio de contenido de registros se denomina cambio de contexto. Este


cambio requiere un tiempo muy pequeño en comparación al tiempo que se le asigna a cada
tarea para su ejecución.

3. ALGORITMOS DE PLANIFICACIÓN

La planificación indica al ordenador los procesos que deben ejecutarse y los estados
que deben adoptar.

Hay dos tipos de algoritmos según las transiciones entre procesos:

• Los no apropiativos, son aquellos en los que los procesos que se están ejecutando
sólo suelta el procesador cuando acaba o se bloquea.

3/8
Implantación de Sistemas Operativos

• Los apropiativos, son aquellos en los que un proceso que no se ha bloqueado o no


ha terminado su ejecución, puede dejar de ejecutarse porque lo decide el
planificador.

Los algoritmos no apropiativos tienen el problema de que hay muchos procesos en


espera. El tiempo de espera puede ser muy lento. Tienen la ventaja de que son muy
sencillos, y para incrementarlos se incrementan con una cola.

Alguno de los algoritmos de planificación más importantes son:

• Algoritmo de rueda o Round-Robin. Asigna rotativamente los mismos


tiempos de ejecución a los diferentes procesos. A cada proceso se le asigna el
mismo quantum, esto es, el mismo intervalo de tiempo de ejecución.
Ejemplo: Supongamos que se están ejecutando tres procesos. Cada uno de ellos
consume un número de tiempos o ciclos de CPU: A consume 7, B 5, y C 8. El
primer proceso lanzado es A, el segundo B y el tercero C. El quantum es 1.
• Algoritmo por prioridades o multinivel. Son los más complejos y eficaces.
Asigna los tiempos de ejecución de la CPU según una lista de prioridades. El
tiempo de ejecución del procesador se irá destinando, en primer lugar, de forma
secuencial a los procesos de mayor nivel. Terminados éstos, se ejecutarán los
procesos del nivel inferior, y así sucesivamente, hasta llegar a los procesos del
nivel más bajos.
Ejemplo: Se lanzan tres procesos A, B y C, que consumen 7, 5 y 8 ciclos
respectivamente. A y C son de prioridad alta, y B de prioridad baja. Se lanza
primero A, en segundo lugar B y en tercero C.
• Algoritmo por intervalos de espera. Según se va ejecutando el proceso, el
tiempo que la CPU le destina puede ir aumentando o disminuyendo, según la
prioridad que le hayamos asignado. Si un proceso es prioritario, irá utilizando,
según se vaya ejecutando, intervalos más largos de tiempo de ejecución de la
CPU.
Ejemplo: Se lanzan tres procesos al mismo tiempo. Los ciclos que consume
cada uno son A 7, B 5 y C 8. Sea C el proceso más prioritario, B un poco menos
prioritario y A el de más baja prioridad.
• FIFO. Primero en llegar, primero en ser servido. Es el más sencillo, pero el más
ineficaz. Los procesos se ejecutan según el orden de llegada.
Ejemplo: Se lanzan tres procesos. El primer proceso lanzado es A, el segundo B
y el tercero C. Los ciclos que consumen respectivamente son 7, 5 y 8.
• Algoritmo Shortest Remaining Time o SRT. Permite asignar el tiempo de
ejecución de forma prioritaria a procesos muy cortos para ejecutarlos en el
menor tiempo posible. Si se está ejecutando un proceso más largo, el SO le
quitará la ejecución de la CPU para asignársela al proceso más corto. De esta
forma, el usuario del proceso corto obtendrá resultados en un tiempo mínimo, y
el usuario del proceso largo casi no notará esta circunstancia.
Ejemplo: Se lanzan tres procesos. El primer proceso lanzado es A, el segundo B
y el tercero C. Los ciclos que consumen respectivamente son 7, 5 y 8.
• SPN, HRRN y Feedback

4/8
Implantación de Sistemas Operativos

Ejercicio: Realizar para cada algoritmo la ejecución en CPU de cinco procesos A, B,


C, D y E, que llegan sucesivamente en los instantes 0, 2, 4, 6 y 8, y que consumen 3, 6, 4, 5
y 2 ciclos de CPU, siendo A y C de prioridad media, B de prioridad alta y el resto de
prioridad media.

También podemos encontrar:

– Los algoritmos de colas múltiples consiste en que tenemos diferentes colas de


procesos listos para ejecutarse, en vez de tener sólo una única cola. Cada una de las
colas, tienen distinta prioridad.
– Los algoritmos de colas múltiples con traspaso es igual que el anterior, pero se
permite que los procesos salten de cola para conseguir que las colas de menor
prioridad puedan ejecutarse. También se le puede aumentar la prioridad a un
proceso que lleve en la cola mucho rato.

4. SINCRONIZACIÓN DE PROCESOS

Cuando se ejecutan varios procesos a la vez, es posible que éstos compartan uno o
varios recursos del sistema (monitor, memoria, ...). El objetivo del SO es permitir que
varios procesos compartan recursos sin que se produzcan problemas.

Los procesos independientes pueden ejecutarse a la vez, detenerse y rearrancarse


sin ningún efecto negativo, son procesos deterministas y reproducibles.

Los procesos cooperantes comparten su estado, su funcionamiento no es


determinista (pueden darse situaciones inesperadas) y puede ser irreproducible.

Es necesario que exista una forma de prohibir que en los procesos que compartan
recursos y donde no exista sincronización ente ellos, más de un proceso lea o escriba datos
compartidos a la vez.

Lo que hay que conseguir es:


• Exclusión mutua. Es un mecanismo por el que se asegura que sólo una persona
o proceso estará accediendo a un recurso no compartible. Para garantizar el
acceso exclusivo a un recurso es necesario garantizar el acceso exclusivo a las
instrucciones que manejan dicho recurso.
• Sección Crítica. Es la sección de código en la que se realizan operaciones que
pueden dar lugar a interferencias con otros procesos. Así cuando un proceso
quiere acceder exclusivamente a un recurso debe: Solicitarlo, Ejecutar la sección
crítica y Liberarlo. Cuando un proceso esté ejecutando su Sección Crítica,
ningún otro proceso puede estar en ella. Un proceso no puede dormirse en su
Sección Crítica porque estará bloqueando la Sección Crítica para otros procesos
en ejecución.

5/8
Implantación de Sistemas Operativos

Existen ocasiones en las que los procesos deben sincronizar sus actividades, de
modo que un proceso no puede continuar hasta que otro no haya completado algún tipo de
actividad. Es responsabilidad del sistema operativo proveer mecanismos mediante los
cuáles pueda llevarse a cabo esta sincronización.

Podemos clasificar los algoritmos de sincronización en tres grupos:


- Espera activa: Son aquellos algoritmos que basan su funcionamiento en
establecer la espera de entrada a la sección crítica con un bucle que será “roto”
en el momento en que se cumpla una determinada condición. Se llaman de
espera activa porque el proceso no queda en estado bloqueado durante su
ejecución, sino que estará compitiendo por el procesador constantemente. Esto
hace que estos algoritmos sobrecarguen el sistema innecesariamente, son los
primeros mecanismos puestos en práctica para resolver el problema, y pueden
ser utilizados en el caso de no contar con otro tipo de mecanismos.
- Espera no activa: Son los algoritmos que establecen la espera para entrar en la
sección crítica bloqueando el proceso, haciendo que deje de competir por el
procesador hasta que se cumpla la condición de desbloqueo.
- Mecanismos hardware: Son instrucciones hardware o algoritmos basados en
ellas, que garantizan la exclusión mutua.

A) Espera Activa
- Algoritmo de Variables de Cierre/Espera con mutex: Este algoritmo utiliza un
flag al entrar a la sección crítica se fija si es uno o cero. Si es cero lo pone a uno y
entra en la sección crítica; si es uno espera hasta que valga cero. Antes de salir de la
sección crítica iguala el flag a cero. Este algoritmo sin embargo no resuelve el
problema de la sección crítica porque si hubiera una interrupción justo después de
comprobar el estado del flag y se accediera a la sección crítica antes de cambiar el
flag, otro proceso podría acceder a la sección crítica, cambiar el flag a uno y habrían
dos procesos accediendo a la sección crítica.
- Algoritmo de Alternación Estricta /Alternancia. En este algoritmo dos procesos
comparten una variable Turno, pero en vez de utilizar el mismo código se usa
distinto código para cada proceso. Si uno se bloquea el otro queda esperando;
postergación indefinida.
- Algoritmo de Petterson (o Algoritmo de Dekker). Este algoritmo combina las dos
ideas anteriores. Cuando turno es igual al valor del proceso, éste entra a la sección
crítica; cuando sale pone el valor de otro proceso en turno. Además cada proceso
posee su flag que actualizará periódicamente. Soluciona el problema de la sección
crítica y evita que un proceso quede en espera mientras que otro proceso esté en su
sección no crítica. Para n procesos la idea es más compleja.
B) Espera no Activa
- Semáforos. Es una variable protegida (S) e indica el número de procesos que
pueden acceder. Sólo puede ser modificada por la rutina de inicialización, y por la
entrada y salida en la sección crítica.

6/8
Implantación de Sistemas Operativos

- Monitores. Es un tipo de procedimiento, variable y estructura de datos que se


agrupan en un tipo de módulo especial. Tienen una propiedad importante: sólo un
proceso puede estar activo en un monitor en un instante de tiempo.
C) Mecanismos Hardware: Deshabilitación de Interrupciones. La solución más simple es
que cada proceso desactive todas las interrupciones justo después de entrar en su
sección crítica y las vuelva a activar antes de salir de ella. Con las interrupciones
deshabitadas no pueden ocurrir interrupciones al reloj por lo cual no se cambiará a otro
proceso. Este método no es muy atractivo ya que no es muy prudente dar a los procesos
del usuario el poder de desactivar las interrupciones. Si un usuario lo hiciera y nunca las
volviera a activar sería el fin del sistema. Además si fuera un sistema con más de una
CPU la desactivación de interrupciones solo afectaría una de ellas y las otras podrían
acceder a la sección crítica.

5. BLOQUEOS

La mayoría de los recursos que existen en cualquier ordenador sólo pueden ser
utilizados por un proceso a la vez.

La apropiación de un dispositivo E/S para uso exclusivo puede provocar problemas


graves que el SO también deberá encargarse de resolver.
Cuando varios procesos compiten por recursos, es posible que se dé una situación
en la que ninguno de ellos pueda proseguir, debido a que los recursos que cada uno de ellos
necesite, esté ocupado por los otros. Esta situación se conoce con el nombre de Deadlock o
interbloqueo o abrazo mortal.

Para que haya bloqueo mutuo, deben darse simultáneamente las siguientes
condiciones:
1. Exclusión mutua. Existe al menos un recuso el cual sólo puede estar siendo
utilizado por un proceso en un instante de tiempo determinado.
2. No apropiación: Los recursos no pueden ser expropiados a los procesos, es decir,
un recurso sólo podrá ser liberado voluntariamente por sus propietarios.
3. Posesión y espera. Existe al menos un proceso que tienen recursos asignados y al
mismo tiempo está esperando poder adquirir otros recursos.
4. Espera circular: Existe un conjunto {P0, P1, ..., Pn} de procesos tales que el
proceso Pi está esperando por un recurso retenido por Pi+1 para 0<= i < n, y Pn esté
esperando recurso retenido por P0.

Los SO emplean distintas técnicas para enfrentarse al problema de los bloqueos:


• Algoritmo del avestruz. Consiste en ignorar el problema. Si después de
estudiar la probabilidad de bloqueos en el sistema, se llega a la conclusión de
que ésta es muy baja, es posible que los programadores decidan no perder el
tiempo en implementar técnicas de detección y corrección de bloqueos.

7/8
Implantación de Sistemas Operativos

• Prevenir. Consiste en imponer restricciones a los procesos de manera que sea


estructuralmente imposible la ocurrencia de un bloqueo mutuo. La idea es
asegurar que no se dé al menos una de las cuatro condiciones necesarias para
que haya bloqueo mutuo.
• Evitarlos. Mediante un estudio cuidadoso de la asignación de recursos, el SO
puede conseguir que nunca se produzcan bloqueos, chequeando que sea seguro
conceder un recurso, antes de otorgarlo.
• Detección y Recuperación. Los bloqueos se producen pero el SO se encarga de
detectarlos y recuperarse de ellos.

8/8

También podría gustarte