beralih di antara shell, menghentikan musik yang sedang diputar

11

Ketika saya sedang mendengarkan musik, saya mengubah konsol virtual menggunakan Ctrl+ Alt+ F2, dan tiba-tiba musik itu dijeda. Kembali ke konsol yang menjalankan X server Ctrl+ Alt+ F7atau masuk ke pengguna di konsol yang saat ini saya gunakan ( Ctrl+ Alt+ F2), mulai memutar musik lagi.

Linux (saya menggunakan Ubuntu) adalah sistem operasi multi-pengguna. Sejauh yang saya tahu, ia memiliki 7 konsol virtual yang dapat diakses pengguna dan bekerja secara bersamaan. Jadi mengapa hal ini terjadi? Apa yang akan terjadi jika sistem saya memperbarui saat mengganti konsol?

DScript
sumber
4
Pertanyaan yang tepat untuk ditanyakan adalah Apa yang akan terjadi jika semua pengguna itu ingin bermain musik?
JdeBP

Jawaban:

4

Linux memiliki banyak konsol virtual. Ctrl+ Alt+ beralih di antara konsol ini. Ketika Anda beralih dari konsol 7 ke konsol 2, periferal input dan output dialihkan dari konsol 7 ke konsol 2. Ketika konsol 7 tidak aktif, ia tidak memiliki akses ke periferal input / output: tampilan tidak ditampilkan pada layar, aplikasi tidak menerima input keyboard, dll.Fn

Untuk alasan historis, input dan output suara menggunakan saluran yang sama sekali berbeda dari perangkat input seperti keyboard dan mouse dan dari tampilan video. Perangkat konsol (abstraksi dalam sistem operasi) menutupi keyboard dan video tetapi tidak bersuara. Implementasi dasar suara yang paling umum pada sistem Unix adalah independen dari sistem itu, dan izin untuk menggunakan periferal suara diberikan berdasarkan keanggotaan grup daripada kepemilikan konsol. Ini sebenarnya kekurangan desain.

Ubuntu telah mengatur segalanya sehingga sesi masuk ke konsol, dan hanya mereka, yang memiliki akses ke perangkat audio. Jika Anda berpindah konsol, Anda kehilangan akses ke perangkat audio, kecuali jika Anda juga masuk ke konsol lain itu. Inilah yang seharusnya dilakukan sejak awal, tetapi bukan karena perancang antarmuka konsol tidak memikirkan suara.

Ketika Anda beralih ke konsol lain, program Anda tetap berjalan, karena CPU tidak terkait dengan konsol tetapi dengan mesin: siapa pun dengan akun di mesin diizinkan untuk menggunakan waktu CPU. Hal yang sama berlaku untuk sumber daya lain seperti memori dan file (tunduk pada izin). Hanya interaksi dengan pengguna yang diatur oleh kepemilikan konsol. Suara Anda berhenti diputar ketika Anda beralih ke konsol tempat Anda tidak masuk karena program Anda kehilangan hak istimewa untuk mengakses perangkat output suara.

Saya percaya bahwa Ubuntu mengimplementasikan kontrol akses melalui Polkit , tetapi saya tidak tahu persis bagaimana cara kerjanya.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Anda bisa mencoba ini. Putar musik dan alihkan VT. Setelah beberapa waktu beralih kembali ke F7 VT. Lagu dimulai dari titik di mana ia dijeda. Bagaimana ini mungkin jika sistem tidak tidur utas. Tidak memberikan akses ke suara I / O tidak bisa menghentikan pemain. Dan saya mencobanya saat menginstal program juga. secara mengejutkan, program tersebut telah diinstal bahkan ketika saya mengaktifkan VT.
DScript
1
@ Script Utas pemutar diblokir karena menunggu sistem suara. Utas yang tidak menunggu sistem suara terus berjalan. Tidak memberikan akses ke suara I / O tidak menghalangi pemain, karena cara itu dilakukan bukan untuk menolak permintaan tetapi untuk memblokirnya.
Gilles 'SANGAT berhenti menjadi jahat'
1

Beberapa waktu yang lalu, orang menggunakan terminal komputer untuk memasukkan data ke, atau menampilkan data dari, mainframe Unix. Jika ada pengguna terminal ini yang ingin, katakanlah,, cat /dev/zerooutput tidak disiarkan ke semua terminal / pengguna yang terhubung ke mainframe yang sama (itu karena itu adalah sistem multi-pengguna, dan setiap pengguna dapat menjalankan tugasnya tanpa mempengaruhi pengguna lain) .

Di zaman kita, kita menggunakan terminal virtual (atau konsol virtual - VC) yang merupakan emulasi perangkat lunak dari terminal komputer fisik , dan bekerja dengan cara yang sama. Jika Anda masuk di VC1 dan berjalan ls -alR /, output tidak akan disiarkan ke semua VC, dan, bahkan jika Anda beralih ke lsVC1 lain, Anda akan tetap berjalan di VC1 dan mengirimkan outputnya ke VC1 (dengan cara yang sama, pembaruan Anda perintah akan terus berjalan di VC Anda memulainya bahkan jika Anda beralih ke VC lain).

Sekarang, suara itu sedikit berbeda dari output standar, karena (secara default) menggunakan perangkat yang sama untuk output tidak peduli VC pengguna Anda masuk, tetapi pengguna Anda harus login untuk memiliki akses ke output dari perangkat suara.

Anda juga dapat melihat di sini untuk detail lebih lanjut tentang VC.

Petry
sumber
Anda bisa mencoba ini. Putar musik dan alihkan VT. Setelah beberapa waktu beralih kembali ke F7 VT. Lagu dimulai dari titik di mana ia dijeda. Bagaimana ini mungkin jika sistem tidak tidur utas. Tidak memberikan akses ke suara I / O tidak bisa menghentikan pemain. Dan saya mencobanya saat menginstal program juga. secara mengejutkan, program tersebut telah diinstal bahkan ketika saya mengaktifkan VT.
DScript
@ Script itu karena pemain yang Anda gunakan dirancang untuk mendeteksi beralih ke VC lain dan berhenti. Secara default, sistem tidak akan baik atau menghentikan proses saat beralih ke VC lain.
petry