Na ciência da computação, lixo é o baixo desempenho de um sistema de memória virtual (ou paginação) quando as mesmas páginas estão sendo carregadas repetidamente devido à falta de memória principal para mantê-las na memória. Dependendo da configuração e do algoritmo, o rendimento real de um sistema pode ser degradado em diversas ordens de magnitude.
Na ciência da computação, surra ocorre quando os recursos de memória virtual de um computador são usados em excesso, levando a um estado constante de paginação e falhas de página, inibindo a maior parte do processamento em nível de aplicativo. Isso faz com que o desempenho do computador diminua ou entre em colapso. A situação pode continuar indefinidamente até que o usuário feche alguns aplicativos em execução ou os processos ativos liberem recursos adicionais de memória virtual.
Para saber mais claramente sobre thrashing, primeiro precisamos saber sobre falha de página e troca.
Debulhando é quando a falha de página e a troca ocorrem com muita frequência e em uma taxa mais alta, e então o sistema operacional precisa gastar mais tempo trocando essas páginas. Este estado no sistema operacional é conhecido como thrashing. Devido ao thrashing, a utilização da CPU será reduzida ou insignificante.
O conceito básico envolvido é que se um processo receber poucos quadros, haverá muitas e frequentes falhas de página. Como resultado, nenhum trabalho valioso seria realizado pela CPU e a utilização da CPU cairia drasticamente.
O escalonador de longo prazo tentaria então melhorar a utilização da CPU carregando mais alguns processos na memória, aumentando assim o grau de multiprogramação. Infelizmente, isso resultaria em uma diminuição adicional na utilização da CPU, desencadeando uma reação em cadeia de maiores falhas de página seguidas por um aumento no grau de multiprogramação, chamado thrashing.
Algoritmos durante o Thrashing
Sempre que o thrashing é iniciado, o sistema operacional tenta aplicar o algoritmo de substituição de página global ou o algoritmo de substituição de página local.
1. Substituição global de páginas
Como a substituição global de páginas pode trazer qualquer página, ela tenta trazer mais páginas sempre que for encontrado thrashing. Mas o que realmente vai acontecer é que nenhum processo obtém frames suficientes e, como resultado, a surra aumentará cada vez mais. Portanto, o algoritmo global de substituição de página não é adequado quando ocorre thrashing.
2. Substituição de página local
Ao contrário do algoritmo de substituição de página global, a substituição de página local selecionará páginas que pertencem apenas a esse processo. Portanto, há uma chance de reduzir a surra. Mas está provado que existem muitas desvantagens se usarmos a substituição de página local. Portanto, a substituição de página local é apenas uma alternativa à substituição de página global em um cenário de esgotamento.
Causas de surra
Programas ou cargas de trabalho podem causar problemas e resultar em graves problemas de desempenho, como:
- Se a utilização da CPU for muito baixa, aumentamos o grau de multiprogramação introduzindo um novo sistema. Um algoritmo global de substituição de página é usado. O escalonador da CPU vê a diminuição da utilização da CPU e aumenta o grau de multiprogramação.
- A utilização da CPU é plotada em relação ao grau de multiprogramação.
- À medida que o grau de multiprogramação aumenta, a utilização da CPU também aumenta.
- Se o grau de multiprogramação for aumentado ainda mais, o thrashing se instala e a utilização da CPU cai drasticamente.
- Então, neste ponto, para aumentar a utilização da CPU e parar de debulhar, devemos diminuir o grau de multiprogramação.
Como eliminar a surra
Thrashing tem alguns impactos negativos na saúde do disco rígido e no desempenho do sistema. Portanto, é necessário tomar algumas atitudes para evitá-lo. Para resolver o problema de thrashing, aqui estão os seguintes métodos, como:
Técnicas para prevenir surras
A substituição da página local é melhor que a substituição da página global, mas a substituição da página local tem muitas desvantagens, por isso às vezes não é útil. Portanto, a seguir estão algumas outras técnicas usadas para lidar com o thrashing:
1. Modelo de localidade
Uma localidade é um conjunto de páginas que são usadas ativamente em conjunto. O modelo de localidade afirma que, à medida que um processo é executado, ele se move de uma localidade para outra. Assim, um programa é geralmente composto por diversas localidades diferentes que podem se sobrepor.
Por exemplo, quando uma função é chamada, ela define uma nova localidade onde são feitas referências de memória às instruções de chamada de função, variáveis locais e globais, etc. Da mesma forma, quando a função é encerrada, o processo sai desta localidade.
2. Modelo de conjunto de trabalho
Este modelo é baseado no conceito acima mencionado do Modelo de Localidade.
O princípio básico afirma que se alocarmos frames suficientes para um processo acomodar sua localidade atual, ele só falhará sempre que se mover para alguma nova localidade. Mas se os quadros alocados forem menores que o tamanho da localidade atual, o processo estará fadado a falhar.
De acordo com este modelo, com base no parâmetro A, o conjunto de trabalho é definido como o conjunto de páginas nas referências de página 'A' mais recentes. Conseqüentemente, todas as páginas usadas ativamente sempre acabariam fazendo parte do conjunto de trabalho.
ator chiranjeevi
A precisão do conjunto de trabalho depende do valor do parâmetro A. Se A for muito grande, os conjuntos de trabalho poderão se sobrepor. Por outro lado, para valores menores de A, a localidade pode não ser totalmente coberta.
Se D é a demanda total por quadros e WSSeué o tamanho do conjunto de trabalho para o processo i,
D = ⅀ WSSeu
Agora, se 'm' for o número de frames disponíveis na memória, existem duas possibilidades:
- D>m, ou seja, a demanda total excede o número de quadros, então ocorrerá thrashing, pois alguns processos não obterão quadros suficientes.
- D<=m, then there would be no thrashing.< li> =m,>
Se houver quadros extras suficientes, mais alguns processos poderão ser carregados na memória. Por outro lado, se a soma dos tamanhos dos conjuntos de trabalho exceder a disponibilidade dos quadros, alguns dos processos terão que ser suspensos (swap out of memory).
Essa técnica evita thrashing e garante o mais alto grau de multiprogramação possível. Assim, otimiza a utilização da CPU.
3. Frequência de falha de página
Uma abordagem mais direta para lidar com o thrashing é aquela que utiliza o conceito Page-Fault Frequency.
O problema associado ao thrashing é a alta taxa de falhas de página e, portanto, o conceito aqui é controlar a taxa de falhas de página.
Se a taxa de falha de página for muito alta, isso indica que o processo possui poucos quadros alocados para ele. Pelo contrário, uma baixa taxa de falta de página indica que o processo possui muitos quadros.
Os limites superior e inferior podem ser estabelecidos na taxa de falta de página desejada, conforme mostrado no diagrama.
Se a taxa de falta de página cair abaixo do limite inferior, os quadros poderão ser removidos do processo. Da mesma forma, se a taxa de falhas de página exceder o limite superior, mais quadros poderão ser alocados para o processo.
Em outras palavras, o estado gráfico do sistema deve ser mantido limitado à região retangular formada no diagrama dado.
Se a taxa de falhas de página for alta e sem quadros livres, alguns dos processos podem ser suspensos e alocados a eles podem ser realocados para outros processos. Os processos suspensos podem ser reiniciados mais tarde.