Instituto de Computação - UNICAMP

Sistemas Operacionais: Teoria e Prática

Islene Calciolari Garcia

Laboratório 1

Exclusão mútua para N threads com prioridades


Objetivo

Suponha que N threads competem para o uso da região crítica de forma semelhante aos vários algoritmos estudados em sala de aula:
volatile int s; /* Variável compartilhada */

/* Código para a Thread i */
void* f_thread(void* v) {
  int thr_id = (int *) *v;
  while (1) {
      /* Região não crítica */
      /* Protocolo de entrada */
      /* Região crítica */
        s = thr_id; 
        printf ("Thr %d: %d", thr_id, s);
      /* Protocolo de saída */
  }
}  
Considere que cada thread tem uma prioridade, que pode ser definida estatica ou dinamicamente. Proponha um algoritmo que garanta que threads mais prioritárias terão preferência para entrada na região crítica. É claro que se uma thread já estiver utilizando a região crítica, ela não deve ser interrompida.

O seu algoritmo deve ser implementado de maneira semelhante aos códigos apresentados em sala de aula. No cabeçalho do código-fonte devem ser colocados os nomes dos integrantes do grupo e uma explicação do funcionamento do algoritmo. Cada grupo deverá fazer uma breve apresentação da sua solução (de preferência com slides), que será agendada após a entrega do código. Neste dia, o grupo deverá rodar o código com cenários (com prioridades diferenciadas e sleeps) e argumentar a razão pela qual o código funciona. Será imprescindível a participaçõa de todos os componentes do grupo.

A nota final deste laboratório será composta por

Entrega

O código e a explicação deverão ser entregues até o dia 10/04/2008. A entrega deste projeto deverá ser feita por email, ao monitor João Paulo . O subject da mensagem deve ser no seguinte formato:
[MC514-1s08] Entrega Threads01 - RAXXXXXX, RAXXXXXX e RAXXXXXX.