Nota: Isto é na verdade necessário para esta rotina invalidar linhos em um cache virtual que não escrito de volta é write – back na natureza. Para ver porque isto e realmente necessário, refaça o exemplo acima com a tarefa 1 e 2, mas agora fork ( ) ainda outra tarefa 3 antes dos erros do cow ocorreram, considere o conteúdo do caches no kernel e user space se a sequencia seguinte ocorre na exata sucessão:

1. Tarefa 1 lê uma parte da página no 0x2000
2. Tarefa 2 COW erra a página no 0x2000
3. Tarefa 2 efetiva suas escritas para a nova página no 0x2000
4. Tarefa 3 COW erra a página 0x2000

Mesmo em um cache não escrito devolta virtualmente catalogado, a tarefa 3 pode ver o dado incossistente depois do erro COW se FLUSH-PAGE-TO-RAM não invalida a página física do suposto kernel do cache.

 

VOID-UP-DATE

 

Embora não estritamente parte da arquitetura flush, em certas arquiteturas algumas operações e controles precisam ser eferuados aqui parea as coisas darem certo proporcionalmente e para o sistema manter-se consistente.

Em particular, para caches virtualmente catalogados esta rotina deve conferir para ver que o novo mapeamento que vem sendo adicionado pelo conente erro de página não adiciona um bad alias “para o user space”. Um “Bad Alias” e definido como dois ou mais mapeamentos (pelo menos um dos quais e escrevivel) para duas ou mais o páginas que traduzem
para a exata página física, e devido ao algarismo catalogado do cache pode também residir na única e mutualmente exclusiva linhas cache.

Se um BAD ALIAS é detectado, uma implementação precisa resolver esta inconsistência de alguma maneira, uma solução e andar através de todo os mapeamentos e mudar as page-tables para fazer estas páginas como não concreáveis se o hardaware permite tal coisa.

As conferências para isto são muito simples, tudo que uma implementação precisa fazer é:

Se ((uma -Um – Flags 6 (Um – Write/Um – Shared)) confere sua potência mau supostas, então para o caso comum (mapeamento escrevíveis devidos são extremamente raros) apenas uma comparação é necessitada para sistemas COW CAHCES virtualmente catalogados.

 

4.7.5 – Implicações Referentes a Arquitetura

 

4.7.5.1 – Arquitetura baseada no Modelo SMP

 

Dependendo da arquitetura certos consertos podem ser necessários para permitir a arquitetura FLUSH para trabalhar num sistema SMP.

O principal assunto e se uma das operações FLUSH acima fazem que o sistema inteiro veja o FLUSH globalmente, ou o FLUSH e apenas garantido para ser visto pelo processador local.

Em um último caso um CROSS CALLING MECHANISM é necessário. Os dois correntes sistemas SMP suportados no LiNUX (intel e space) usam inter-processor interrupts para “transmitir” a operação FLUSH e faz isto correr localmente em todo processador se necessário como um exemplo, no sistema SUNHM Space todos precessadores no sistema precisam executar o pedido FLUSH para garantir a consistência através do sistema inteiro.

De qualquer modo, nas máquinas SUNHD Space, TLB FLUSHES efetivamente no processador local são transmitidos sobre o BUS-SYSTEM pelo hardware e desta forma uma ligação cruzada não e necessária.

Visualizações: 1005217

Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Pages ( 12 of 14 ): « Previous1234567891011 12 1314Next »