Soluções de problemas de Hardware e Software
Regiões Críticas
Nome: Felipe dos Anjos Almeida
Curso: Análise e Desenvolvimento de Sistemas
RA: C2025E-9
1. Hardware
1.1 Inibições de Interrupções
O modo como é feito a implementação de uma região crítica pode variar para cada sistema, o método mais simples é prevenir qualquer mudança de controle do processador dentro de uma região crítica.
Em sistemas com somente um processador, isso pode ser feito desabilitando as interrupções na entrada da região crítica, evitando chamadas de sistema que causem troca de contexto. No final da região crítica, as interrupções são habilitadas novamente. Com essa implementação, qualquer linha de execução entrando em uma região crítica prevenirá outra linha de execução ou interrupção de usar a CPU, até que a linha de execução saia da região crítica. A desabilitação de interrupções só funciona no processador relacionado ao processo, entretanto, a máquina pode conter mais de um processador, sendo assim, não é boa prática permitir a inibição de interrupções em modo usuário.
Através de semáforos, a abordagem bruta pode ser melhorada. Para entrar numa região crítica, uma linha de execução deve obter um semáforo, que será descartado na saída da região crítica. Cada recurso compartilhado, ou um conjunto de recursos compartilhados em comum, possui um semáforo próprio. Qualquer outra linha de execução deverá esperar para entrar numa região crítica em uso, mas poderá usar a CPU para executar qualquer outro código, incluindo regiões críticas protegidas por outro semáforo.
Em modo usuário, regiões críticas de aplicações residem na área de RAM dos respectivos processos e são modificadas geralmente pelos próprios processos. Já em modo núcleo, as regiões críticas geralmente bloqueiam a preemptividade. Qualquer interrupção que ocorre numa região crítica é salva para processamento futuro. Nesse caso, as regiões críticas devem ser curtas o suficiente para permitir a volta da