Sistemas Operacionais
2) O problema do jantar dos filósofos se resume a cinco filósofos sentados ao redor de uma mesa redonda, cada qual estando exclusivamente em um de três estados: comendo, pensando ou faminto. A frente de cada filósofo há um prato de comida chinesa. Há cincos palitos, cada um localizado entre dois pratos. Para um filosofo se alimentar deve fazer uso de dois palitos, exclusivamente os mais próximos a si (direita e esquerda), impossibilitando os filósofos em ambos suas laterais de se alimentarem.
3) Códigos fontes no pacote comprimido.
Este problema faz analogia aos problemas relacionados ao compartilhamento de recursos. Quando um programa (filósofo) está utilizando um recurso (palito em sua lateral) ele ficam travados para assegurar que o mesmo está sendo acessado por outro programa ou trecho de código (filósofo). Quando um do programa está interessado em um recurso já travado por outro, ele deve esperar (pensar) até que ele seja destravado. Quando existir vários programas envolvidos no travamento de recursos, um deadlock pode acontecer. Por exemplo, um programa necessita processar dois arquivos. Quando duas instâncias desse programa trava um dos arquivos cada um, ambos os programas esperam o outro destravar o arquivo que falta, o que nunca irá ocorrerá (seria o mesmo que cada filósofo pegar um dos palitos).
4) O método full.release informa que há buffers cheios. Ele é usado ao fim de toda inserção. O consumidor usa tal informação para iniciar o consumo dos buffers. Na modificação é utilizado o método empty.release, que informa que há buffers vazios, assim nunca é informado que há um buffer cheio, logo o consumidor nunca consome devido a ausência dessa informação. No lado oposto, o produtor usa a informação do empty.release,