переключение между оболочками, останавливает музыку, которая в данный момент играет

11

Пока я слушал музыку, я поменял виртуальную консоль с помощью Ctrl+ Alt+ F2, и музыка неожиданно остановилась. Возвращаясь обратно в консоль , которая запускает X - сервер Ctrl+ Alt+ F7или вход в систему для пользователя в консоли , что я в настоящее время использую ( Ctrl+ Alt+ F2), начинает играть музыку снова.

Linux (я использую Ubuntu) - многопользовательская операционная система. Насколько я знаю, у него есть 7 виртуальных консолей, в которые пользователи могут входить и работать одновременно. Так почему же это происходит? Что произойдет, если моя система будет обновляться при переключении консолей?

DScript
источник
4
Правильный вопрос, который нужно задать: что произойдет, если все эти пользователи захотят играть музыку?
JdeBP
Смотрите: askubuntu.com/questions/547742/…
muru

Ответы:

4

Linux имеет несколько виртуальных консолей. Ctrl+ Alt+ переключается между этими консолями. При переключении с консоли 7 на консоль 2 периферийные устройства ввода и вывода перенаправляются с консоли 7 на консоль 2. Когда консоль 7 неактивна, она не имеет доступа к периферии ввода-вывода: дисплей не отображается на экран, приложения не получают ввод с клавиатуры и т. д.Fn

По историческим причинам для ввода и вывода звука используются совершенно разные каналы от устройств ввода, таких как клавиатура и мышь, и от видеодисплеев. Консольные устройства (абстракция в операционной системе) покрывают клавиатуру и видео, но не звук. Наиболее распространенная базовая реализация звука в системе Unix не зависит от этой системы, и разрешение на использование звуковой периферии предоставляется на основании членства в группе, а не владения консолью. На самом деле это недостаток дизайна.

Ubuntu настроил все так, чтобы сессия вошла в консоль и только у них был доступ к аудиоустройству. Если вы переключите консоли, вы потеряете доступ к аудиоустройству, если только вы не войдете в эту другую консоль. Это то, что действительно должно было быть сделано с самого начала, но не потому, что дизайнеры консольных интерфейсов не думали о звуке.

Когда вы переключаетесь на другую консоль, ваши программы продолжают работать, потому что процессор связан не с консолью, а с машиной: любому, кто имеет учетную запись на машине, разрешено использовать время процессора. То же самое касается других ресурсов, таких как память и файлы (в зависимости от разрешений). Только взаимодействие с пользователем регулируется владением консолью. Ваш звук перестает воспроизводиться, когда вы переключаетесь на консоль, где вы не вошли в систему, потому что ваши программы теряют право доступа к устройству вывода звука.

Я считаю, что Ubuntu реализует управление доступом через Polkit , но я не знаю точно, как это работает.

Жиль "ТАК - перестань быть злым"
источник
Вы можете попробовать это. Включите музыку и включите VT. Через некоторое время переключитесь обратно на F7 VT. Песня начинается именно с того места, где она была приостановлена. Как это возможно, если система не спит темы. Отсутствие доступа к звуку ввода / вывода не может приостановить работу плеера. И я попробовал это при установке программы. Удивительно, что программа была установлена, даже когда я был переключен VT.
DScript
1
@DScript Поток плеера заблокирован, потому что он ожидает звуковую систему. Поток, который не ожидает звуковую систему, продолжает работать. Отсутствие доступа к звуковому вводу- выводу блокирует проигрыватель, потому что способ не состоит в том, чтобы отклонить запрос, а заблокировать его.
Жиль "ТАК - перестань быть злым"
1

Некоторое время назад люди использовали компьютерные терминалы для ввода данных или отображения данных с мэйнфрейма Unix. Если кто-то из пользователей этого терминала хотел, скажем, cat /dev/zeroчтобы вывод не передавался всем терминалам / пользователям, подключенным к одному и тому же мэйнфрейму (это потому, что это была многопользовательская система, и каждый пользователь мог выполнять свои задачи, не затрагивая других пользователей). ,

В наши дни мы используем виртуальные терминалы (или виртуальные консоли - VC), которые являются программной эмуляцией физических компьютерных терминалов и работают аналогичным образом. Если вы вошли в VC1 и работаете ls -alR /, выходные данные не будут транслироваться на все VC, и, даже если вы переключитесь на другой VC, вы lsпродолжите работать в VC1 и отправите свои выходные данные в VC1 (так же, как ваше обновление Команда будет продолжать работать в том VC, в котором вы ее запускали, даже если вы переключаетесь на другой VC).

Теперь звук немного отличается от стандартного вывода, так как (по умолчанию) он использует одно и то же устройство для вывода независимо от того, в какой VC ваш пользователь вошел, но ваш пользователь должен войти в систему, чтобы иметь доступ к выходу звуковое устройство.

Вы также можете посмотреть здесь более подробную информацию о VC.

Petry
источник
Вы можете попробовать это. Включите музыку и включите VT. Через некоторое время переключитесь обратно на F7 VT. Песня начинается именно с того места, где она была приостановлена. Как это возможно, если система не спит темы. Отсутствие доступа к звуку ввода / вывода не может приостановить работу плеера. И я попробовал это при установке программы. Удивительно, что программа была установлена, даже когда я был переключен VT.
DScript
@DScript это потому, что плеер, который вы используете, был разработан для обнаружения переключения на другой VC и паузы. По умолчанию система не будет останавливать или останавливать процессы при переключении на другой виртуальный канал.
Петри