3 Código de 2.0, quando SMP foi introduzido: artigo do Alan Cox sobre SMP
6 Existe deste então. No entanto, sua característica é permitir que apenas
7 um processador execute código de kernel space. Por isso, foram criados
8 os demais mecanismos para evitar concorrência, como spinlock. TODO:
9 verificar de quando é spinlock e referenciar texto do Linus em
12 O BKL ainda se encontra hoje no código do Linux e muitos tem tentado
13 removê-lo. Um dos maiores obstáculos é o subsistema de tty, que ainda é
18 Condições de corrida: exemplos clássicos!?!
20 Clássico exemplo do incremento.
23 Uma interrupção pode acontecer, e o código de interrupção geralmente é uma
25 Em sistemas SMP, outro processador pode executar a mesma sessão crítica.
26 O escalonador pode executar (provavelmente, ocorreu uma interrupção, como o
27 timer) e executar outro processo que executará a mesma sessão crítica.
29 Para tanto, desabilitar interrupções é uma opção. Mas, muitas vezes, não é a
30 melhor. Em sistemas SMP, pode não ser suficiente.
32 Com a preempção suportada (escalonador pode ser executado em uma CPU
33 mesmo quando ela executa código em kernel space) (TODO: estudar melhor
34 as três opções atuais de preempção), outros problemas, antes não
35 existentes aparecem. (TODO: quais? exemplos!)
38 smp_processor_id: o escalonador pode executar e trocar o processo de CPU.
39 Desabilitar preempção basta.
45 Mais e melhores descrições dos problemas e das soluções
49 Livros acadêmicos sobre sistemas operacionais
50 Documentação histórica do Linux sobre as soluções que foram surgindo
51 Código de preempção, interrupção global, softirq/BH.