Em sistemas operacionais, trashing é um fenômeno que ocorre quando o espaço em disco disponível para as páginas de memória de um processo se torna muito pequeno, exigindo que o sistema pagina continuamente os dados para dentro e para fora da memória, a fim de fornecer ao processo espaço de memória suficiente para ser executado. Essa troca frequente entre memória e disco pode impactar gravemente o desempenho do processo e do sistema como um todo, levando a um desempenho lento e potencial instabilidade do sistema.
Causas da surra: A surra pode ocorrer por vários motivos:
1.
Comprometimento excessivo: Alocar mais memória para processos do que a memória física disponível pode levar à superalocação, fazendo com que o sistema use muito a memória virtual e resultando em paginação excessiva.
2.
Alta demanda de memória: Quando vários processos com uso intensivo de memória estão sendo executados simultaneamente, a demanda por memória física pode exceder a capacidade disponível, provocando thrashing.
3.
Fragmentação de memória: Quando a memória é alocada e liberada repetidamente, isso pode resultar em fragmentação da memória. Essa fragmentação dificulta a alocação de grandes blocos de memória contíguos, mesmo que haja memória livre suficiente no geral, levando ao esgotamento.
Efeitos da surra: 1.
Degradação de desempenho: O thrashing desacelera significativamente o sistema, pois a CPU gasta muito tempo trocando dados entre a memória e o disco em vez de executar instruções.
2.
Processos que não respondem: Os processos afetados pelo thrashing podem sofrer longos atrasos ou até mesmo deixar de responder completamente devido à troca contínua de suas páginas de memória.
3.
Maior E/S de disco: A troca excessiva causa E/S de disco pesada, o que pode levar ao aumento do desgaste da unidade de disco, à redução do rendimento do disco e a possíveis problemas de desempenho para outras operações vinculadas ao disco.
Prevenir e gerenciar thrashing: Várias técnicas são usadas para prevenir e gerenciar o thrashing:
1.
Paging por demanda: A paginação por demanda evita carregar programas inteiros ou conjuntos de dados na memória de uma só vez. Em vez disso, ele carrega apenas as páginas necessárias quando necessário, reduzindo o consumo geral de memória e o risco de sobrecarga.
2.
Algoritmos de substituição de página: Os sistemas operacionais usam vários algoritmos de substituição de página, como algoritmos Least Recentemente Usados (LRU) e Clock, para determinar quais páginas devem ser removidas da memória quando ocorre a troca. Esses algoritmos visam minimizar as chances de surra, substituindo páginas com menor probabilidade de serem acessadas em breve.
3.
Balanceamento de carga: As técnicas de balanceamento de carga distribuem processos por vários processadores ou sistemas, garantindo que nenhum sistema único fique sobrecarregado e sujeito a problemas.
4.
Políticas de gerenciamento de memória: Definir limites de memória, impor cotas de memória e usar o espaço de troca de maneira eficaz pode ajudar a evitar a alocação excessiva de memória e reduzir a probabilidade de sobrecarga.
5.
Monitoramento e ajuste: Os administradores de sistema podem monitorar métricas do sistema, como utilização de memória e taxas de falha de página, para identificar possíveis condições de thrashing. O ajuste dos parâmetros do sistema relacionados ao gerenciamento e troca de memória pode ser feito para ajustar o comportamento do sistema e mitigar o desgaste.
Concluindo, o trashing em sistemas operacionais ocorre quando a demanda por memória física excede a capacidade disponível, levando a trocas excessivas entre memória e disco. Pode degradar gravemente o desempenho do sistema e impactar a capacidade de resposta dos processos. Técnicas como paginação por demanda, algoritmos de substituição de página, balanceamento de carga e políticas de gerenciamento de memória são empregadas para prevenir e gerenciar thrashing, garantindo a utilização eficiente dos recursos do sistema.