Está en la página 1de 50

PROCESOS

Arquitectura y Sistemas Operativos

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.

CREACIÓN DE UN PROCESO (FORK Y


CREATEPROCESS)
 Cuando se arranca el sistema, se crean varios procesos que
algunos de ellos son en primero plano, es decir, que interactúan
con los usuarios y realizan trabajo para ellos.
 Otros procesos son en segundo plano, que no están asociados
con usuarios si no con una función específica, se conocen
normalmente como daemons (demonios).

PRIMER Y SEGUNDO PLANO


 Los procesos terminan por lo general debido a alguna de las
siguientes condiciones:
1. Salida normal (voluntaria).
2. Salida por error (voluntaria).
3. Error fatal (involuntaria).
4. Eliminado por otro proceso (involuntaria).

TERMINACIÓN DE PROCESOS (EXIT Y


EXITPROCESS, KILL Y TERMINATEPROCESS)
 En sistemas Unix, cuando un proceso crea a otro, el proceso
padre y el hijo continúan asociados en ciertas formas. El proceso
hijo puede crear por si mismo más procesos, formando una
jerarquía de procesos.
 En contraste Windows, no tiene un concepto de jerarquía de
procesos, todos los procesos son iguales.

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.

ESTADOS DEL PROCESO


 Para implementar el modelo de procesos, el sistema
operativo mantiene una tabla (un arreglo de
estructuras) llamada tabla de procesos, con una sola
entrada por cada procesos. También se conoce
como el bloque de control de procesos (PCB). IMPLEMENTACIÓN
 Contiene información importante acerca del estado DE LOS
del proceso (contador de programa, apuntador de
pila, asignación de memoria, estado de archivos
PROCESOS
abiertos, información de planificación, entre otros).
IMPLEMENTACIÓN DE LOS PROCESOS
 Con frecuencia hay situaciones en las que es
conveniente tener varios hilos de control en el
mismo espacio de direcciones que se ejecuta
en cuasi-paralelo, como si fueran proceso casi
separados (excepto por el espacio de
direcciones compartido).

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).

¿POR QUÉ HILOS?


HILOS
 Thread_Create: crear un hilo.
 Thread_exit: cuando un hilo termina su trabajo puede salir con
este llamado.
 Thread_join: espera a que un hilo específico termine.
 Thread_yield: permite a un hilo entregar voluntariamente la CPU
para dejar que otro hilo se ejecute.

OPERACIONES CON HILOS


(PROCEDIMIENTOS DE BIBLIOTECA)
 Hay dos formas principales de implementar un paquete de hilos:
 En espacio de usuario.
 En el kernel.
 También es posible una implementación híbrida.

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.

SOLUCIÓN A REGIONES CRÍTICAS


 La exclusión mutua consiste en que mientras un proceso esté
ocupado actualizando la memoria compartida en su región
crítica, ningún otro proceso puede entrar a su región crítica y
ocasionar problemas.

EXCLUSIÓN MUTUA CON ESPERA


OCUPADA
 En un sistema con un solo procesador, la solución más simple es
hacer que cada proceso deshabilite todas las interrupciones
justo después de entrar a su región crítica y las rehabilite justo
después de salir. Con las interrupciones deshabilitadas, no
pueden ocurrir interrupciones de reloj. Después de todo, la CPU
sólo se conmuta de un proceso a otro como resultado de una
interrupción del reloj o de otro tipo, y con las interrupciones
desactivadas la CPU no se conmutará a otro proceso.
 Por lo general este método es poco atractivo, ya que no es
conveniente dar a los procesos de usuario el poder para
desactivar las interrupciones

EXCLUSIÓN MUTUA - DESHABILITANDO


INTERRUPCIONES
 Como segundo intento, busquemos una solución de software.
Considere tener una sola variable compartida (de candado), que
al principio es 0. Cuando un proceso desea entrar a su región crítica
primero evalúa el candado. Si este candado es 0, el proceso lo fija
en 1 y entra a la región crítica. Si el candado ya es 1 sólo espera
hasta que el candado se haga 0. Por ende, un 0 significaque ningún
proceso está en su región crítica y un 1 significa que algún proceso
está en su región crítica.
 Por desgracia, esta idea contiene un error fatal. Suponga que un
proceso lee el candado y ve que es 0. Antes de que pueda fijar el
candado a 1, otro proceso se planifica para ejecutarse y fija el
candado a 1. Cuando el primer proceso se ejecuta de nuevo,
también fija el candado a 1 y por lo tanto dos procesos se
encontrarán en sus regiones críticas al mismo tiempo.

EXCLUSIÓN MUTUA – VARIABLES DE


CANDADO
 La variable entera turno (que al principio es 0) lleva la
cuenta acerca de a qué proceso le toca entrar a su
región crítica y examinar o actualizar la memoria
compartida. Al principio, el proceso 0 inspecciona
turno, descubre que es 0 y entra a su región crítica. El
EXCLUSIÓN
proceso 1 también descubre que es 0 y por lo tanto
se queda en un ciclo estrecho, evaluando turno en
MUTUA –
forma continua para ver cuándo se convierte en 1. ALTERNANCIA
Ala acción de evaluar en forma continua una
variable hasta que aparezca cierto valor se le ESTRICTA
conoce como espera ocupada.
 Estudie y prepare en equipos los temas a continuación (sección
2.3 libro de Tanenbaum):
 Dormir y despertar.
 Semáforos.
 Mutexes.
 Monitores.

RESÚMENES – REPASO PARA


SEGUNDO EXAMEN
 Conteste la práctica para el segundo examen en su casa como
repaso para el segundo examen.

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?

PROBLEMA DE LA CENA DE LOS


FILÓSOFOS (DIJKSTRA)
EL PROBLEMA
DE LA CENA
DE LOS
FILÓSOFOS
 Pensar.
 Tomar tenedor a la derecha.
 Tomar tenedor a la izquierda.
 Comer.
 Soltar tenedor a la derecha.
 Soltar tenedor a la izquierda.

SOLUCIÓN OBVIA (INCORRECTA)


PSEUDOCÓDIGO
POSIBLES SOLUCIONES
 Investigue una solución al problema de la cena de los filósofos e
implemente una simulación en Java, donde se puedan ver a los
filósofos y los palillos y la forma en que van tomando turnos para
pensar y comer.
 Opcionalmente, puede dar una temática diferente para el
algoritmo (en lugar de filósofos, palillos y arroz), siempre que
demuestre comprensión del problema y el algoritmo.

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.

EL PROBLEMA DEL BARBERO


DURMIENTE
PSEUDOCÓDIGO
 En los sistemas operativos, con frecuencia han surgido
situaciones en las que dos o más procesos eran ejecutables,
desde el puntos de vista lógico. Cuando más de un proceso es
ejecutable, el sistema operativo debe decidir cuál de ellos debe
ejecutarse en primer término. A esta parte del SO se le llama el
planificador y el algoritmo que utiliza se llama algoritmo de
planificación.

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?

Pasan realizando Al crear un proceso.


operaciones de Al terminar un
cómputo. proceso (escoger el
Dedican más a E/S. siguiente). PLANIFICACIÓN
DE PROCESOS
Al bloquearse un
proceso.
Al recibir una
interrupción.
No expropiativa: el
Expropiativa: le da un
proceso acapara el CPU
tiempo a cada proceso, si
hasta que se bloquea,
agota el tiempo y no
acaba o lo ceda
acaba se suspende, y se
voluntariamente. No
toma otro listo. Requiere
requiere interrupciones de
de interrupciones de reloj.
reloj.

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:

• Equidad: dar a cada proceso una porción


equitativa de CPU. METAS DE LOS
• Cumplimiento de políticas: poner el práctica
políticas establecidas. ALGORITMOS
• Equilibrio: mantener ocupadas todas las partes DE
del sistema CPU y E/S.
PLANIFICACIÓN
Sistemas por lotes:

• Rendimiento: procesar el máximo de trabajos


por hora.
• Tiempo de retorno: reducir al mínimo el lapso
de duración.
• Utilización de CPU: mantener ocupada todo el
tiempo la CPU.
Sistemas interactivos

• Tiempo de respuesta: responder rápido


a las solicitudes. METAS DE LOS
• Proporcionalidad: satisfacer las ALGORITMOS
expectativas de los usuarios en tiempo y DE
distribuir el tiempo de manera
equitativa entre los procesos. PLANIFICACIÓN

Sistemas en tiempo real:

• Cumplir los plazos y evitar la perdida de


datos.
• Predictibilidad: evitar la degradación
de la calidad en sistemas multimedia.
 FIFO
 Trabajo más corto primero.
 Tiempos restante más corto primero

PLANIFICACIÓN EN SISTEMAS POR


LOTES
 Planificación por turno circular (round robin).
 Planificación por prioridades.
 Múltiples colas.
 Proceso más corto primero.

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

También podría gustarte