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


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 시간을 사용할 수 있습니다. 메모리 및 파일과 같은 다른 리소스 (권한에 따라 다름)도 마찬가지입니다. 콘솔 소유권에 의해 통제되는 것은 사용자와의 상호 작용입니다. 프로그램이 사운드 출력 장치에 액세스 할 수있는 권한을 상실하기 때문에 로그인하지 않은 콘솔로 전환하면 사운드 재생이 중지됩니다.

우분투는 Polkit을 통해 액세스 제어를 구현한다고 생각 하지만 이것이 어떻게 작동하는지 정확히 모르겠습니다.


당신은 이것을 시도 할 수 있습니다. 음악을 재생하고 VT를 전환하십시오. 잠시 후 F7 VT로 다시 전환하십시오. 노래는 정확히 일시 정지 된 지점에서 시작됩니다. 시스템이 스레드를 휴면 상태가 아닌 경우 어떻게 가능합니까? 사운드 I / O에 액세스하지 않으면 플레이어를 일시 중지 할 수 없습니다. 그리고 프로그램을 설치하는 동안 시도했습니다. 놀랍게도, VT를 전환했을 때에도 프로그램이 설치되었습니다.
DScript

1
@DScript 사운드 시스템을 기다리는 중이기 때문에 플레이어 스레드가 차단되었습니다. 사운드 시스템을 기다리지 않는 스레드가 계속 실행됩니다. 사운드 I / O에 액세스 하지 않으면 플레이어가 차단됩니다. 요청을 거부하는 것이 아니라 차단하는 것입니다.
Gilles 'SO- 악마 그만'

1

옛날 사람들은 컴퓨터 터미널 을 사용 하여 유닉스 메인 프레임에 데이터를 입력하거나 유닉스 메인 프레임에서 데이터를 표시했습니다. 이 터미널 사용자 중 하나가 원하는 경우, 예를 들어, cat /dev/zero출력이 동일한 메인 프레임에 연결된 모든 터미널 / 사용자에게 브로드 캐스트되지 않았습니다 (다중 사용자 시스템이기 때문에 각 사용자가 다른 사용자에게 영향을 미치지 않고 작업을 실행할 수 있음). .

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

이제는 기본적으로 출력이 VC에 관계없이 동일한 장치를 사용하여 출력에 사용하기 때문에 표준 출력과 약간 다릅니다.하지만 사용자는 로그인해야합니다. 사운드 장치.

또한 모양을 가질 수 있습니다 여기에 VC에 대한 좀 더 자세한 내용은.


당신은 이것을 시도 할 수 있습니다. 음악을 재생하고 VT를 전환하십시오. 잠시 후 F7 VT로 다시 전환하십시오. 노래는 정확히 일시 정지 된 지점에서 시작됩니다. 시스템이 스레드를 휴면 상태가 아닌 경우 어떻게 가능합니까? 사운드 I / O에 액세스하지 않으면 플레이어를 일시 중지 할 수 없습니다. 그리고 프로그램을 설치하는 동안 시도했습니다. 놀랍게도, VT를 전환했을 때에도 프로그램이 설치되었습니다.
DScript

@DScript 사용하는 플레이어가 다른 VC로 전환하는 것을 감지하고 일시 중지하도록 설계 되었기 때문입니다. 기본적으로 시스템은 다른 VC로 전환 할 때 프로세스를 중지하거나 프로세스를 일시 중지하지 않습니다.
petry

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.