Quando se usa interrupção, deve-se tomar cuidado com compartilhamento dos dados. Quando uma variável pode ser escrita a partir de dois contextos diferentes (por exemplo entre função main e uma rotina de interrupção), dizemos que temos ai uma possível seção crítica. Cite uma alternativa para contornar esse problema.

Passo 1

Beleza, o exercício fala sobre interrupções em programação e como elas podem causar problemas quando duas partes diferentes do código tentam modificar a mesma variável ao mesmo tempo. Isso é o que chamamos de “seção crítica”. O conteúdo que vamos precisar aqui é sobre gerenciamento de concorrência e como evitar conflitos nesses casos.

Passo 2

Primeiro, vamos entender o que é uma seção crítica. Imagine que a função principal do programa e a rotina de interrupção estão tentando atualizar a mesma variável. Se isso acontecer ao mesmo tempo, os dados podem ficar corrompidos ou inconsistentes.

Passo 3

Para evitar esse problema, precisamos garantir que apenas uma parte do código acesse a variável de cada vez. Uma maneira de fazer isso é bloqueando temporariamente as interrupções enquanto a função principal está acessando a variável.

Passo 4

Como fazemos isso na prática? Podemos desabilitar as interrupções antes de entrar na seção crítica e reabilitá-las depois que terminarmos de modificar a variável. Dessa forma, a rotina de interrupção não poderá interferir enquanto estamos atualizando a variável.

Passo 5

Vamos resumir a solução: ao desabilitar as interrupções durante a atualização da variável compartilhada, garantimos que nenhuma outra parte do código, como uma rotina de interrupção, possa acessar ou modificar essa variável ao mesmo tempo. Isso evita conflitos e mantém os dados consistentes.

Resposta

Uma alternativa para contornar o problema de seção crítica é desabilitar temporariamente as interrupções enquanto a variável compartilhada está sendo acessada ou modificada.

Exercícios relacionados