쉘 간 전환, 현재 재생 중인 음악 중지

쉘 간 전환, 현재 재생 중인 음악 중지

음악을 듣다가 ++로 가상 콘솔을 바꾸니 갑자기 음악이 멈췄습니다. X 서버++를 실행하는 콘솔로 돌아가거나 Ctrl현재 Alt사용 중인 콘솔(++)에 사용자로 로그인하면 음악이 다시 재생되기 시작합니다.F2CtrlAltF7CtrlAltF2

Linux(저는 Ubuntu를 사용합니다)는 다중 사용자 운영 체제입니다. 내가 아는 한, 사용자가 동시에 로그인하고 작업할 수 있는 7개의 가상 콘솔이 있습니다. 그렇다면 왜 이런 일이 발생합니까? 콘솔을 전환하는 동안 시스템이 업데이트되면 어떻게 되나요?

답변1

Linux에는 여러 개의 가상 콘솔이 있습니다. Ctrl+ Alt+이 콘솔 사이를 전환합니다. 콘솔 7에서 콘솔 2로 전환하면 입력 및 출력 주변 장치가 콘솔 7에서 콘솔 2로 경로가 변경됩니다. 콘솔 7이 비활성화되면 입/출력 주변 장치에 액세스할 수 없습니다. 모니터에 화면이 나타나지 않고 응용 프로그램이 키보드 입력을 받지 못하는 등의 현상이 발생합니다.Fn

역사적인 이유로 사운드 입력 및 출력은 키보드, 마우스, 비디오 모니터와 같은 입력 장치와 완전히 다른 채널을 사용합니다. 콘솔 장치(운영 체제의 추상화)는 키보드와 비디오를 포함하지만 사운드는 포함하지 않습니다. Unix 시스템에서 가장 일반적인 사운드 기반 구현은 해당 시스템과 독립적이며 사운드 주변 장치 사용 권한은 콘솔 소유권이 아닌 그룹 구성원 자격에 따라 부여됩니다. 이것은 실제로 설계 결함입니다.

Ubuntu는 콘솔에 로그인된 세션만이 오디오 장치에 액세스할 수 있도록 설정되었습니다. 콘솔을 전환하는 경우 다른 콘솔에도 로그인되어 있지 않으면 오디오 장치에 액세스할 수 없습니다. 이는 사실 처음부터 했어야 할 일이지만 콘솔 인터페이스 디자이너가 사운드를 고려하지 않았기 때문이 아닙니다.

다른 콘솔로 전환하면 CPU가 콘솔이 아니라 컴퓨터와 연결되어 있기 때문에 프로그램이 계속 실행됩니다. 해당 컴퓨터에 계정이 있는 사람은 누구나 CPU 시간을 사용할 수 있습니다. 메모리, 파일 등 다른 리소스의 경우에도 마찬가지입니다(권한에 따라 다름). 사용자와의 상호 작용만 콘솔 소유권에 의해 제어됩니다. 로그인하지 않은 콘솔로 전환하면 프로그램이 사운드 출력 장치에 액세스할 수 없기 때문에 사운드 재생이 중지됩니다.

나는 Ubuntu가 다음을 통해 액세스 제어를 구현한다고 생각합니다.폴킷, 하지만 정확히 어떻게 작동하는지 모르겠습니다.

답변2

얼마 전까지만 해도 사람들이 사용했던컴퓨터 터미널Unix 메인프레임에 데이터를 입력하거나 표시합니다. 최종 사용자 중 누군가가 원하는 경우 cat /dev/zero동일한 호스트에 연결된 모든 터미널/사용자에게 출력이 브로드캐스트되지 않습니다(이는 다중 사용자 시스템이고 각 사용자가 다른 사용자에게 영향을 주지 않고 작업을 실행할 수 있기 때문입니다).

우리 시대에는가상 터미널(또는가상 콘솔- VC)는 물리학의 소프트웨어 시뮬레이션입니다.컴퓨터 터미널, 비슷한 방식으로 작동합니다. VC1에 로그인하여 실행하면 ls -alR /출력이 모든 VC에 브로드캐스트되지 않으며, 다른 VC로 전환하더라도 ls계속 VC1에서 실행되어 그 출력을 VC1로 보냅니다(마찬가지로 업데이트 명령도 계속해서 VC1로 전송됩니다). 다른 VC로 전환하더라도 시작한 VC에서 실행됩니다.

이제 표준 출력과 약간 다른 것처럼 들립니다. 왜냐하면 (기본적으로) 사용자가 로그인한 VC에 관계없이 출력에 동일한 장치를 사용하지만 출력 사운드 장치에 액세스하려면 사용자가 로그인해야 하기 때문입니다. 그 장치의.

당신은 또한 볼 수 있습니다여기VC에 대한 자세한 내용.

답변3

관련 정보