107
Process M.C. Juan Carlos Olivares Rojas Operating Systems [email protected] February, 2009

Process M.C. Juan Carlos Olivares Rojas Operating Systems [email protected] February, 2009

Embed Size (px)

Citation preview

Page 1: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Process

M.C. Juan Carlos Olivares Rojas

Operating [email protected]

February, 2009

Page 2: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Outline• Modelo e Implantación de Procesos

• Comunicación entre Procesos

• Ejemplos de Comunicación entre Procesos

• Planificación de un Proceso

Page 3: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Outline• Procesos Cooperativos

• Implementación de Procesos

• Threads

Page 4: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Objective• The student will know and apply the basis of

process, InterProcess Communication and Sinchronization Mechanism.

Page 5: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Modelo e Implantación de Procesos

• Un proceso es un programa en ejecución.

• Todos los procesos tienen asociados un espacio de direcciones en memoria, registros y el contador de programas.

• De acuerdo a la arquitectura de Von Neuman un programa para poderse ejecutar necesita estar en memoria.

Page 6: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Modelo e Implantación de Procesos

• El espacio de direcciones se compone además de direcciones para almacenar datos, código, la pila y el heap (montículo).

• Toda la información de los procesos en los SOs se guardan el PCB (Process Control Block) que es un arreglo o lista ligada que indica la descripción de cada uno de los procesos.

Page 7: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Modelo e Implantación de Procesos

• Los procesos tienen asignados un identificador de procesos (PID), el cual es la forma en que el SO trabaja con los procesos.

• Los procesos se ejecutan de manera secuencial pero pueden realizar bifurcaciones, motivo por el cual se necesita el contador de programa.

• Los programas pueden tener asignado distintas prioridades para darle más jerarquías.

Page 8: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Modelo e Implantación de Procesos

• La finalidad del administrador de procesos es realizar una buena administración (planificación) del tiempo de CPU de la computadora a fin de ejecutar más programas de manera más eficiente.

• Otra de las características básicas que presenta un proceso es el estado en el cual se encuentra. Existen tres estados básicos en proceso: Ejecución, Listo y Bloqueado.

Page 9: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Modelo e Implantación de Procesos

• Un proceso está en ejecución cuando tiene acceso real al tiempo de CPU.

• Un proceso está listo cuando se puede ejecutar, es decir, por algún motivo se suspendió para dejar ejecutar otro proceso

• Un proceso está bloqueado cuando está en espera de algún recurso (E/S) o de que ocurra un evento.

Page 10: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Modelo e Implantación de Procesos

• Otros modelos de estados de procesos incluyen otros estados como el de nacimiento, inactivo y diferencia entre bloqueado y en espera.

• Dentro de un CPU un y sólo un proceso puede estar ejecutándose al mismo tiempo.

• Los procesos se pueden dormir, despertar y ser asesinados antes de tiempo.

Page 11: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Comunicación entre Procesos

• Los procesos en algunos SOs pueden crear otros procesos llamados subprocesos, teniendo una jerarquía de procesos padre e hijos.

• Estos procesos pueden trabajar de manera cooperativa para la resolución de un problema muy particular. Para ello necesitan comunicarse entre sí y a lo que a nivel de SO se llama IPC (Inter Process Communication).

Page 12: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

IPC

• La parte más importante de la comunicación entre procesos es sin duda la transferencia de mensajes entre los diversos procesos.

• La transferencia de mensajes puede llevarse acabo en base a dos primitivas, enviar y recibir, que se pueden aplicar a casi cualquier recurso como a los archivos (leer y escribir).

Page 13: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

IPC

• La comunicación entre procesos IPC se debe dar a través del kernel del Sistema Operativo.

• Tanto Windows como Linux y otros Sistemas Operativos implementan IPC pero lo hacen de manera particular.

• Los IPC de sistemas *X son los más comunes y estandarizados. A continuación se describirá algo de IPC en Linux.

Page 14: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

IPC *X

#include <sys/types.h>

pid_t pid;

hijo = getpid();

Padre = getppid();

Grupo = getpgrp();

Un subprocesos se crea con la instrucción fork()

Page 15: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

IPC *X

• Existen otros tipos de usuarios y grupos los cuales son extendidos, es decir, no actúan como los usuarios reales.

uid_t getuid(); /*usuario real*/

uid_t geteuid(); /*usuario extendido*/

gid_t getgid();

gid_t getegid();

• Los subprocesos tienen una jerarquía muy marcada.

Page 16: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

IPC *X//Validación de subprocesos

if (pid == -1)

perror(“Error al crear proceso”);

else

{

if (pid == 0)

/*Proceso hijo*/

else

/*Proceso padre*/

}

Page 17: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Ejemplos de Comunicación entre Procesos

• La principal problemática que se presenta consiste en las condiciones de competencia de los procesos. Por ejemplo, compartir una impresora. Si varios procesos pudieran acceder a la impresora se tendrían problemas de inconsistencias al momento de imprimir.

• A continuación se describirán algunos problemas de IPC para dar solución en la próxima unidad.

Page 18: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Ejemplos de IPC

• El problema del productor-consumidor: dos procesos comparte un mismo recurso compartido. El problema se presenta cuando el proceso productor produce más de lo que el buffer compartido puede soportar y cuando el proceso consumidor quiere consumir un valor del buffer cuando esta vació.

• Este tipo de problemas se puede presentar en casos similares como el de la impresora.

Page 19: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Ejemplos IPC

•Otro problema clasico de IPC es el de la cena de los filosofos, el cual se basa en que existen cinco filosofos comensales sentados alrededor de una mesa circular. Cada filosofo tiene ante si un plato de espaguetti. El espaguetti es tan resbaloso que se necesitan dos tenedores para comerlo. Entre cada par de platos hay un tenedor.

Page 20: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Ejemplos IPC

• Un filosofo puede comer y pensar. Para comer es necesario que disponga de dos tenedores

• La solucion mas obvia puede causar inconsistencias. Que pasaria si todos toman su tenedor de la izquierda al mismo tiempo.

• Podria mejorarse si uno filosofo toma su tenedor de la izquierda, verifica que el de su derecha este desocupado si no lo libera.

Page 21: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Ejemplos IPC

• Por que falla esta opcion?

• Otro problema famoso es el problema del peluquero dormido en el cual se tienen un peluquero, una silla de peluqyero y n sillas de clientes.

• Si no hay ningun cliente el peluquero se duerme. Si llega un cliente y esta dormido el peluquero lo despierta.

Page 22: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Ejemplos IPC

• Si llega un cliente mientras esta despierto el peluquero se forma en las sillas, o bien, se sale si las sillas estan todas ocupadas.

• Todos estos son ejemplo de IPC. Los mecanismos basicos son las tuberias, la cola de mensajes, los semaforos, la memoria compartida, los sockets, entre otros elementos.

Page 23: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Planificación de un Proceso

• La planificación de procesos es la etapa más importante del administrador de procesos ya que se encarga de administrar la disponibilidad del uso de CPU.

• Los planificadores no importando su complejidad deben respetar los siguientes elementos: equitatividad, eficiencia, tiempo de respuesta, retorno, volumen de producción.

Page 24: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Planificación de un Proceso

• La problemática con este tipo de administración es que los recursos son únicos e imprendecibles. Por este motivo el planificador trata de estimar algunas características.

• Un planificador no sabe cuanto tiempo tardará en ejecutarse un proceso y si este en algún momento se bloquea por alguna petición de entrada o de salida.

Page 25: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Planificación de un Proceso

• Por este motivo un planificador debe de asignar un tiempo predeterminado llamado Quantum para la ejecución de procesos.

• Un proceso puede ser interrumpido por otro proceso cuando este último requiera de una atención inmediata. Esto da origen a planificadores don prioridades.

Page 26: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Planificación de un Proceso

• La prioridad puede darse por jerarquía, por costos o por otro medio que sirva de discriminante.

• Las prioridades pueden ser dinámicas o estáticas.

• El planificador de procesos se encarga de mantener el contexto de cada una de las aplicaciones para poder realizar multitarea.

Page 27: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Planificación de un Proceso

• Existen diverso algoritmos de planificación de tareas, los cuales a continuación se describen.

• El algoritmo de round robin (torneo) es muy sencillo, el cual consiste en una lista ligada con los diferentes procesos donde se ejecutan uno por uno pasandose hacia el final de la cola.

Page 28: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Planificación de un Proceso

• La planificación en Round Robin no es la mejor dado a que es muy susceptible al tiempo del cuantum y al tamaño de la cola.

• La planificación por prioridad permite calendarizar los procesos de acuerdo a su importancia. Los sistemas UNIX cuentan con el comando nice para reducir la prioridad de un proceso.

Page 29: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Planificación de un Proceso

• En algunas ocasiones se suelen agregar diversas mezclas de algoritmos de planificación. Por ejemplo, se puede manejar un sistema de colas por prioridades, en donde cada cola trabaja como si fuera un sistema round robin.

• Otro algoritmo de planificación es el utilizar colas múltiples. En un principio el cuantum de tiempo aumentaba

Page 30: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Planificación de un Proceso

• En un principio el quantum de tiempo aumenta en proporción del tiempo que está el proceso en ejecución teniendo 1, 2, 4 ... N cantidad de quantum. Esto hace que los procesos más viejos tengan mayor prioridad.

• Otros planificadores de colas múltiples colocan los procesos de manera generalizada en colas de terminal, E/S, quantum corto, quantum largo, etc.

Page 31: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Planificación de un Proceso

• Un algoritmo de planificación más efectivo es el primer el trabajo más corto, dado que el promedio de retorno de cada proceso es menor siguiendo esta técnica, la desventaja es que es dificil calcular cual es el trabajo más corto.

• La planificación garantizada consiste en hacer promesas a los usuarios para después cumplirla. Una promesa fácil es 1/n.

Page 32: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Planificación de un Proceso• Un mejor esquema es la planificación por

loteria, la cual sonsiste en repartir boletos entre los procesos, a los procesos ganadores se les asigna tiempo de CPU. El secreto es asignar una cantidad de boletos equivalente al peso e importancia de los procesos.

• En sistemas muy especiales como los sistemas de tiempo real, el planificador debe considerar muchas restricciones.

Page 33: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Planificación de un Proceso

• Entre estas restricciones están la administración de eventos y de cumplir con los límites de tiempos establecidos.

• Otra alternativa de planificación es utilizar dos niveles. Un nivel para gestionar procesos en memoria principal y otro nivel para memoria secundaria. Con este esquema se obtiene mejor rendimiento cuando se utiliza memoria virtual.

Page 34: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Procesos Cooperativos

• Los procesos cooperativos son aquellos que pueden trabajar de manera conjunta.

• Una de las mejores alternativas para la planificación de procesos consiste en que los mismos procesos gestionen con los demás su turno de uso CPU. Si se programa de buena manera puede funcionar, de lo contrario producirá un esquema de competencia.

Page 35: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Implementación de Procesos• La implementación de procesos depende de

la arquitectura del sistema operativo utilizada.

• Ya se comentó en diapositivas anteriores la implementación de procesos en sistemas *X otros sistemas difieren en las llamadas al sistema pero conceptualmente se parecen por que están basados en POSIX.

Page 36: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Implementación de Procesos• Por ejemplo, la implementación de procesos

en Windows se da de manera generalizada con llamada al sistema CreateProcess().

• En Linux además de la llamada fork(), se encuentra clone() que clona un proceso de memoria pero puede compartir estructuras de datos.

Page 37: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Threads

• Los hilos son procesos ligeros a diferencia de los procesos hijos, los hilos sólo replican el segmento de código, por lo que comparten datos entre otros hilos haciendo mejor uso de la memoria.

• La problemática con los hilos es que cada sistema operativo implementa sus hilos de manera distinta. Por ejemplo existen los hilos POSIX, los hilos C de Mach, los hilos en Windows, etc.

Page 38: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Hilos

• La implementación también dependerá del tipo de lenguaje utilizado para la codificación. Por ejemplo se tienes hilos en Java, hilos en lenguaje como Modula-2, ADA, etc. los cuales

• En general, los sistemas X implementan más procesos hijos que hilos, pero se pueden hilos pero no están garantizado su uso en muchos sistemas legados.

Page 39: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Hilos

• En general los hilos en Java debido a su portabilidad binaria son idénticos en todas las plataformas. Existen dos formas básicas de implementar procesos: heredar de la clase Thread o bien implementar la interfaz Runnable.

• En general en el método public void run() se agrega la funcionalidad del hilo.

Page 40: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Hilos

• Si se heredo de la clase Thread el hilo debe crearse de la siguiente forma:

• Thread hilo = new Thread(new Objeto());

• El método Thread.sleep(ms); permite dormir un proceso n cantidad de milisegundos.

Page 41: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Hilos

• En general se ejecuta el hilo poniendo el método start(), e.g.: hilo.start();

• Otros métodos de los hilos son: isAlive() para determinar si un hilo está con vida, el metodo stop()* finaliza un hilo, el método suspend()* lo suspende, el método resume() reanuda un proceso y join() espera a que finalice un proceso especificado.

Page 42: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Hilos

• Se pueden asignar prioridades a los hilos con el método setPriority(), en donde la prioridad puede ser MIN, MAX y NORM_PRIORITY.

• El método yield() cede prioridad, mientras que el método setDaemon(true) hace que un hilo sea demonio.

Page 43: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Hilos

• Los demonios son hilos que pueden correrse sin depender de otros procesos. Se utilizan mucho para la programación de servicios del sistema.

• Se pueden crear grupos de hilos con la clase GroupThread para un mejor manejo.

Page 44: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Hilos

• En Windows los hilos se crean con la instrucción BeginThread, se pueden hacer uso en Visual C++ de APIs de mayor nivel de abstracción como el método AfxBeginThread() o la clase CThread del MFC (Microsoft Solution Framework).

• En .NET se utiliza la clase Thread para generar procesos hilos.

Page 45: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Hilos• PThreads (POSIX Threads) es la biblioteca

para la creación de hilos más implementada en sistemas *X.

• Se utiliza la biblioteca pthread por lo que algunos compiladores ya la incluyen de manera predeterminada sino habrá que indicar su uso: gcc … -lpthread

Page 46: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Hilos• Crear hilos:

int pthread_create(pthread_t *thread, pthread_attr_t *attr, void * (*start_routine)(void *), void *arg)

• Esperar la finalización de hilos:

int pthread_join(pthread_t th, void **thread_return)

Page 47: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Hilos• No guardar estado del hilo:

int pthread_detach(pthread_t h)

• Salir de un hilo:

pthread_exit(void *retval)

• Biblioteca a utilizar: #include <pthread.h>

Page 48: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Hilostypedef struct parametros {

int id;char *nombre

};

void *funcion(parametros *p) {printf(“%s %d”, p->cadena, p->id);pthread_exit(&(p->id))

}

Page 49: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Hilos• Referencia asi mismo:Yo = pthread_self(); /*Demás funciones*/

• Enviar una señal a un hilo:pthread_kill(pthread_t hilo, int señal);

• Los hilos no están tan extendidos por que existen muchas variantes: hilos mach, hilos solaris, Gthreads, etc.

Page 50: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

El Problema de la Sección Crítica

• Lo importante en un problema de compartición de recursos, no es la compartición del recurso en sí, sino el mecanismo de protección para poder acceder de manera controlada y equitativa al recurso.

• La sección crítica es la parte de código que se desea compartir con otros procesos concurrentes. Esta región debe ser en algunos casos mutuamente excluyente (mutex).

Page 51: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

El Problema de la Sección Crítica

• En algunos casos como en las lecturas, el acceso concurrente a un recurso no tiene mayor complicaciones.

• En otros casos como en la escritura, se debe de controlar el acceso, ya que no hacerlo podría causar muchos problemas.

• Los recursos se pueden compartir dinámicamente (intercalados) y estáticamente (exclusivo).

Page 52: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Sincronización de Hardware

• La mejor forma de realizar sincronización de proceso es a través de mecanismos de hardware.

• La gran mayoría de microprocesadores que permiten multitarea tienen esquemas robustos de protección para la concurrencia de procesos.

• Se puede contar con registro base y límite para el acceso controlado a los recursos, o bien esquemas de prioridad.

Page 53: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Semáforos

• Desafortunadamente tener mecanismos de sincronización en hardware es sumamente costoso. Por este motivo la inmensa mayoría de los métodos de compartición de recursos se hacen a nivel de software.

• Cualquier recurso compartido en una computadora está asociado a una localidad de memoria, por este motivo la protección de memoria juega un papel muy importante en la sincronización de procesos

Page 54: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Semáforos

• Los semáforos son mecanismos que permiten sincronizar procesos para prevenir colisiones cuando uno o más procesos solicitan simultáneamente un recurso.

• Dijsktra los define como un objeto tipo entero en los cuales se puede aplicar dos operaciones: P (Proberen, comprobar) y V (Verhogen, incrementar), donde P sirve para obtener el recurso y V para liberarlo.

Page 55: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Semáforos

• Los semáforos son un mecanismo de IPC estandarizado por POSIX.

• Todos los mecanismos IPC tienen una entrada en una tabla especial con una llave definida por el usuario.

• Los posibles valores de la llave son IPC_PRIVATE, IPC_CREATE, IP_EXECL, entre otros.

Page 56: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Semáforos

• Cada entrada de la tabla tiene un registro de permisos (rw), información de estado y llamadas de control.

• Las llaves son del tipo key_t. Para crear una llave se utiliza:

#include <types.h>

#include <sys/ipc.h>

key_t ftok(path, id)

Page 57: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Semáforos

• Las operaciones sobre un semáforo son semget para crear un semáforo o habilitar uno existente, semctl para realizar operaciones de control e inicialización, semop para realizar operaciones P y V.

#include <sys/types.h>

#include <sys/ipc.h>

#include <sys/sem.h>

int semget(key, nsems, semflg)

Page 58: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Semáforosint llave, semid;

if((llave= ftok(“auxiliar”, ‘K’)) ==(key_t)-1)/*Tratamiento del error*/

if((semid= semget(llave, 4, IPC_CREAT | 0600)) == -1)/*Error al crear el semáforo*/

Page 59: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Semáforos

int semctl(semid, semnum, cmd, arg)

union semun{int val;

struct semid_ds *buf;

ushort *array;

}arg;

• Las opciones de control son: GETVAL, SETVAL, GETPID, GETNCNT, GETZCNT, GETALL, SETALL, IPC_STAT, IPC_SET

Page 60: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Semáforosushort asem;

asem[0]=5; asem[1]=3; asem[2]=4; asem[3]=8;

semctrl(semid, 0, SETALL, asem)

valor = semctrl(semid, 3, GETVAL, 0)

int semop(semid, sops, nsops)

struct sembuf *sops;

Page 61: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Semáforos

struct sembuf{

ushort sem_num;

short sem_op;

short sem_flg;

};

• Si semop es negativo se decrementará (P), si se incrementa (V) y si es 0 no hace nada.

• Las banderas son: IPC_WAIT, IPC_NOWAIT, SEM_UNDO

Page 62: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Semáforosstruct sembuf operacines[4];

Operaciones[0].semnum = 1;

Operaciones[0].sem_op = -1;

Operaciones[0].sem_flg = 0;

Operaciones[1].semnum = 4;

Operaciones[1].sem_op = 1;

Operaciones[1].sem_flg = 0;

semop(semid, operaciones, 2);

Page 63: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Regiones críticas• Las regiones críticas son otra forma de

sincronización de procesos.

• Un semáforo en algunas ocasiones no puede sincronizar más de un recurso diferente a la vez por lo que se necesitan de mecanismos de control de concurrencia más elaborados.

• Otros mecanismos IPC que permiten sincronizar y proteger regiones críticas son las colas de mensajes .

Page 64: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Colas de Mensajes

• La filosofía de las colas de mensajes es similar a las tuberías, pero con mayor versatilidad.

• Una cola es una estructura de datos gestionada por el kernel, en la cual varios procesos pueden escribir sobre ella. El sincronismo para evitar colisión lo realiza el kernel.

Page 65: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Colas de mensajes#include <sys/msg.h>

int msgget(key, msgflg)

If((msqid= msgget(llave, IPC_CREATE | 0600)) == -1)/*Error al crear la cola de mensajes*/

• msgctrl(msq, cmd, buf) sirve para leer y modificar la información estadística y de control de una cola.

Page 66: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Colas de mensajes• Los comandos de control son: IPC_STAT,

IPC_SET, IPC_RMID. Por ejemplo: msgctrl(msqid, IPC_RMID, 0);

• Las operaciones básicas de una cola de mensajes son enviar y recibir los mensajes que se realizan con las siguientes funciones:

int msgsnd(msqid, msgp, msgsz, msgflg);

int msgrcv(msqid, msqp, msgtyp, msgflag);

Page 67: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Cola de mensajes• El parámetro msgtyp indica el tipo de mensaje

que se desea leer: 0 para el primer mensaje, > 0 el primer mensaje de tipo msgtyp que haya en la cola, <0 lee el primer mensaje que sea menor o igual al valor absoluto de msgtyp y además sea el mensaje más pequeño de los que hay.

Page 68: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Cola de mensajesstruct{

long tipo;

char cadena[20];

}mensaje;

strcpy(mensaje.cadena, “SD1”);

mensaje.tipo = 1;

longitud = strlen(mensaje.cadena)

if(msgsnd(msqid,&mensaje,longitud,0)==-1) /*Err*/

if(msgrcv(msqid,&mensaje,longitud,1,0) ==-1) /*Er*/

Page 69: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Monitores

• Es un procesos que se encarga de verificar el funcionamiento de algún recurso garantizando la exclusión mutua (mutex).

• En un monitor los procesos se bloquean y desbloquean.

• Pueden existir diversas implementaciones no estandarizadas de un monitor.

Page 70: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Monitores

• En Java los monitores están implementados de manera nativa con el modificador de los métodos syncronized.

• El monitor es el mecanismo que nos permite controlar el acceso a una región crítica, en este caso un método. También se puede utilizar semáforos como objetos mutex disponibles en el paquete java.util.concurrent.*;

Page 71: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Deadlocks

• Los interbloqueos son la parte más problemática de los mecanismos de sincronización.

• Un interbloqueo ocurre cuando un proceso A que utiliza un recurso no lo libera por que está en espera de otro recurso que el proceso B tiene y a su vez no libera por esperar el recurso de A.

• En casos de interbloqueo la concurrencia del sistema se ve eliminada.

Page 72: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Deadlocks• Los interbloqueos pueden ser detectados a

través de la verificación de un ciclo infinito. Desgraciadamente este problema se trata de un problema no deducible y por lo tanto no computable; es decir, es difícil saber si un programa realmente se bloqueo o si está en un ciclo activo.

• Existen muchos métodos para detectar los interbloqueos, a continuación se describen algunos.

Page 73: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Deadlocks• El método de la avestruz es el más sencillo,

consiste en agachar la cabeza y no hacer nada por el problema.

• El método de herir y esperar consiste en matar un proceso que esté el interbloqueo y esperar a que los procesos existentes se sincronicen.

• El procesos de herir y matar consiste en eliminar un proceso y asignar los recursos a los procesos de manera estática.

Page 74: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Process

Page 75: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Process

Page 76: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Process

Page 77: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Process

Page 78: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Process

Page 79: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Process

Page 80: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

OS Architecture

Page 81: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Signals

Page 82: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Process

Page 83: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Process

Page 84: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Process

Page 85: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

System Call

Page 86: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

POSIX

Page 87: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Ring Level Architecture

Page 88: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Process State

Page 89: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Process Scheduler

Page 90: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Web Server Process

Page 91: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Threads Implementation

Page 92: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Critical Section

Page 93: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Philosopher

Page 94: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Philosophers

Page 95: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Readers and Writers

Page 96: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Sleepy Barber

Page 97: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Sleepy Barber

Page 98: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

First the Shortest Job

Page 99: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Process Execution

Page 100: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Process List

Page 101: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Priority Queue

Page 102: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Memory Partitions

Page 103: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Synchronization Problem

Page 104: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

POSIX System Call

Page 105: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Layer Architecture

Page 106: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Client-Server Architecture

Page 107: Process M.C. Juan Carlos Olivares Rojas Operating Systems jolivares@uvaq.edu.mx February, 2009

Questions?