Concorrência e Gerenciamento de Memória em SO

Classificado em Computação

Escrito em em português com um tamanho de 4,01 KB

Condição de Disputa

A condição de disputa ocorre quando dois processos querem ser executados ou usar o mesmo recurso. Se temos os processos A e B disputando o mesmo recurso, no cenário de 1° A / 2° B, vão permanecer as alterações de B; ou seja, o resultado final depende de quem executa primeiro ou depois.

Região Crítica

A região crítica é quem está sendo alvo da disputa: o recurso ou o objeto que está sendo disputado. Exemplo: Um data show sendo disputado por três professores, onde o data show é a região crítica e os professores são a condição de disputa.

Exclusão Mútua

Na exclusão mútua, enquanto um processo está utilizando um recurso, apenas ele o usa; todos os outros não usam e estão excluídos. Exemplo: O banheiro ocupado por uma pessoa é uma exclusão mútua em relação às outras que também querem usar.

As 4 Condições para Prover Exclusão Mútua

  • Nunca dois processos podem estar simultaneamente em uma região crítica;
  • Nenhuma exclusão depende da velocidade para ser escolhido;
  • Nenhum processo deve esperar eternamente para entrar em sua região crítica;
  • Nenhum processo fora de sua região crítica pode bloquear outros processos.

Alternativas para Realizar Exclusão Mútua

  • Desabilitar interrupção: Não deixa mais nenhum processo utilizar o recurso. Ninguém usa, só aquele processo, mas também não vê mais ninguém pedindo.
  • Usar uma variável de impedimento: O recurso estará vendo os pedidos, porém, mesmo assim, não deixa ninguém usar, ficando o aviso de que está sendo usado.
  • Fazer alternância obrigatória: Recursos são usados por processos que não precisam tanto quanto os outros que também querem utilizar, mas o acesso será passado para o próximo processo que alguém requisitou.

Essas exceções são usadas apenas por sistemas embarcados, que têm apenas um objetivo. Essas soluções não são eficientes; a que é utilizada é uma chamada semáforo (códigos binários). Todos os processos e o acesso à memória usam semáforo binário.

Gerenciador de Memória

O gerenciador de memória é um componente do sistema operacional que se preocupa com o esquema de organização da memória do sistema e com as estratégias de gerenciamento da memória. Ele desempenha as seguintes funções:

  • Monitora quais partes da memória estão em uso e quais estão disponíveis;
  • Aloca e libera memória para os processos;
  • Gerencia a permuta de processos entre memória principal e secundária (quando a memória principal não é capaz de abrigar todos os processos).

Requisitos do Gerenciador de Memória

  • Alocação (Relocação): O programador não deve se preocupar com o local onde o programa (processo) será carregado para execução. Durante a execução, o processo poderá sair da memória e retornar para um local diferente. Referências devem ser resolvidas para endereços de memória física (por exemplo, de bloqueado para suspenso).
  • Proteção: Processos não devem poder referenciar posições de memória em outros processos sem permissão.
  • Compartilhamento: Deve-se permitir que vários processos possam acessar a mesma porção de memória.
  • Organização Lógica: Programas são normalmente separados em módulos, que podem ser escritos e compilados separadamente; graus diferentes de proteção podem ser atribuídos aos módulos.
  • Organização Física: A memória é organizada como uma hierarquia. Se um programa precisa de mais memória do que o disponível na Memória Principal (MP), a Memória Swap (MS) deverá ser utilizada. Com o uso de memória cache, este gerenciamento deverá ser feito de forma transparente pelo SO.

Entradas relacionadas: