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.