예

나는 항상 Linux에서 루트가 아닌 모든 사용자가 동일한 대우를 받고 항상 병렬로 실행된다고 생각했습니다. 커널은 현재 누구의 X 세션이 활성화되어 있는지 신경 쓰지 않습니다. 그러나 이제 Linux 커널, Ubuntu 또는 KDE에는 프로그램이 활성 X 세션에 있지 않은 경우 프로그램을 일시 중지할 수 있는 몇 가지 새로운 "기능"이 있는 것 같습니다.

로그인

  1. 나는 Alice로 로그인했고 Bob이라는 사용자로 전환하여 이 메뉴를 사용하여 새로운 KDE 세션을 시작하기로 결정했습니다.

여기에 이미지 설명을 입력하세요.

  1. CtrlBob의 스플래시 화면이 나타나고 즉시 ++를 사용하여 AltAlice로 다시 전환합니다 F7.
  2. 나는 몇 가지 작업을 수행하고 몇 분 후에 Ctrl+를 사용하여 AltBob의 새 세션으로 다시 전환했습니다 F8.
  3. 스플래시 화면이 계속되지 않고 세션이 로드되지 않는 것을 발견했습니다. 이제 계속 로드되고 약 10초 안에 완료됩니다.

로그아웃

위와 거의 동일합니다. 로그아웃을 시작하고 즉시 다른 계정으로 전환했는데, 몇 분 후에 다시 돌아왔을 때 로그아웃이 아직 완료되지 않았습니다.

음악

나는 Alice로서 mpv에서 음악을 재생하기 시작했습니다. Bob의 계정으로 전환합니다. 음악즐거운 시간 보내세요시작되지만 약 40초 후에 중지됩니다. 잠시 동안 Alice로 다시 전환했는데 음악이 계속 재생되었고, Bob으로 전환했을 때 약 40초가 더 걸렸습니다. YouTube는 약 15초 후에 더 일찍 중지되는 것 같습니다.

질문

이 모든 것은 현재 일어나고 있는 일이 활성 X 세션에 있지 않은 프로세스를 중단시키는 것이라고 믿게 만듭니다.

  1. 이에 대한 책임은 누구에게 있습니까?
  2. 어떻게 끌 수 있나요?
  3. 일시 중지하면 안 되는 프로그램을 화이트리스트에 추가할 수 있나요?

저는 Ubuntu 16.04 LTS(Xenial Xerus)를 기반으로 KDE Neon 5 및 KDE 5.36.0을 사용하고 있습니다.

답변1

이에 대한 책임은 누구에게 있습니까?

리눅스가 아닙니다. 우분투가 아닙니다. X.Org가 아닙니다. 계획이 보류되지 않았습니다.

프로그램 자체가 책임이 있습니다. 고대부터 프로그램은 창 시스템이 창을 다시 그리도록 요청하는 시점을 알기 때문에 현재 무언가를 표시하고 있는지 여부를 알 수 있었습니다. X 세션이 활성화되지 않은 경우 다시 그릴 필요가 없습니다.

시간이 지남에 따라 프로그램(또는 KDE 라이브러리와 같은 GUI 라이브러리)은 CPU 주기(배터리 구동 장치에서는 배터리 수명을 의미함)를 절약하기 위해 출력이 필요하지 않은 시기를 감지하는 데 더욱 똑똑해집니다.

복잡한 렌더링을 수행하기 위해 그래픽 카드를 프로세서로 사용하기 때문에 프로그램을 계속할 수 없는 경우가 있습니다. 그래픽 카드가 다른 세션을 표시하는 중이면 프로그램은 해당 세션을 사용할 수 없습니다. 다른 프로그램의 창이 활성화되어 있으면 해당 프로그램이 실행되지 않기 때문에 이를 알 수 있습니다.

어떻게 끌 수 있나요?
일시 중지하면 안 되는 프로그램을 화이트리스트에 추가할 수 있나요?

불행히도 나는 모른다.

관련 정보