Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Gabriel González
RECORDEMOS QUE
ES UN PROCESO
Abstracción de un programa en ejecución
Todo el software ejecutable de la computadora, inclusive el
sistema operativo, se organiza en varios procesos secuenciales
(procesos).
De manera conceptual, cada proceso tiene su propia CPU
Virtual. La realidad es que la CPU física se alterna de programa
en programa.
A esta rápida alternancia se le conoce como
multiprogramación.
MULTIPROGRAMACIÓN
Hay cuatro evento principales que provocan la creación de
procesos:
1. El arranque del sistema.
2. La ejecución, desde un proceso, de una llamada al sistema para
creación de procesos.
3. Una petición de usuario para crear un proceso.
4. El inicio de un trabajo por lotes.
JERARQUÍA DE PROCESOS
ESTADOS DEL
PROCESO
Aunque cada proceso es una
entidad independiente, con su
propio contador de programa
y estado interno, es frecuente
que deban interactuar con
otros.
Un proceso puede generar
una salida que sería utilizada
por otro. Por ejemplo
comandos de Linux:
Ps –ef | more
En ejecución: utiliza la CPU en un instante determinado.
Listo: ejecutable, se detiene en forma temporal para que se
ejecute otros proceso.
Bloqueado: no se puede ejecutar debido a la ocurrencia de
algún evento externo.
HILOS
Hay varias razones para tener hilos:
En muchas aplicaciones se desarrollan varias actividades a la vez.
Son más ligeros que los procesos.
Son más fáciles de crear y destruir.
Los hilos no producen un aumento en el rendimiento cuando todos
ellos están ligados a la CPU, pero cuando hay una cantidad
considerable de cálculos y operaciones de E/S, al tener hilos estas
actividades se pueden traslapar, con lo cual se agiliza la velocidad
de la aplicación.
Por último, los hilos son útiles en los sistemas con varias CPUs, en
donde es posible el verdadero paralelismo.
HILOS
En vez de pensar en interrupciones, temporizadores y
conmutaciones de contexto, podemos pensar en procesos
paralelos. Sólo que ahora con los hilos agregamos un nuevo
elemento: la habilidad de las entidades en paralelo de
compartir un espacio de direcciones y todos sus datos entre
ellas. Esta habilidad es esencial para ciertas aplicaciones, razón
por la cual no funcionará el tener varios procesos (con sus
espacios de direcciones separados).
IMPLEMENTACIÓN DE UN PAQUETE DE
HILOS
Los hilos se colocan completamente en el espacio de
usuario, por lo que el Kernel del SO no sabe nada de
ellos.
Puede implementarse en SO que no acepte hilos.
Los hilos se utilizan mediante una biblioteca.
Cada proceso tiene su tabla de hilos.
Cada proceso tiene su propio algoritmo de
planificación personalizado.
IMPLEMENTACIÓN EN EL ESPACIO DE
USUARIO
En este escenario el Kernel sabe acerca de los
hilos y los administra. No se necesita un sistema
en tiempo de ejecución, la tabla de hilos se
maneja en el Kernel.
Cuando se desea crear o destruir otro hilo, se
realiza una llamada al Kernel.
IMPLEMENTACIÓN DE HILOS EN
KERNEL
Es posible utilizar hilos de nivel de Kernel y después
multiplexar los hilos de nivel de usuario con alguno o
con todos los hilos de nivel de kernel.
Cuando se utiliza este método, el programador IMPLEMENTACIONES
puede determinar cuántos hilos de kernel va a utilizar
HÍBRIDAS
y cuantos hilos de nivel de usuario va a multiplexar en
cada uno.
Se originan cuando se comparten recursos.
La idea es controlar la concurrencia.
El almacenamiento compartido puede ser la memoria principal,
archivos, etc.
CONDICIONES DE COMPETENCIA
El objetivo es evitar las condiciones de competencia.
Se requiere exclusión mutua.
Región o sección crítica:
Parte del programa que tiene acceso a recursos compartidos.
La idea es asegurar que dos o más procesos nunca estén al
mismo tiempo en sus regiones críticas.
REGIONES CRÍTICAS
ILUSTRACIÓN DE REGIÓN CRÍTICA
Necesitamos cumplir con cuatro condiciones para tener una
buena solución:
No puede haber dos procesos de manera simultánea dentro de sus
regiones críticas.
No pueden hacerse suposiciones acerca de las velocidades o el
número de CPU’s.
Ningún proceso que se ejecute fuera de su región críticapuede
bloquear otros procesos.
Ningún proceso tiene que esperar para siempre para entrar a su
región crítica.
TAREA
Modela procesos que compiten para tener acceso exclusivo a un
número limitado de recursos.
Cinco filósofos se sientan a la mesa. Cada uno tiene un plato de
arroz, es tan escurridizo, que un filósofo necesita dos palillos para
comerlo. Entre cada dos platos hay un palillo. La vida de un filósofo
consta de periodos alternados de comer y pensar. Cuando un
filósofo tiene hambre, intenta obtener un palillo para su mano
izquierda y otro para su mano derecha, alzando uno a la vez y en
cualquier orden. Si logra obtener los dos palillos, come un rato y
después deja los palillos y continua pensando. La pregunta clave es:
¿se puede escribir un programa para cada filósofo que lleve a
cabo lo que se supone que debería y que nunca se detenga?
INVESTIGACIÓN
Modela el acceso a una base de datos.
Puede haber varios lectores al mismo tiempo.
Si un escritor está en la BD, ningún otro proceso (lector o escritor)
podrá ingresar.
Si un lector está usando la BD, otros lectores pueden ingresar.
Si un lector (o varios) están en la BD y llega un escritor, este se
suspende hasta que salga el último lector. Si llega otro lector, se
forma detrás del escritor (merma la concurrencia).
LECTORES Y ESCRITORES
LECTORES Y
ESCRITORES
El problema consiste en una barbería en la que trabaja un
barbero que tiene un único sillón de barbero y varias sillas para
esperar. Cuando no hay clientes, el barbero se sienta en una silla
y se duerme. Cuando llega un nuevo cliente, éste o bien
despierta al barbero o —si el barbero está afeitando a otro
cliente— se sienta en una silla (o se va si todas las sillas están
ocupadas por clientes esperando). El problema consiste en
realizar la actividad del barbero sin que ocurran condiciones de
carrera. La solución implica el uso de semáforos y objetos de
exclusión mutua para proteger la sección crítica.
PLANIFICACIÓN DE PROCESOS
En procesamiento por lotes:
No hay o es muy simple.
En sistemas de tiempo compartido:
Requiere de algoritmos más complejos.
PLANIFICACIÓN DE PROCESOS
Hay procesos ¿Cuándo
que: calendarizar?
TIPOS DE PLANIFICACIÓN
Por lotes: las tareas se procesan una tras otra y se recomienda
planificación no expropiativa.
Interactivos: se da la multiprogramación y se requiere la
planificación expropiativa, para que no se acapare el CPU.
Tiempo real: se ejecuta un solo proceso y pueden tardar mucho
tiempo, casi no requiere expropiación.
CATEGORÍAS DE ALGORITMOS DE
PLANIFICACIÓN
Todos los sistemas:
PLANIFICACIÓN EN SISTEMAS
INTERACTIVOS
En dos o cuatro equipos de trabajo obtenga información sobre
cada uno de los algoritmos de planificación previamente
expuestos y exponga cada uno de ellos a los compañeros
(prepare una pequeña presentación con la información
necesaria).
ggonzalezs@cuc.ac.cr
ACTIVIDAD EN CLASE