X 세션 관리자

X session manager

X 시스템에서 X 세션 매니저세션 관리 프로그램이며, 윈도우 매니저를 포함하여 실행 중인 애플리케이션 세트의 현재 상태를 저장하고 복원할 수 있는 프로그램이다.

개요

X 세션 관리자의 관점에서 세션은 주어진 시간의 "데스크톱 상태" 즉, 현재 내용이 있는 창 집합이다.보다 정확히 말하면 세션은 이러한 창을 관리하거나 이와 관련된 클라이언트 집합이며, 필요한 경우 이러한 응용 프로그램이 이러한 창의 상태를 복원할 수 있도록 하는 정보다.

세션 관리자를 사용할 때 가장 인지할 수 있는 효과는 대화형 세션에서 로그아웃한 다음 다시 로그인할 때 동일한 상태에서 정확히 동일한 창을 찾을 수 있는 가능성이다.이를 위해 세션 관리자 프로그램은 로그아웃 시 실행 중인 응용 프로그램 이름을 저장하고 로그인 시 다시 시작한다.더욱이 (창문의 내용을 복원하는 데 필요한) 애플리케이션의 상태도 복원되려면, 애플리케이션은 세션 관리자로부터 요청 시 실행 상태를 저장한 후 다시 시작할 때 다시 로드할 수 있어야 한다.

일반적으로 사용자가 로그인하거나 로그아웃하지 않더라도 세션은 언제든지 저장하거나 로드할 수 있다.사용자가 원하는 대로 여러 개의 세션을 저장하고 그 중 하나를 로드하는 것도 가능하다.세션은 세션을 구성하는 응용프로그램 목록을 제공하여 지정할 수도 있다.결과적으로, 사용자는 현재 실행 중인 응용프로그램의 실행 상태를 저장하거나 세션을 구성하는 응용프로그램을 명시적으로 나열하여 서로 다른 세션 집합을 저장할 수 있다.이러한 방식으로 사용자는 나중에 지정된 세션을 로드하기로 결정할 수 있다.

XSMP 프로토콜

세션이 애플리케이션의 상태를 포함하기 위해서는 세션 관리자가 요청할 때(일반적으로 사용자 로그인 또는 로그아웃 시) 애플리케이션이 현재 상태를 저장하고 로드할 수 있어야 한다.XSMP(X Session Management Protocol)라는 이름의 프로토콜은 애플리케이션과 세션 관리자가 상호 작용하는 방법을 명시한다.XSMP 메시지 형식은 ICE(Interactive Connectivity Setup) 메시지 형식과 동일하다.[1]특히 중요한 것은 윈도우 관리자가 윈도우의 배치와 아이콘의 존재에 대한 책임을 지고 있기 때문에 세션 매니저와 소통할 수 있다는 점이다.상태를 저장할 수 없는 애플리케이션은 세션에 포함될 수 있지만 세션 전체에 걸쳐 상태를 보존하지는 않는다.

프로토콜

XSMP는 클라이언트 간 교환 프로토콜의 하위 프로토콜이다.클라이언트는 세션 관리자에 연결하여 프로토콜을 시작한다.세션 관리자가 네트워크에 위치한 방식: POSIX 시스템에서 환경에는 변수가 포함되어 있음SESSION_MANAGER따라서 클라이언트가 실행될 때 클라이언트의 환경은 적절한 값을 가진 이 변수를 포함해야 한다.

식별자

이 의정서는 다음의 두 가지 사실을 고려한다.

  1. 세션이 올바르게 재시작되려면 세션에서 실행 중인 응용프로그램을 재시작해야 할 뿐만 아니라 이전 상태를 복원하는 방식으로 재시작해야 한다.
  2. 동일한 애플리케이션이 동일하거나 다른 세션에서 두 번 이상 실행될 수 있다.
두 개의 xedit 인스턴스가 서로 다른 파일에서 열린 세션

동일한 애플리케이션의 다른 인스턴스는 동일한 세션 또는 다른 세션에서 동시에 활성화될 수 있으며, 이러한 인스턴스는 실행 상태가 다를 가능성이 높다.예를 들어, 사용자가 파일에서 텍스트 편집기를 시작했을 수 있음/etc/passwd, 그 다음 파일에.letter.txt같은 세션에 있는 다음 파일에 있는todo.txt다른 회기에

세션이 제대로 복원되려면 세션 관리자가 동일한 응용프로그램의 다른 인스턴스를 다른 인스턴스로 인식해야 한다.이러한 이유로 세션 관리자는 각 응용 프로그램의 각 인스턴스에 대해 고유한 식별자를 선택한다.이렇게 하면 세션 관리자는 실행 중인 텍스트 편집기를 구별할 수 있다./etc/passwd텍스트 편집기가 실행 중인 경우todo.txt같은 프로그램의 두 인스턴스일지라도.

식별자는 고유해야 한다.특히 세션 관리자가 관리하는 모든 세션에서 고유해야 한다. 즉, 실행 중인 텍스트 편집기의 식별자/etc/passwd실행 중인 동일한 텍스트 편집기와 다를 뿐 아니라letter.txt그러나 텍스트 편집기가 실행되는 것과도 다르다.todo.txt다른 회기에클라이언트의 식별자는 세션을 종료하고 다시 시작해도 동일하게 유지된다.

프로토콜의 주요 부분

세션 관리 프로토콜의 주요 부분은 다음과 같다.

  1. 세션 관리자는 모든 클라이언트에 대해 고유한 식별자를 선택하십시오.
  2. 세션 관리자는 클라이언트에 상태를 저장하도록 요청
  3. 클라이언트는 상태를 복원하기 위해 상태를 다시 시작해야 하는 방법(예: 프로세스를 시작하는 데 사용할 명령줄)을 지정하십시오.

세션 관리자가 모든 클라이언트에 대해 일련의 속성을 유지하므로(X 윈도우 시스템 용어에서 속성은 단순히 데이터를 위한 컨테이너일 뿐이다) 마지막 지점이 가능하다.이 정보들은 고객이 언제든지 수정할 수 있다.다음 속성 중 하나가 명명됨RestartCommand그리고 클라이언트를 다시 시작해야 하는 방법에 대한 정보를 포함하고 있다.

세션 관리자가 클라이언트에 상태 저장을 요청하면 신청은 다음과 같이 진행된다.

  1. 그것은 그것의 상태를 구별할 수 있는 방식으로 저장한다; 예를 들어, 그것의 이름에 그것의 식별자가 포함된 파일에 상태를 저장함으로써 얻을 수 있다.
  2. 그것은 어떻게 다시 시작해야 하는지에 대한 사양을 다음에 저장한다.RestartCommand속성. 이 속성은 다음과 같은 이유로 클라이언트 식별자를 포함해야 한다.
    1. 응용 프로그램이 다시 시작할 때 식별자를 유지해야 함
    2. 식별자는 상태를 복원하는 데 필요함(예를 들어, 상태가 저장된 파일을 찾는 데 필요함)

세션 관리자가 옆에 다른 속성을 유지 관리RestartCommand예를 들어 세션이 파괴된 경우 속성에서 응용 프로그램을 실행하는 방법을 지정하십시오.

로컬 및 글로벌 상태

클라이언트에 상태 저장을 요청할 때 윈도우 관리자는 로컬 또는 글로벌 상태(또는 둘 다)를 저장해야 하는지 여부를 지정할 수 있다.차이점은 저장 결과를 다른 응용 프로그램에 표시해야 하는지 여부다.

텍스트 편집기의 경우, 글로벌 상태를 저장한다는 것은 파일을 정상적으로 저장하는 것을 의미하므로 다른 응용 프로그램이 파일의 새 버전을 사용할 수 있다.로컬 상태를 저장한다는 것은 파일의 로컬 사본을 저장해야 다른 응용 프로그램이 원본에서 파일을 볼 수 있다는 것을 의미한다.

다음은 가상 텍스트 편집기와 세션 관리자 상호 작용의 주요 단계들이다.xyz이 응용 프로그램이 세션에서 처음 시작되면 사용자가 로그아웃한 다음 다시 로그인하십시오.

  1. 응용 프로그램은 클라이언트 간 교환 프로토콜을 통해 세션 관리자에 연결됨
  2. 응용 프로그램은 세션 관리자에게 이번이 처음 시작되므로 이전 식별자가 없음을 알려준다(따라서 이전 상태는 없음).
  3. 세션 관리자는 클라이언트에게 고유 식별자를 전송하여 응답한다.4324;
  4. 세션 관리자는 즉시 클라이언트에 로컬 상태를 저장하도록 요청(클라이언트가 처음 시작되었다고 해서만)
  5. 클라이언트가 명령줄을 저장함xyz -sid 4324재산으로서RestartCommand세션 관리자(이 또한 시스템에 종속됨: POSIX 시스템에서 이 속성은 실제로 argv 어레이를 포함함)
  6. 클라이언트는 상태를 로컬로 저장한다. 예를 들어, 편집된 파일의 이름과 다른 모든 정보(예: 현재 줄)를 로컬 파일에 저장할 수 있다..temp-4324
  7. 사용자가 로그아웃하면 세션 관리자는 모든 클라이언트에 상태를 저장해야 함을 알리는 메시지를 발송함
  8. 고객.4324다시 준수하다
  9. 모든 클라이언트가 세션 관리자에게 상태가 저장됨을 통지하면 세션 관리자는 세션을 종료하십시오.

클라이언트가 상태를 저장하라는 지시를 받으면 사용자와 제한된 상호작용을 할 가능성이 있거나 하지 않을 수 있다(예를 들어 편집된 파일을 저장할지 사용자에게 묻는 것).어쨌든, 상태는 저장된다. 그것은 세션 관리자에게 적절한 메시지를 보내면서 알려준다.

세션이 다시 시작되면 다음과 같은 작업이 수행된다.

  1. 세션 관리자가 클라이언트 재시작4324속성에 저장된 항목을 실행함으로써RestartCommand고객 관련4324
  2. 따라서 신청은 다음과 같이 시작된다.xyz -sid 4324; 이러한 방식으로 애플리케이션은 식별자를 알 수 있다.
  3. 응용 프로그램은 파일에서 상태 정보를 검색한다..temp-4324
  4. 응용프로그램이 식별자를 지정하는 세션 관리자에 연결4324세션 관리자가 이 클라이언트가 새 클라이언트가 아니라 이전 클라이언트를 다시 시작하는 것임을 알 수 있도록

클라이언트 관리 세션

XSMP 프로토콜에 따르면 세션 매니저는 다른 애플리케이션의 상태를 실행하고 제어하는 임의의 프로그램(서버)이다.결과적으로, 클라이언트 자체는 다른 클라이언트의 세션 관리자가 될 수 있다.예를 들어, 메일 클라이언트는 이메일 작성을 위해 텍스트 편집기를 시작할 수 있으며, 편집자와 관련하여 세션 관리자 역할을 할 수 있다.이렇게 해서 메일 클라이언트를 닫았다가 다시 시작하면 텍스트 편집기의 상태를 복원할 수 있다.[citation needed]

구현

X Window 시스템에는 다음과 같은 기본 세션 관리자가 포함되어 있음xsm다른 세션 관리자는 특정 데스크톱 환경을 위해 개발되었다.

KDE

ksmserverKDE Plasma 5 Desktop 환경의 기본 세션 관리자.[2][3]

Xfce

xfce4-sessionXfce 기반 DEs의 기본 X Session Manager 프로그램은 시작 시 다양한 세션을 생성하고 선택할 수 있다.[4][5]

그노메

gnome-sessionGnome DE의 기본 세션 관리자. Gnome은 v1.x. 2013 GNOME이 버전 2.24에서 GNOME 세션 관리자 XSMP를 D-Bus 인터페이스로 대체하려는 의도를 가진 이후 XSMP를 지원해왔다.[6]결국 두 인터페이스를 결합하고 레거시 애플리케이션을 위한 어댑터(클라이언트)를 제공하기로 결정했다.[7]그러나 당시에는 기능이 완전하지 않았고 GNOME이 아닌 애플리케이션에서도 사용되지 않았다.[8]2021년 현재 코드베이스에는 여전히 X 세션 관리자 클라이언트가 포함되어 있다.

참고 항목

참조

  1. ^ "X Session Management Protocol". www.x.org. Retrieved 2020-12-02.
  2. ^ "KDE Desktop User Guide - KSMServer". www.linuxtopia.org. Retrieved 2021-10-05.
  3. ^ "ksmserver · master · Plasma / Plasma Workspace". GitLab. Retrieved 2021-10-05.
  4. ^ "xfce:xfce4-session:start [Xfce Docs]". docs.xfce.org. Retrieved 2021-10-05.
  5. ^ "xfce:xfce4-session:preferences [Xfce Docs]". docs.xfce.org. Retrieved 2021-10-05.
  6. ^ "Projects/SessionManagement/GnomeSession - GNOME Wiki!". wiki.gnome.org.
  7. ^ "Projects/SessionManagement/NewGnomeSession - GNOME Wiki!". wiki.gnome.org. Retrieved 2021-10-05.
  8. ^ "Chapter 6 Session Management (GNOME 2.0 Desktop for the Solaris Operating Environment System Administration Guide)". docs.oracle.com. Retrieved 2021-10-05.

외부 링크