SóProvas


ID
2569993
Banca
FCC
Órgão
TRF - 5ª REGIÃO
Ano
2017
Provas
Disciplina
Sistemas Operacionais
Assuntos

Quando um processo quer imprimir um arquivo na impressora, insere o nome do arquivo em um diretório de spool. Um outro processo verifica periodicamente se existe algum arquivo a ser impresso e, se houver, o imprime e remove seu nome do diretório. Suponha que o diretório de spool tenha vagas numeradas 0, 1, 2,... etc e que cada vaga é capaz de conter um nome de arquivo. Suponha que existem duas variáveis compartilhadas: Out, que indica o próximo arquivo a ser impresso e Free, que indica a próxima vaga livre do spool. Em um dado instante as vagas anteriores estão ocupadas e Free = 7. Quase simultaneamente, os processos A e B decidem colocar um arquivo na fila de impressão e ocorre a sequência de ações: 

1. O processo A lê Free e armazena o valor 7 na sua variável local chamada proxima_vaga_livre
2. Em seguida ocorre uma interrupção do relógio e a CPU decide que o processo A já executou o suficiente e alterna para o processo B. 
3. O processo B também lê Free e obtém o valor 7. B armazena 7 na sua variável local proxima_vaga_livre. 
4. Neste momento, ambos os processos têm a informação de que a vaga livre é a 7. 
5. B prossegue sua execução, armazenando o nome do seu arquivo na vaga 7 e atualiza Free para 8.
6. Em seguida, o processo A executa novamente de onde parou. Verifica sua variável local proxima_vaga_livre, que é igual a 7, e então escreve o nome do seu arquivo na vaga 7. O processo A atualiza o valor de Free para 8. 

Nesta situação,

Alternativas
Comentários
  • d) o processo B nunca terá seu arquivo impresso, pois ocorreu uma condição de disputa.  

  • Letra D

     

    Condição de Disputa, tbém chamado de Condição de Corrida (race condition) trata-se de uma anomalia, em que o SO precisa realizar uma tratativa para evitar conflitos.
    Isso normalmente acontece qdo há o compartilhamento de algum recurso entre dois processos, pode ser um arquivo, uma impressora... qquer necessidade que possa afetar a conclusão de um processo.
    Isso é indesejável na condição de um sistema.
    Qdo a utilização do recurso é exclusiva, certamente não ocorre a "condição de corrida".

     

    A Exclusão mútua é o modo de assegurar que outros processos sejam “impedidos” de manipular uma região crítica (ou um recurso compartilhado) em um mesmo instante (mecanismo que evita a condição de corrida).

     

    Reentrância (código reentrante) é a capacidade de um código executável ser compartilhado por diversos usuários, exigindo que apenas uma cópia do programa esteja na memória. A reentrância permite que cada usuário possa estar em um ponto diferente do código reentrante, manipulando dados próprios, exclusivos de cada usuário.

    É comum, em sistemas multiprogramáveis, vários usuários utilizarem os mesmos aplicativos simultaneamente. Se cada usuário que utilizasse um destes aplicativos trouxesse o código executável para a memória, haveria diversas cópias de um mesmo programa na memória principal, o que ocasionaria um desperdício de espaço.