Vous êtes sur la page 1sur 1

Infraestrutura de Software - 1 EE (2015.

1)
Considere um software que verifica o produto mais caro adquirido por seus 4 principais clientes. Para
realizar essa busca, o software precisa percorrer 4 imensos arquivos e pesquisar em cada registro o valor do
produto e o nome. O nome do produto mais caro e seu valor so guardados nas variveis globais char
produto[31] e float valor. Ao final do programa, somente esses valores so impressos. Para agilizar a execuo,
o software utiliza 4 threads que possuem o mesmo cdigo, mas, dependendo do argumento, vasculha um
arquivo diferente. Para cada registro lido, a thread compara com as variveis globais, e, se necessrio, as
atualiza.
a) Existe condio de disputa? Caso positivo, qual a condio e quem seria a regio crtica?
b) Implemente o cdigo das threads que representado pela funo void *varredura(void *idArquivo), o qual
aguarda o identificador do arquivo a ser lido. Para facilitar a implementao, no se preocupe em
implementar fielmente a abertura e leitura dos dados dos arquivos binrios (ex: feof, fopen...). Pode-se
usar um pseudo-cdigo somente para a manipulao dos arquivos. Ademais, use uma estrutura (struct)
para os registros dos arquivos mais conveniente para agilizar a implementao. A thread deve percorrer todo seu
arquivo, e, assim, termina ao concluir a leitura de todos os seus registros. Se no entendimento desta questo,
voc verificou uma condio de disputa, a regio crtica precisa ser acessada com excluso mtua. No
precisa mostrar a criao das threads na funo main, mas precisa mostrar o uso/inicializao dos
recursos de pthreads solicitados nesta questo. Adicionalmente, precisa colocar o cdigo na funo
main relativo impresso do resultado final.
1.

int pthread_mutex_unlock(pthread_mutex_t *mutex); int pthread_mutex_lock(pthread_mutex_t


*mutex);
int
pthread_cond_wait(pthread_cond_t
*cond,
pthread_mutex_t
*mutex);
int
pthread_cond_signal(pthread_cond_t *cond) int pthread_mutex_init(pthread_mutex_t *mutex,
const
pthread_mutexattr_t
*attr);int
pthread_mutex_destroy(pthread_mutex_t
*mutex);int
pthread_join(pthread_t thread, void **value_ptr); (3,0)

2. Faa um resumo de como funciona e a inicializao do bootloader em um arquitetura x86.


Quais os cuidados deve-se ter no cdigo ASM?(ex: localizao disco, memria...). (2,0)
3. Multiple Feedback Queue (MFQ) e Round Robin so polticas de escalonamento apropriadas para quais tipos
de processos? Qual a diferena entre essas polticas?(1,5)
4. Considerando o software de E/S de um sistema operacional organizado em camadas, qual a funo dos
tratadores de interrupo (Interrupt Handlers) (1,5)
5. Excluso mtua, espera circular, posse e espera, e no preempo esto associadas com deadlock de qual
forma? Podem estar presentes no cdigo abaixo? Exemplifique. p1, p2 e p3 so os cdigos dos processos.
(2,0)