Como as chamadas de sistema são tratadas em um sistema Linux multicore?

1

Quando um thread ou processo de um núcleo inicia uma chamada de sistema (ex. pode ser fork ()), o SO entra no modo kernel, assumindo que várias chamadas de sistema (ex. talvez também fork ()) vêm de núcleos diferentes, como o sistema operacional lida com isso? O SO usa um bloqueio global e só permite que apenas uma chamada esteja ativa no modo kernel? Ou o sistema operacional permite processar a chamada do sistema simultaneamente, exceto uma parte muito pequena, que é uma seção crítica?

    
por Happy 09.09.2015 / 06:00

1 resposta

0

Depende do sistema operacional e de sua versão. Todos os kernels Linux em uso, no entanto, são reentrantes e podem ser chamados várias vezes não apenas de CPUs diferentes, mas até de threads diferentes na mesma CPU. Eles usam bloqueios de granulação fina em vez de globais. (No entanto, veja também Big Kernel Lock , que não foi totalmente removido até 2011.)

FreeBSD (que tem seu próprio "bloqueio gigante"):

por 09.09.2015 / 06:47