Como o kernel do linux (usado no Ubuntu) gerencia o acesso simultâneo aos dados?

1

Eu quero saber como o kernel do Linux usado no Ubuntu gerencia o acesso simultâneo a dados compartilhados?

    
por green 10.09.2012 / 10:06

2 respostas

0

Antes da versão 2.6, o Linux era um kernel nonpreemptive . Agora, é totalmente preventivo, portanto, uma tarefa pode ser eliminada quando é executada no kernel.

O kernel do Linux fornece spinlocks e semáforos para bloqueio no kernel. Em máquinas SMP, o mecanismo de travamento fundamental é um spinlock , e o kernel é projetado para que o spinlock é realizado apenas por breves períodos.

Isso não é apropriado para máquinas de processador único. Em máquinas de processador único, o kernel desativa a preempção do kernel; e em vez de lançar o spinlock , ele habilita o kernel preempção .

    
por green 13.09.2012 / 21:40
0

Senhor, acho que você tem um equívoco sobre o que é o bloqueio e o que é o mutex. Além disso, você tem um equívoco sobre o que é o Ubuntu.

Vamos começar com o último: o Ubuntu é uma distribuição baseada em Linux . Todo e qualquer componente de arquitetura de sistema de baixo nível é feito pelo kernel do Linux. O Ubuntu é apenas uma maneira de juntar diferentes peças de software, configurando, instalando e atualizando-as de maneira robusta, uniforme e fácil de usar. Sua pergunta, portanto, refere-se ao Linux e não ao Ubuntu.

Os mutexes são usados para garantir que os recursos comuns (como a memória) não sejam acessados e modificados por engano ao mesmo tempo. Como os processos em geral não compartilham recursos como memória (nem no Windows nem no Linux), o problema surge quando se usa threads , e não em processos. Isso é feito usando mutexes, você está certo nisso; aqui você encontrará mais informações sobre isso. Linux usa encadeamentos POSIX. No entanto, se você - como programador - usa mutexes ou outra coisa (como spinlocks ou seção crítica), isso depende de você, não do sistema (veja aqui ), seja Windows ou Linux.

Quanto aos processos, é necessário bloquear o arquivo, mas essa é uma história diferente. E sim, os processos são implementados de forma diferente no Windows e no Linux (mais importante, no agendamento; consulte esta apresentação para lançar alguma luz sobre isso).

    
por January 10.09.2012 / 10:53