MC514 - Sistemas Operacionais: Teoria e Prática
-"Professora, o que vai cair na prova?"
Resposta centrada em conteúdos
- conceitos de espaço de endereçamento, processos e threads;
- programação multi-thread;
- mecanismos de sincronização: espera ocupada, futexes, semáforos,
locks (simples ou recursivos) e variáveis de condição;
- algoritmos de exclusão mútua;
- conceitos de starvation e deadlock;
- hierarquia de processos e comandos fork e wait.
- sinais.
Os conceitos são simples, podem ser obtidos a partir de livros e da
documentação on-line das bibliotecas. O desafio é saber utilizar estes
conceitos para construir programas eficientes e corretos. Por isso,
prefiro uma versão da matéria que cai na prova baseada em
habilidades adquiridas.
Resposta centrada em habilidades adquiridas
- entendimento da estrutura do espaço de endereçamento de um
processo e quais práticas de programação podem levar a erros como
dados corrompidos, pilha corrompida ou segmentation fault;
- entendimento de como o espaço de endereçamento é compartilhado
entre as threads e como as práticas incorretas de programação citadas
no item anterior podem afetar a execução de um programa multithread;
- capacidade de entender que um código errado pode funcionar
corretamente em algumas máquinas e em outras não;
- capacidade de substituir um mecanismo de sincronização por
outro. Por exemplo, subtituir espera ocupada por futexes, semáforos
por locks e variáveis de condição etc;
- capacidade de propor soluções multithread para problemas
computacionais;
- capacidade de avaliar se um algoritmo restringe mais do que o
necessário o paralelismo da aplicação (por exemplo, uma solução para o
problema dos filósofos que permitisse que apenas um filósofo comesse
por vez);
- capacidade de detectar problemas de exclusão mútua;
- capacidade de detectar cenários de deadlock;
- capacidade de detectar cenários de starvation;
- capacidade de escrever código adequado para tratamento de sinais
assíncronos; capacidade de reconhecer possíveis erros de execução no
tratamento de sinais assíncronos.
Se você adquiriu estas habilidades, está preparado! Boa prova!