перемикаючись між оболонками, зупиняє музику, яка зараз відтворюється


11

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

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


4
Правильне запитання - що буде, якби всі ці користувачі захотіли відтворити музику?
JdeBP

Відповіді:


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.


Ви можете спробувати це. Відтворюйте музику та перемикайте VT. Через деякий час перейдіть на F7 VT. Пісня починається саме з того місця, де вона призупинена. Як це можливо, якщо система не спить нитками. Надання доступу до звуку вводу / виводу не може призупинити програвач. І я спробував це під час встановлення програми. дивно, що програма була встановлена ​​навіть тоді, коли я був переключений на VT.
DScript

@DScript це тому, що плеєр, який ви використовуєте, був розроблений для виявлення переходу на інший ВК та призупинення. За замовчуванням система не буде приємно або призупиняти процеси при переході на інший ВК.
Петрі

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.