alternar entre os shells, interrompe a música que está sendo reproduzida no momento

8

Enquanto ouvia música, mudei o console virtual usando Ctrl + Alt + F2 , e de repente a música foi pausada. Voltando de volta ao console que executa o servidor X Ctrl + Alt + F7 ou conectando-se ao usuário no console que estou atualmente usando ( Ctrl + Alt + F2 ), inicia a reprodução da música novamente.

Linux (eu estou usando o Ubuntu) é um sistema operacional multi-usuário. Tanto quanto eu sei, tem 7 consoles virtuais que os usuários podem fazer logon e trabalhar simultaneamente. Então, por que isso está acontecendo? O que aconteceria se meu sistema estivesse atualizando durante a troca dos consoles?

    
por DScript 24.06.2015 / 18:54

2 respostas

2

O Linux possui vários consoles virtuais. Ctrl + Alt + F n alterna entre esses consoles. Quando você muda do console 7 para o console 2, os periféricos de entrada e saída são redirecionados do console 7 para o console 2. Quando o console 7 está inativo, ele não tem acesso aos periféricos de entrada / saída: o display não é mostrado na tela, os aplicativos não recebem entrada de teclado, etc.

Por razões históricas, a entrada e saída de som usa canais completamente diferentes dos dispositivos de entrada, como teclado e mouse, e de exibições de vídeo. Os dispositivos do console (a abstração no sistema operacional) cobrem o teclado e o vídeo, mas não o som. A implementação básica mais comum do som em um sistema Unix é independente desse sistema, e a permissão para usar os periféricos de som é concedida com base na participação do grupo e não na propriedade do console. Esta é de fato uma deficiência de projeto.

O Ubuntu configurou as coisas para que a sessão entrasse no console, e apenas elas tivessem acesso ao dispositivo de áudio. Se você alternar os consoles, perderá o acesso ao dispositivo de áudio, a menos que também faça login nesse outro console. Isto é o que realmente deveria ter sido feito desde o início, mas não foi porque os projetistas de interfaces de console não estavam pensando em som.

Quando você alterna para outro console, seus programas continuam em execução, porque a CPU não está associada a um console, mas a uma máquina: qualquer pessoa com uma conta na máquina pode usar o tempo da CPU. O mesmo vale para outros recursos, como memória e arquivos (sujeitos a permissões). São apenas interações com o usuário que são controladas pela propriedade do console. Seu som pára de tocar quando você muda para um console em que não está logado porque seus programas perdem o privilégio de acessar o dispositivo de saída de som.

Acredito que o Ubuntu implemente o controle de acesso via Polkit , mas não sei exatamente como isso funciona.

    
por 25.06.2015 / 03:51
1

Um tempo atrás, as pessoas usavam terminais de computador para inserir dados ou exibir dados de um mainframe Unix. Se qualquer um desses usuários do terminal quisesse, digamos, cat /dev/zero , a saída não era transmitida para todos os terminais / usuários conectados ao mesmo mainframe (isso porque era um sistema multiusuário e cada usuário podia executar suas tarefas sem afetar outros usuários).

Em nossos dias, estamos usando terminais virtuais (ou consoles virtuais - VC) que são emulações de software dos terminais de computador físicos e trabalhe de maneira semelhante. Se você estiver logado no VC1 e executar ls -alR / , a saída não será transmitida para todos os VCs e, mesmo se você mudar para outro VC, seu ls continuará funcionando no VC1 e enviará sua saída para VC1 ( da mesma forma, seu comando de atualização continuará funcionando no VC que você iniciou, mesmo se você mudar para outro VC).

Agora, soa um pouco diferente da saída padrão, pois (por padrão) ele usa o mesmo dispositivo para a saída, não importa o VC em que o usuário está logado, mas o usuário precisa estar logado para ter acesso ao saída do dispositivo de som.

Você também pode dar uma olhada aqui para mais detalhes sobre o VC.

    
por 24.06.2015 / 23:13