O sistema FESO tem suporte a processadores multicore. Um computador multicorecombina dois ou mais processadores em uma unica peca de silicio [1]. Este tipo de sistema permite que mais de um programa seja executadosimultaneamente em um computador, ou mesmo, que um programa seja dividido empartes e executado por diversas CPUs em simultaneo.Durante o processo de inicializacao, o SO faz a deteccao da existenciade multiplos processadores atraves das tabelas ACPI encontradas na memoria. Opadrao ACPI (Advanced Configuration andPower Intefacer) envolve, entre outras funcoes, o fornecimento das Multiprocessor Specification Tables(tabelas para especificacao de multiplos processadores) [2]. Atraves dabusca a analise dessas tabelas, o sistema operacional consegue descobrirquantos processadores existem no sistema, e como eles podem ser acessados.Uma vez que o SO tem acessos as informacoes contidas nastabelas, ele pode inicializar os processadores atraves do envio de IPIs ouinterrupcoes entre processadores. Sempre que um computador com multiplosprocessadores e iniciado, um dos processadores e selecionado para inicializar ocomputador, este processador e chamado de BSP (boot strap processor), enquanto os outros processadores saochamados de AP (application processors).As IPIs sao enviadas a partir do BSP para realizar a inicializacao de todos osAPs presentes no sistema.O sistema operacional carrega previamente em um espaco no inicioda memoria um pequeno programa responsavel por configurar corretamente osprocessadores. E o chamado codigo trampolim. O endereco do ponto de entradadesse programa e enviado junto com as IPIs para cada um dos APs. Ao receber aIPI o application processor executa a partir da posicaorecebida junto com a interrupcao, ficando corretamente configurado apos aexecucao do codigo trampolim. Em seguida, os APs entram em estado de espera por uma interrupcao, para so entao comecarema executar algum programa.Enquanto processadores com apenas um nucleo possuem um par dePICs ligados a eles, sistemas com multiplos nucleos precisam de outro tipo de chip para funcionar corretamente. Estechip e o Advanced Programmable InterruptController (APIC). Sistema com multiplos nucleos possuem uma estrutura comomostrada na figura [3].Conectado a cada processador existe um Local APIC ou LAPIC responsavel por receber e enviar asinterrupcoes. Cada Local APIC estaconectado ao barramento ICC, bem como o I/O APIC. O I/O APIC e responsavel porreceber os sinais das interrupcoes de hardwaree repassa-los aos outro LAPICs, permitindo que mais de um processador possatratar um pedido de interrupcao de hardware.Cada LAPIC possui um TIMER, que pode ser configurado paradisparar uma interrupcao a cada intervalo de tempo predefinido. Esse TIMER econfigurando pelo sistema operacional, para que cada nucleo interrompa aexecucao do processo em execucao e permita que um novo processo tenha sua fatiade tempo na CPU.Como cada processador pode estar executando um programadiferente, e como cada um deles tem seu proprio TIMER, gerando interrupcoes atodo o momento, e altamente provavel que dois ou mais processadores tentemacessar as rotinas do kernel simultaneamente.Caso dois ou mais processadores estejam executando o codigo do nucleoinadvertidamente ao mesmo tempo, e possivel que ambos acessem alguma variavelcompartilhada e que acabem por deixar as estruturas do nucleo em um estadoinconsistente.Para evitar esse problema, o nucleo do sistema FESO tem umagrande trava. Essa trava e implementada atraves de uma variavel que e lida portodos os processadores antes que eles comecem