Está en la página 1de 87

Sistemas Operativos

Unidad 2
Administración de Procesos
Unidad 2
Administración de Procesos
Sistemas Operativos

2.1 Introducción
El modelo de procesos

Todo el software ejecutable de la


computadora se organiza en varios procesos
secuenciales o simplemente procesos.
Los procesos no deben programarse con
base en supuestos acerca de los tiempos
El modelo de procesos
Varios procesos pueden compartir un solo
procesador
Se usa algún algoritmo de planificación para
determinar cuándo hay que dejar de trabajar en
un proceso y atender otro
Creación de procesos
 Hay cuatro sucesos principales que causan la
creación de procesos:
Inicialización del sistema
Ejecución de una llamada al sistema para crear
procesos por parte de un proceso en ejecución
Solicitud de un usuario para crear un proceso
Inicio de un trabajo por lotes
Cuando se arranca un sistema operativo se
crean varios procesos

Primer plano: interactúan con usuarios


(humanos) y trabajan para ellos
Segundo plano: tienen una función
específica
Creación de procesos
Terminación de procesos

Terminación normal (voluntaria)


Terminación por error (voluntaria)
Error fatal (involuntaria)
Terminado por otro proceso
(involuntaria)
Jerarquías de procesos
En UNIX: un proceso y todos sus hijos y
sus demás descendientes forman un grupo
de procesos
Cuando un usuario envía una señal desde el
teclado ésta se entrega a todos los miembros
del grupo
Cada proceso puede:
Atrapar la señal
Ignorarla
Realizar la acción predeterminada
Jerarquías de procesos
Windows no tiene el concepto de jerarquía de
procesos
Todos los procesos son iguales
El padre recibe una "ficha" especial (llamada
[identificador]) que le sirve para controlar al hijo
El padre está en libertad de transferir la ficha a
algún otro proceso
En UNIX los procesos no pueden desheredar a
sus hijos
Estados de procesos
Estados de procesos
El nivel más bajo del sistema operativo
es el planificador con diversos procesos
más arriba
Todo el manejo de interrupciones y los
pormenores de la suspensión y
reanudación de procesos quedan ocultos
en lo que llamamos planificador
Estados de procesos
Implementación de procesos

El SO mantiene una tabla (un arreglo de


estructuras) llamada tabla de procesos
con una entrada por proceso
Esta entrada contiene información acerca
del estado del proceso

Su contador de programa


Apuntador de pila
Asignación de memoria
Estado de sus archivos abiertos
Información contable y de planificación
Otra información
Implementación de procesos
El manejo de interrupciones y la
planificación
El modelo de subprocesos.
Hilos
Los subprocesos aportan al modelo de procesos la
posibilidad de que haya varias ejecuciones en el mismo
entorno de un proceso en gran medida independientes
una de otra
Tener múltiples subprocesos ejecutándose en paralelo
en un proceso es análogo a tener múltiples procesos
ejecutándose en paralelo en una computadora
El modelo de subprocesos
El modelo de subprocesos
Sistemas Operativos

2.2 Comunicación entre procesos


Comunicación entre procesos
Saber como un proceso pasa información a otro
Asegurarse de que dos o más procesos no se
estorben al realizar actividades cruciales
Ordenamiento correcto cuando existen
dependencias
Condiciones de competencia
Un ejemplo sencillo pero común: el spooler
de impresión
Regiones críticas
La parte del programa en la que se tiene
acceso a la memoria compartida se
denomina región crítica o sección crítica
Evitar que dos procesos estén sus regiones
críticas al mismo tiempo
Exclusión mutua
Cuatro condiciones
Dos procesos no pueden estar al mismo tiempo
dentro de sus regiones críticas
No pueden hacerse suposiciones sobre las
velocidades ni el número de las CPUs
Ningún proceso que se esté ejecutando afuera de
su región crítica puede bloquear otros procesos
Ningún proceso deberá tener que esperar de
manera indefinida para entrar en su región
crítica
Regiones críticas
Exclusión mutua con espera
activa
Inhabilitación de interrupciones
Variables de bloqueo
Alternancia estricta
Solución de Peterson
La instrucción TSL
Activar y desactivar
Inhabilitación de interrupciones
Cada proceso inhabilita todas las interrupciones
inmediatamente después de ingresar en su región crítica y
las vuelva a habilitar justo antes de salir de ella
No es prudente conferir a los procesos de usuario la
capacidad de inhabilitar todas las interrupciones
Muchas veces es conveniente que el kernel mismo
inhabilite las interrupciones durante unas cuantas
instrucciones mientras actualiza variables o listas
Variables de bloqueo

Solución en software
0 indica que ningún proceso está en su región crítica
1 indica que algún proceso está en su región crítica
Mismo defecto que en el directorio de spooler
Alternancia estricta
Sólo se usa cuando es razonable suponer que la
espera será corta
Solución de Dekker
Solución de Dekker
Solución de Peterson
La instrucción TSL
Requiere un poco de ayuda del hardware
Computadoras diseñadas pensando en múltiples procesadores
TSL RX, BLOQUEO (Test and Set Lock, probar y establecer
bloqueo)
Activar y
desactivar

Tanto la solución de Peterson y TSL son correctas


pero ambas tienen el defecto de que requieren espera
activa
Se usan primitivas de comunicación entre procesos
que se bloquean
No desperdiciar tiempo de CPU cuando no se les
permite entrar en su región crítica
sleep y wakeup
El problema del productor- consumidor

Dos procesos comparten un buffer de tamaño fijo


El productor coloca información en el buffer
El consumidor saca la información
Los problemas surgen cuando el productor quiere
colocar un nuevo elemento en el búfer pero éste ya
está lleno
La solución es que el productor se desactive y se
vuelva a activar cuando el consumidor haya sacado
uno o más elementos
Si el consumidor quiere sacar un elemento del búfer y
ve que está vacío se desactiva hasta que el productor
coloca algo ahí y lo activa
El problema del productor-
consumidor
Semáforos
E. W. Dijkstra (1965) sugirió el uso de una
variable entera para contar el número de
llamadas wakeup guardadas para uso futuro:
semáforo
Valor 0 que indica que no se guardaron llamadas
wakeup
Un valor positivo si hay llamadas pendientes
Dos operaciones: down y up
Semáforos
Mutexes
Capacidad de contar del semáforo
Versión simplificada del semáforo
Sólo sirven para administrar la exclusión mutua
respecto a algún recurso o fragmento de código
compartido
Implementación sencilla y eficiente
Son útiles sobre todo en los sistemas de subprocesos
que se implementan por completo en espacio de usuario
Un mutex es una variable que puede estar en uno de
dos estados: desbloqueado o bloqueado
TSL
Monitores
Hoare (1974) y Brinch Hansen (1975)
Primitiva de sincronización de más alto
nivel
Colección de procedimientos, variables y
estructuras de datos que se agrupan en un
tipo especial de módulo o paquete
Sólo un proceso puede estar activo en un
monitor a la vez
El compilador los conoce
Monitore
s
Monitores
Transferencia de mensajes
Este método de comunicación entre procesos
utiliza dos primitivas:
Send (destino, &mensaje);
Receive (origen, &mensaje);
Problemas y cuestiones de diseño que no existen
con los semáforos ni con los monitores
Nombrar los procesos de modo que las llamadas send o
receive no sean ambiguas
Autentificación
Desempeño
Se pierden mensajes
El problema del productor-consumidor
con transferencia de mensajes
Todos los mensajes tienen el
mismo tamaño
El sistema operativo coloca en
forma automática en un búfer los
mensajes que se enviaron pero aún
no se han recibido
Se asigna a cada proceso una
dirección única
El problema del productor-consumidor
con transferencia de mensajes

 Dirigir los mensajes a procesos


 Estructuras de datos llamadas
buzones
 Se recomienda: no usar búferes en
absoluto
 La transferencia de mensajes se usa
mucho en sistemas de
programación paralela
 MPI: message-passing interface
Barreras
Pensado para grupos de procesos más que
para situaciones tipo productor-consumidor
en las que sólo hay dos procesos
Sistemas Operativos

2.6 Problemas clásicos de IPC


Problemas clásicos de comunicación
entre procesos

El problema de la cena de los filósofos


El problema de los lectores y escritores
El problema del barbero dormilón
El problema de la cena de los filósofos.
El problema de la cena de los filósofos
El problema de los lectores y escritores

Modela el acceso a una base de datos


Es aceptable tener varios procesos leyendo la base
de datos al mismo tiempo
Si un proceso está actualizando (escribiendo) la
base de datos ningún otro proceso podrá tener
acceso a ella
El problema de los lectores y escritores
El problema del barbero dormilón.
Este problema es
similar a diversas
situaciones de colas
Un mostrador de ayuda
con varias personas y
un sistema
computarizado de
llamadas en espera para
mantener en la línea un
número limitado de
llamadas
El problema del barbero dormilón
Sistemas Operativos

2.7 Planificación de Procesos


Planificación

También llamada “calendarización” o


“scheduling”
Es la situación donde al haber más de un
proceso estos compiten por los recursos
del sistema
Algoritmo de planificación

Para poder decidir que tareas se deben


ejecutar y en que tiempos se usa un
algoritmo que ayude con estas decisiones
Algoritmo de
planificación
Un problema que debe de resolver la
planificación es aprovechar el uso de CPU ya
que el cambio de un proceso a otro es costoso
Primero el cambio de modo usuario a modo núcleo
Segundo guardar el estado del proceso actual
Elegir que otro proceso debe de ejecutarse
Cargar la MMU con el mapa de memoria del
nuevo proceso
Ejecutar el nuevo proceso
Situaciones de cuando planificar

Cuando se crea un proceso


Cuando se termina de ejecutar un proceso
Cuando se bloquea un proceso
Por una interrupción
Categorías de algoritmos de
planificación

No Expropiativo
Expropiativo
El Planificador

El planificador es uno o varios programas del


sistema operativo que usa un algoritmo de
planificación para poder tomar decisiones de a
cual proceso se le debe de asignar la CPU
Clasificación de los Planificadores.
Objetivos de los planificadores
Primero en llegar - Primero en ser
atendido

No expropiativo
Asigna la CPU a los procesos en el orden
en el que llegan
Cola de procesos
Fácil de entender y de programar
Con una sola lista enlazada lleva el
control de todos los procesos
Trabajo más corto primero
Tiempo restante más corto a
continuación
Versión expropiativa del anterior
Escoge al proceso que le falte menos para
terminar
Se necesita saber con antelación los tiempos
de ejecución
Cuando un trabajo nuevo llega se compara con
el que esta en ejecución
De tres niveles

CPU

Planificador de
admisión Planificador de
admisión

Memoria Principal
Cola de entrada
Disco

Planificador de
admisión
En sistemas interactivos
Se pueden utilizar en combinación con los
anteriores
No es posible tener planificación de tres niveles
Si es posible tener planificación de dos niveles
De memoria
De CPU
Por Turno Circular o Round Robin

A cada proceso se la asigna una ventana de


uso de CPU también llamado cuanto o ventana
Expropiativo
El proceso al que se expropia el CPU se
coloca la final de la lista
Importante es la magnitud de la ventana que se
asigna a cada proceso
Por Prioridades

Se toman en cuenta factores externos


De acuerdo a estos factores se le asigna una prioridad a los
procesos y el que tenga la prioridad más alta es el que se ejecuta
Pueden ser prioridades dinámicas o estáticas
Por Múltiples Colas
Se asigna una prioridad diferente a cada
conjunto de procesos
Nivel
Cada nivel tiene una prioridad predeterminada
Cada prioridad implica determinado tiempo de uso de CPU
Entre más alto es el nivel el tiempo de uso de CPU es menor
Cada vez que se ejecuta un proceso y gasta su tiempo de uso
de CPU se pasa a un nivel inferior
El proceso más corto a continuación

Se aplica a los comandos de cada proceso


Se estiman valores de tiempo de ejecución de cada
comando en base al comportamiento anterior
Se usan series de estimación usando la media ponderada
del último valor medido y el estimado anterior
Garantizada
Se calcula el tiempo al que tiene
derecho
(Tiempo CPU)/(Número de
procesos)
Tiempo que ha empleado de CPU
para cada proceso desde su
creación
(Tiempo consumido real)/(Tiempo al
que tiene derecho el proceso)
Se ejecuta primero al proceso que
tenga el cociente más bajo
Por Lotería
Se tienen cinco procesos a cada uno se
le pueden repartir 20 de cada 100 billetes
disponibles
El sistema sortea los billetes cada
segundo para ver cual proceso debe de
tener un tiempo de uso de CPU de 20ms
entonces cada proceso tendría 20% de
probabilidad de obtener ese tiempo
Por Porción Equitativa
Se asigna el CPU de acuerdo a la cantidad
de usuarios que hay en el sistema sin
importar cuantos procesos este creando
cada usuario
Se puede combinar con Round Robin
Desventaja: dos usuarios donde uno de ellos
crea 9 procesos y el otro crea 1 entonces el
primero obtendrá el 90% de tiempo de CPU y
el otro solo 10%
En sistemas en tiempo real
Procesos duros o “hard”
Procesos suaves o “soft”
Los algoritmos de planificación para los
sistemas en tiempo real pueden ser de tipo
dinámico o estático Tipos de algoritmos:
Tipos de procesos:  RM o Rate Monotonic
 DM Deadline Monotonic
Periódicos
 PS Polling Server
Semi-periódicos  DS Deferred Server
Aperiódicos  EDF Earliest Deadline First
Esporádicos
Sistemas Operativos I

Subprocesos
Uso de subprocesos ó hilos
 Realizar varias actividades al mismo tiempo
 Bloqueo ocasional
 La creación de un hilo podría ser 100 veces más rápida que la
creación de un proceso
 Permiten traslapar actividades de E/S y así acelerar la aplicación
 Es posible un verdadero paralelismo
Un servidor para un sitio Web
Implementación de subprocesos

En espacio de
usuario
En el kernel
Híbrida
En el espacio de usuario
 El kernel no sabe nada de los
subprocesos
 Uso de bibliotecas
 Cada proceso
Propia tabla de subprocesos
Pueden tener su propio algoritmo
de planificación personalizado
 Se pueden usar llamadas
bloqueadoras pero sin que un
subproceso bloqueado afecte a los
demás
 Se pueden presentar problemas por
fallos de página
En el kernel
El kernel tiene una tabla de subprocesos
Costo mayor de crear y destruir
subproceso
Reciclan sus subprocesos
Implementaciones híbridas
El kernel tiene conocimiento y únicamente los
planifica
Algunos de ellos podrían tener multiplexados
múltiples subprocesos de nivel de usuario

También podría gustarte