สลับระหว่างกระสุนหยุดเพลงที่กำลังเล่นอยู่


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 ได้ตั้งค่าต่างๆเพื่อให้เซสชันที่ล็อกอินเข้าสู่คอนโซลและเฉพาะพวกเขาเท่านั้นที่สามารถเข้าถึงอุปกรณ์เสียงได้ หากคุณเปลี่ยนคอนโซลคุณจะไม่สามารถเข้าถึงอุปกรณ์เสียงได้เว้นแต่คุณจะเข้าสู่คอนโซลอื่นนั้น นี่คือสิ่งที่ควรทำตั้งแต่เริ่มต้น แต่ไม่ใช่เพราะผู้ออกแบบคอนโซลอินเตอร์เฟสไม่ได้คิดเกี่ยวกับเสียง

เมื่อคุณเปลี่ยนไปใช้คอนโซลอื่นโปรแกรมของคุณจะทำงานต่อไปเนื่องจาก CPU ไม่ได้เชื่อมโยงกับคอนโซล แต่ใช้กับเครื่อง: ผู้ใช้ที่มีบัญชีในเครื่องจะได้รับอนุญาตให้ใช้เวลาของ CPU เช่นเดียวกันกับทรัพยากรอื่น ๆ เช่นหน่วยความจำและไฟล์ (ขึ้นอยู่กับสิทธิ์) เป็นเพียงการโต้ตอบกับผู้ใช้ที่ควบคุมโดยความเป็นเจ้าของคอนโซล เสียงของคุณหยุดเล่นเมื่อคุณเปลี่ยนไปใช้คอนโซลที่คุณไม่ได้เข้าสู่ระบบเนื่องจากโปรแกรมของคุณเสียสิทธิ์ในการเข้าถึงอุปกรณ์เสียงออก

ฉันเชื่อว่า Ubuntu ใช้การควบคุมการเข้าถึงผ่านPolkitแต่ฉันไม่ทราบว่าวิธีการนี้ทำงานอย่างไร


คุณสามารถลองสิ่งนี้ เล่นเพลงและสลับ VT หลังจากเวลาผ่านไปสลับ F7 VT เพลงเริ่มต้นจากจุดที่หยุดชั่วคราว สิ่งนี้จะเกิดขึ้นได้อย่างไรหากระบบไม่ได้นอนหลับ ไม่อนุญาตให้เข้าถึงเสียง I / O ไม่สามารถหยุดเครื่องเล่นชั่วคราวได้ และฉันก็ลองมันในขณะที่ติดตั้งโปรแกรมเช่นกัน น่าแปลกใจที่โปรแกรมได้รับการติดตั้งแม้ในขณะที่ฉันเปลี่ยน VT
DScript

1
@DScript เธรดผู้เล่นถูกบล็อกเนื่องจากกำลังรอระบบเสียง เธรดที่ไม่รอระบบเสียงยังคงทำงานต่อไป การไม่ให้สิทธิ์การเข้าถึง I / O เสียงจะบล็อกผู้เล่นเพราะวิธีที่มันทำไม่ได้เป็นการปฏิเสธคำขอ แต่เป็นการบล็อก
Gilles 'ดังนั้น - หยุดความชั่วร้าย'

1

เมื่อเวลาผ่านไปผู้คนใช้เทอร์มินัลคอมพิวเตอร์เพื่อป้อนข้อมูลเข้าหรือแสดงข้อมูลจากเมนเฟรม Unix หากผู้ใช้เทอร์มินัลนี้ต้องการพูดว่าcat /dev/zeroเอาท์พุทไม่ได้ถูกถ่ายทอดไปยังเทอร์มินัล / ผู้ใช้ทั้งหมดที่เชื่อมต่อกับเมนเฟรมเดียวกัน (นั่นเป็นเพราะมันเป็นระบบผู้ใช้หลายคนและผู้ใช้แต่ละคนสามารถทำงานได้ .

ในสมัยของเราเรากำลังใช้เทอร์มินัลเสมือน (หรือคอนโซลเสมือน - VC) ซึ่งเป็นซอฟต์แวร์จำลองของเทอร์มินัลคอมพิวเตอร์จริงและทำงานในลักษณะเดียวกัน หากคุณเข้าสู่ระบบใน VC1 และเรียกใช้ls -alR /เอาต์พุตจะไม่ถูกเผยแพร่ไปยัง VCs ทั้งหมดและแม้ว่าคุณจะเปลี่ยนไปใช้ VC อื่นคุณlsจะยังคงทำงานใน VC1 ต่อไปและส่งเอาต์พุตไปยัง VC1 (เช่นเดียวกับการอัปเดตของคุณ คำสั่งจะยังคงทำงานใน VC ที่คุณเริ่มต้นแม้ว่าคุณจะเปลี่ยนไปใช้ VC อื่น)

ตอนนี้เสียงมันแตกต่างจากเอาท์พุทมาตรฐานเล็กน้อยเนื่องจาก (โดยค่าเริ่มต้น) มันใช้อุปกรณ์เดียวกันสำหรับเอาต์พุตไม่ว่า VC ของผู้ใช้ของคุณจะถูกล็อกอิน แต่ผู้ใช้ของคุณจะต้องเข้าสู่ระบบเพื่อให้สามารถเข้าถึงเอาต์พุตของ อุปกรณ์เสียง

นอกจากนี้คุณยังสามารถดูได้ที่นี่สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับบาง VC


คุณสามารถลองสิ่งนี้ เล่นเพลงและสลับ VT หลังจากเวลาผ่านไปสลับ F7 VT เพลงเริ่มต้นจากจุดที่หยุดชั่วคราว สิ่งนี้จะเกิดขึ้นได้อย่างไรหากระบบไม่ได้นอนหลับ ไม่อนุญาตให้เข้าถึงเสียง I / O ไม่สามารถหยุดเครื่องเล่นชั่วคราวได้ และฉันก็ลองมันในขณะที่ติดตั้งโปรแกรมเช่นกัน น่าแปลกใจที่โปรแกรมได้รับการติดตั้งแม้ในขณะที่ฉันเปลี่ยน VT
DScript

@DScript นั่นเป็นเพราะผู้เล่นที่คุณกำลังใช้ถูกออกแบบมาเพื่อตรวจจับการสลับไปยัง VC อื่นและหยุดชั่วคราว โดยค่าเริ่มต้นระบบจะไม่ดีหรือหยุดกระบวนการชั่วคราวเมื่อเปลี่ยนเป็น VC อื่น
petry

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.