답변:
ALSA는 커널 레벨 사운드 믹서이며 사운드 카드를 직접 관리합니다. ALSA 자체는 한 번에 하나의 응용 프로그램 만 처리 할 수 있습니다. 물론 이 문제를 해결하기 위해 작성된 ' dmix '가 있습니다. (ALSA 모듈입니다.)
PulseAudio는 사용자가 앱을 실행하는 것처럼 소프트웨어 믹서입니다. 그것이 실행될 때, dmix없이 Alsa를 사용하고 모든 종류의 믹싱, 장치, 네트워크 장치, 모든 것을 자체적으로 관리합니다.
2014 년에는 여전히 ALSA 만 실행할 수 있습니다. 그러나 응용 프로그램을 직접 컴파일하고 어느 곳에서나 ALSA 지원을 활성화하거나 Gentoo와 같은 소스 기반 배포판을 사용하지 않으면 혼합 문제가 발생할 수 있습니다. 배포 된 사전 컴파일 된 응용 프로그램은 일반적으로 순수 ALSA가 아닌 Pulseaudio를 지원하도록 빌드됩니다. 예를 들어 우분투는 PulseAudio를 선호합니다. 기본적으로 PulseAudio가 제공되므로 모든 응용 프로그램은 PulseAudio 만 사용하도록 컴파일됩니다.
PulseAudio는 장점이 있습니다. 사람들은 네트워크를 통한 오디오 작업에 적합하며 순수한 ALSA에서 발생하는 다중 채널 오디오 스트림의 일부 문제를 해결한다고 말합니다. PA 용 앱을 개발하는 것이 더 쉬울 것입니다. 최종 사용자 측에서는 새로운 장치를 쉽게 선택하고 앱별로 볼륨을 제어하는 등이 쉽습니다.
그러나 기본 구성에서는 믹스에 중요하지 않은 대기 시간을 추가합니다. 이는 일부 게임 및 소프트웨어와 같이 낮은 대기 시간이 필요한 특정 유형의 작업에 큰 단점입니다.
OSS는이 두 가지의 대안이지만 GPL에 따라 라이센스가 없으므로 배포판에 의해 채택되지 않을 것입니다.
그림 :
Ubuntu :
Kernel : ALSA-> Userland : PulseAudio-> app1, app2, app3 과 같은 일반적인 PulseAudio 기반 사운드 시스템
일반적인 Linux 시스템에서 PulseAudio는 다른 모든 앱의 오디오를 믹스하여 체인에 ALSA에 공급합니다.
ALSA :
커널 : ALSA-> dmix-> Userland : app1, app2, app3
순수한 ALSA 만 있으면 여러 앱을 혼합하려면 dmix가 필요합니다. 이 기능이 없으면 ALSA는 한 번에 하나의 앱에서만 오디오 스트림을 재생할 수 있습니다.
OSS :
Kernel : OSS-> Userland : app1, app2, app3
OSS를 사용하면 userland 앱이 커널에서 OSS와 직접 통신하여 스트림 자체를 혼합합니다.
요컨대, 일반적인 시스템에서 ALSA는 사운드 카드와 직접 대화하고 Pulseaudio는 앱과 프로그램과 대화하고이를 ALSA에 공급합니다.
On MAC, Windows, Haiku, GUI runs from the kernel (okay its inside the kernel). Well. It would make sense doesnt it?
실제로 그렇지 않습니다. "시스템을 무너 뜨린 NT 4 비디오 드라이버"의 나쁜 시절을 기억하십니까? 그래, 그것이 커널 공간에서 크 래피 드라이버를 실행시키는 원인입니다. 왜 Microsoft가 서명 된 드라이버를 Windows로 가져 오는 것에 대해 갑자기 갑자기 모든 생각을했다고 생각하십니까? 빙고! crummy 드라이버가 시스템 충돌을 일으켰 기 때문입니다. 그들에게 서명을하는 것은 그들에게 검사를 받는 것을 의미 했고, QA의 중풍은 먼 길 을 갔다 ...