A entrega do trabalho está sendo adiada para dia 6/7, a pedido de vários grupos. Os horários de apresentação serão mantidos como combinados. Caso algum grupo não possa apresentar seu trabalho na quinta-feira no mesmo horário agendado anteriormente favor entrar em contato comigo com urgência.
int mutex_create()
Essa função cria uma estrutura correspondente a um monitor e retorna seu identificador. Esse identificador deve ser criado de forma a dificultar que um processo qualquer "adivinhe" seu valor.
Caso não seja possível criar o novo monitor, a função retorna -1. Um retorno de -1 indica que um limite do sistema foi atingido (ver abaixo).
int mutex_lock(int monid)
Essa função indica que o processo que a chama deseja "entrar" no monitor monid. Apenas um processo pode deter o lock de um monitor a cada instante. Quando um processo chama mutex_lock(m), podem ocorrer duas situações:
A implementação de mutex_lock() deve se preocupar em registrar que o monitor está ocupado e a identidade do processo que detém o lock.
Caso o monitor indicado não exista, a função deve retornar -1.
int mutex_unlock(int monid)
Essa função corresponde à "saída" do monitor. Ela deve liberar o lock de monid Caso exista algum processo na fila associada ao monitor, o primeiro processo da fila deve ser desbloqueado e receber o lock.
Caso o processo corrente não detenha o lock de monid ou moid não exista, a função deve retornar -1.
int cond_create(int monid)
Essa função cria uma variável de condição associada ao monitor monid e retorna seu identificador. Esse identificador só tem sentido associado ao identificador do monitor.
Caso não seja possível criar a nova variável de condição, a função retorna -1. Um retorno de -1 indica que um limite do sistema foi atingido (ver abaixo) ou que o monitor monid não existe.
int cond_wait(int monid, int condid)
Essa função bloqueia o processo corrente na fila da variável de condição condid do monitor monid e libera o lock de monid. Uma chamada cond_wait(monid, condid) só é válida se o processo corrente detém o lock do monitor monid.
Um retorno de -1 indica erro (processo não detém o lock necessário ou monitor ou variável de condição inexistentes).
int cond_notify(int monid, int condid)
Essa função desbloqueia o primeiro processo na fila da variável de condição condid do monitor monid, se houver algum, e faz com que esse processo passe para a fila de espera associada à entrada nesse monitor.
Um retorno de -1 indica erro (por exemplo, monitor ou variável de condição inexistentes).
int mutex_destroy(int monid)
Essa função destrói o monitor monid, liberando os recursos alocados para ele no sistema operacional.
Um retorno de -1 indica erro (monitor inexistente ou existem processos bloqueados em variáveis de condição desse monitor).
Usando os serviços descritos no item anterior, escreva um programa que... (a ser completado em breve).
mount /dev/fd0 /fd0onde /fd0 tem que ser um diretório já existente em seu minix;
(observe que /dev/fd0 é o nome pelo qual o sistema se refere à primeira unidade de disquete; /dev/cdrom é o CD, e assim por diante...)
Last update: Wed Jun 21 10:06:00 EST 2000 by Noemi