![리눅스 디스플레이](https://linux55.com/image/176429/%EB%A6%AC%EB%88%85%EC%8A%A4%20%EB%94%94%EC%8A%A4%ED%94%8C%EB%A0%88%EC%9D%B4.png)
Linux 디스플레이 시스템은 다양한 기술을 사용합니다., 프로토콜, 확장, 애플리케이션, 서버(데몬), 드라이버 및 개념창 시스템 구현예:
Xorg, Wayland, X11, OpenGL, RandR, XrandR, 화면 해상도, DPI, 디스플레이 서버 등
전체 그림이 없으면 방대한 양의 정보가 압도적이거나 혼란스러울 수 있습니다. Linux는 시스템의 각 측면에 대해 여러 문서를 표시하지만전 세계적으로 정확히 어떻게 작동합니까?
답변1
리눅스 디스플레이
다양한 기술, 프로토콜, 확장, 애플리케이션, 서버(데몬), 드라이버 및 개념을 사용하여 Xorg, Wayland, X11, OpenGL, RandR, XrandR, 화면 해상도, DPI, 디스플레이 서버 등 완전히 이해하기 어려울 수 있지만 각 측면은 특정 목적을 수행하며 동시에 모두 함께 작동하지는 않습니다.
X-프로토콜
X 윈도우 시스템,X11(X 버전 11)은 Unix 계열 운영 체제에서 일반적으로 사용되는 비트맵 표시용 창 시스템입니다. X는 디스플레이 장치에서 창을 그리고 이동하며 마우스 및 키보드와 상호 작용하는 GUI 환경을 위한 기본 프레임워크를 제공합니다. X는 사용자 인터페이스를 요구하지 않으며 이는 별도의 프로그램에 의해 처리됩니다. 결과적으로 X 기반 환경의 시각적 스타일은 매우 다양하며, 다양한 프로그램은 완전히 다른 인터페이스를 제공할 수 있습니다. X는 1984년 MIT(매사추세츠 공과대학)의 Athena 프로젝트에서 시작되었습니다. X 프로토콜은 1987년 9월부터 버전 11(따라서 "X11"이라는 이름)이 되었습니다. X.Org 재단은 X 프로젝트를 이끌고 있으며 현재 참조 구현인 X.Org Server는 MIT 라이선스 및 유사한 라이선스에 따라 무료 오픈 소스 소프트웨어로 제공됩니다.
X 구현
대부분의 Linux 배포판에서는X.Org 서버이는 X.Org Foundation에서 관리하는 X Window System(X11) 디스플레이 서버의 무료 오픈 소스 구현입니다. Xorg/X는 스케일링이나 렌더링과 같은 제공된 많은 기능을 기본적으로 지원하지 않으므로도래 송곳사용확장하다예를 들어X보정,랜드 R(RandR은 다음에서 관리합니다.xrandr
예를 들어 팬, 해상도 또는 확대/축소를 설정할 수 있습니다.GLX(OpenGL 확장),그것을 만들어또는인조이로 인해 창 계층 구조의 전체 하위 트리가 오프스크린 버퍼로 렌더링됩니다. 그런 다음 애플리케이션은 해당 버퍼의 내용을 가져오고 오프스크린 버퍼를 자동으로 상위 창에 병합할 수 있습니다.또는라는 외부 프로그램에 의해 병합되었습니다.구성 관리자다른 사람들처럼 자신만의 합성을 만들어 보세요.창 관리자Compiz, Enlightenment, KWin, Marco, Metacity, Muffin, Mutter 및 Xfwm과 같은 작업을 수행합니다. 다른 사람들을 위해"비합성" 창 관리자에서는 독립형 복합 관리자를 사용할 수 있습니다. 예를 들면 다음과 같습니다.피캉,Xcompmgr또는뱀장어.Xorg 지원 확장나열할 수 있는 것:xdpyinfo -display :0 -queryExtensions | awk '/^number of extensions:/,/^default screen number/'
.
반면에웨이랜드Xorg/X11에 대한 더 간단한 대안으로 개발 및 유지 관리가 더 용이하도록 의도되었지만 2020년 현재 Gnome 이외의 Wayland에 대한 데스크톱 지원은 아직 완전히 준비되지 않았습니다(예:KDE Kwin 및 Wayland 지원) 배포판 측면에서 Fedora는 다음을 사용합니다.기본적으로 Wayland. Wayland와 Xorg를 참고하세요.동시에 작업 가능, 이는 사용된 구성에 따라 달라질 수 있습니다.X 웨이랜드Wayland 프로토콜에서 실행되는 X 서버를 구현하기 위한 X.Org 서버 코드 베이스에 대한 일련의 패치입니다. 이 패치는 Wayland로 전환하는 동안 X11 응용 프로그램과의 호환성을 위해 Wayland 개발자가 개발 및 유지 관리했으며 2014년 X.Org Server 버전 1.16에서 주류화되었습니다. 사용자가 Weston 내에서 X 응용 프로그램을 실행하면 XWayland를 호출하여 요청을 처리합니다.
전체 범위
ㅏ서버 표시또는 윈도우 서버는 클라이언트와 나머지 운영 체제, 하드웨어 및 서로 간의 입력과 출력을 조정하는 것이 주요 작업인 프로그램(예: Xorg 또는 Wayland)입니다. 디스플레이 서버는 네트워크 투명 또는 네트워크 전용 통신 프로토콜인 디스플레이 서버 프로토콜을 통해 클라이언트와 통신합니다. 예를 들어 X11 및 Wayland는 디스플레이 서버 통신 프로토콜입니다.
그림에서와 같이창 관리자데스크탑 환경의 또 다른 중요한 요소는 그래픽 사용자 인터페이스의 윈도우 시스템에서 창의 배치와 모양을 제어하는 데 사용되는 시스템 소프트웨어입니다. 대부분의 창 관리자는 데스크탑 환경을 제공하도록 설계되었습니다. 이는 기본 그래픽 시스템과 함께 작동하여 그래픽 하드웨어, 포인팅 장치 및 키보드에 필요한 기능 지원을 제공하며 일반적으로 위젯 툴킷을 사용하여 작성 및 생성됩니다. KDE는카이웬창 관리자(2020년 현재 Wayland에 대한 지원이 제한됨)로서 Gnome 2도 유사하게 다음을 사용합니다.위안청Gnome 3과 함께 사용됨바보창 관리자로서.
창 관리자의 또 다른 중요한 측면은신디사이저또는합성 창 관리자는 응용 프로그램의 각 창에 오프스크린 버퍼를 제공하는 창 관리자입니다. 창 관리자는 창 버퍼를 화면을 나타내는 이미지로 합성하고 그 결과를 디스플레이 메모리에 씁니다. 컴포지션 창 관리자는 버퍼 창에 대한 추가 처리를 수행하고 혼합, 페이딩, 크기 조정, 회전, 복사, 구부리기 및 비틀기, 섞기, 흐리게 하기, 응용 프로그램 리디렉션 및 창을 여러 개로 변환하는 등의 2D 및 3D 애니메이션 효과를 적용할 수 있는 디스플레이 중 하나입니다. 그리고 가상 데스크탑. 컴퓨터 그래픽 기술을 사용하면 그림자, 실시간 미리보기, 복잡한 애니메이션과 같은 시각 효과를 실시간으로 렌더링할 수 있습니다. 화면이 나오니까이중 버퍼링, 업데이트 시 깜박이지 않습니다. 가장 일반적으로 사용되는 합성 창 관리자에는 Linux, BSD, Hurd 및 OpenSolaris-Compiz, KWin, Xfwm, Enlightenment 및 Mutter가 포함됩니다. 각각은 KDE와 같은 자체 구현을 가지고 있습니다.KWin의 신디사이저애니메이션 속도, 찢김 방지(vsync), 창 썸네일, 크기 조정 방법과 같은 많은 기능/설정이 있으며 사용할 수 있습니다.OpenGLv2/OpenGLv3 또는엑스렌더링로서렌더링 백엔드Xorg와 함께. (XR렌더링/렌더링혼동하지 마세요X 랜드 R/랜드 R).
OpenGL(개방형 그래픽 라이브러리)2D 및 3D 벡터 그래픽을 렌더링하기 위한 교차 언어, 교차 플랫폼 API(응용 프로그래밍 인터페이스)입니다. 이 API는 일반적으로 하드웨어 가속 렌더링을 위해 GPU(그래픽 처리 장치)와 상호 작용하는 데 사용됩니다. OpenGL은 Xorg, Wayland 또는 이를 구현하는 모든 응용 프로그램과 함께 사용할 수 있는 렌더링 라이브러리입니다. OpenGL 설치가 검사를 통과했습니다 glxinfo | grep OpenGL
.
감시 장치해결하다컴퓨터 모니터나 디스플레이 장치의 디스플레이 모드 또는 디스플레이 모드는 표시할 수 있는 각 차원의 다양한 픽셀 수를 나타냅니다. 일반적으로 너비 × 높이로 표시되며 단위는 픽셀입니다. 예를 들어 1024 × 768은 너비가 1024픽셀이고 높이가 768픽셀임을 의미합니다. xrandr
사용될 수 있다다음에 추가또는렌더링/시뮬레이션새로운 디스플레이 해상도.
이것딥 PI인치당 도트 수를 나타냅니다.공간 인쇄/표시 측정항목, 특히 1인치(2.54cm) 범위 내에서 정렬될 수 있는 개별 점의 수입니다. 컴퓨터 화면에는 점이 없지만 픽셀이 있고 밀접하게 관련된 개념은 인치당 픽셀 수(PPI)이므로 DPI는 PPI 개념을 통해 달성됩니다. 기본 96
DPI 측정값은 수직 및 수평으로 96x96입니다. 또한X DPI(인치당 도트 수) 설정은 텍스트 크기 조정에만 적용됩니까?QA는 매우 유익합니다.
노트
일부 KDE GUI 도구: systemsettings5
> 디스플레이 kcmshell5 xserver
및kinfocenter
.
인용하다
답변2
이 질문은 매우 광범위하며 이 답변에서 다루는 것보다 주제에 대해 훨씬 더 많은 내용을 작성할 수 있습니다. 나는 Linux 그래픽의 진화에 대한 역사적인 관점을 제공하려고 노력해 왔습니다. Linux의 그래픽, 윈도우 시스템 및 그래픽 사용자 인터페이스(GUI)는 1990년대 초 X Window System(X11)이 Linux로 포팅된 이후 많은 변화를 겪었습니다.
X 윈도우 시스템
X 윈도우 시스템은 1980년대 MIT에서 개발되었습니다. X11이라는 이름은 X 프로토콜의 프로토콜 버전 11을 나타내지만 X10은 1987년 버전 11로 대체되기 전에 MIT 외부에서도 사용되었습니다.
X 윈도우 시스템은 1980년대 최첨단 그래픽 시스템과 함께 사용하도록 설계되었습니다. 일반적인 워크스테이션에는 디스플레이 모니터에 프레임 버퍼의 내용을 표시하는 간단한 CRT 컨트롤러에 연결된 단일 프레임 버퍼가 있습니다. PC와 워크스테이션 시대 이전의 컴퓨팅은 컴퓨터실에 있는 중앙 컴퓨터에 연결된 직렬 회선("멍청한") 터미널을 통해 수행되었습니다. 이러한 역사적 배경은 X11의 설계에 영향을 미쳤습니다. 그래픽 응용 프로그램은 원격 컴퓨터에서 실행될 수 있으며 사용자는 그래픽 지원 터미널을 사용하여 프로그램과 상호 작용할 수 있습니다. "터미널"은 워크스테이션이거나 전용 X 터미널일 수 있습니다.
X11은 서버-클라이언트 시스템으로 설계되었습니다. X 서버는 그래픽 하드웨어와 직접 통신하는 유일한 부분입니다. X 클라이언트는 X 프로토콜(로컬 Unix 도메인 소켓 또는 TCP/IP 연결 사용)을 사용하여 서버와 통신하는 응용 프로그램입니다. 클라이언트는 X 프로토콜을 사용하여 서버에 요청을 보내고 서버로부터 이벤트 메시지를 받습니다.
요청에는 다음 메시지가 포함됩니다.
- 창 생성
- 창 매핑/매핑 해제: 창 표시/숨기기
- 창에 그리기: 픽셀, 선, 호, 타원, 픽셀 맵 등을 그립니다.
- 지정된 글꼴, 크기 및 스타일을 사용하여 텍스트 표시
- 창을 이동 및 크기 조정하고, 창의 쌓인 순서를 변경하는 등의 작업을 수행할 수 있습니다.
클라이언트는 메시지를 받습니다(전체 목록이 아님).
- 요청에 응답
- 키 누름 및 마우스 클릭 이벤트
- 공개 이벤트(다시 그려야 하는 창 영역)
- 포커스 이득/손실 이벤트
사용자가 창 이동, 크기 조정, 닫기, 올리기, 내리기 등 화면에서 창을 처리할 수 있도록 창 관리자라는 특정 응용 프로그램이 제공됩니다. 창 관리자는 테두리, 제목 표시줄, 전역 메뉴와 같은 창 장식을 표시할 수도 있습니다.
X11 서버는 창, 글꼴, 픽스맵, 컬러맵, 그래픽 컨텍스트(예: 전경/배경 색상, 선 너비 등)와 같은 다양한 리소스를 처리(또는 적어도 전통적으로 처리)한다는 점에서 상당히 "고수준"이라고 말할 수 있습니다. .). 또한 서버는 창 상위-하위 관계 및 창 스택 순서와 같은 사항도 담당합니다.
X 프로토콜은 확장 가능하도록 설계되었습니다. X 서버는 새로운 트릭을 수행하도록 학습할 수 있으며 서버가 이러한 트릭을 수행하도록 프로토콜에 새로운 opcode를 추가할 수 있습니다. 예를 들어 XRender 확장에는 투명도를 처리하는 방법("알파 블렌딩")이 도입되었습니다. 이 확장은 주로 앤티앨리어싱된 글꼴을 지원하기 위해 도입되었지만 창의 그림자와 같은 데스크탑 효과에도 사용됩니다. RandR("크기 조정 및 회전") 확장을 사용하면 크기 조정, 루트 창 회전 및 화면에 반영이 가능합니다. 이를 통해 반전 프로젝터를 사용하여 화면을 투사하거나 기울어진 모니터를 사용할 수 있습니다.
이것GLXExtension(OpenGL Extension to the X Window System)은 X 서버에서 제공하는 Windows에서 OpenGL을 사용할 수 있게 해줍니다. OpenGL에 대한 호출은 X 프로토콜 요청에 포함됩니다.
X11 개발 중 어느 시점에서 글꼴 처리가 클라이언트 측에서 처리되도록 이동되었습니다. 이러한 변화의 이유는 다음과 같습니다.X 윈도우 시스템의 새로운 발전.
직접 렌더링
2000년대 초반 디스플레이 하드웨어는 1980년대 X 개발이 시작되었을 때 존재했던 단순한 흑백 비트맵 디스플레이에서 크게 발전했습니다. 로컬 소켓을 사용하더라도 IPC(프로세스 간 통신) 모델의 X11 상대적 오버헤드가 너무 커집니다. 해결책은 X 서버가 하드웨어와 직접 통신하는 유일한 부분이라는 원칙을 버리고 클라이언트가 그래픽 카드와 직접 통신하도록 하는 것입니다. 이것직접 렌더링 인프라(DRI)가 탄생했습니다.
DRI를 사용하면 X 클라이언트 응용 프로그램이 X 서버를 우회하고 그래픽 어댑터에서 직접 렌더링할 수 있습니다. 기존 X 서버 외에도 여러 직접 렌더링 응용 프로그램을 동시에 활성화할 수 있으므로 하드웨어에 대한 액세스를 조정하기 위해 직접 렌더링 관리자라는 커널 구성 요소가 도입되었습니다. DRI 아키텍처에는 원본 DRI(구식), DRI2 및 DRI3의 세 가지 버전이 있습니다.
합성 창 관리자
Linux 그래픽 분야에 진출하기 위한 다음 혁신은 합성 창 관리자입니다. 전통적으로 각 X 클라이언트 응용 프로그램은 필요에 따라 창(창의 일부 또는 전체)을 다시 그리는 일을 담당했습니다. 창이 화면에 매핑되어 다시 그려야 하거나 창이 더 이상 다른 창에 의해 가려지지 않을 때 X 서버는 Expose 이벤트를 응용 프로그램에 보냅니다. 겹쳐진 창을 제거하면 그 아래의 창이 노출됩니다. 영역을 다시 그리지 못하면 이전 콘텐츠가 계속 표시됩니다.https://en.wikipedia.org/wiki/Visual_artifact
ㅏ합성 창 관리자이것을 바꾸세요. 애플리케이션은 자체 오프스크린 버퍼에 렌더링되며, 각 버퍼는 별도의 화면이며 이를 소유한 애플리케이션에 독점적으로 액세스할 수 있습니다. 합성 창 관리자의 임무는 이러한 버퍼를 실제 화면의 창에 표시하고, 다른 창에 의해 가려지거나 부분적으로 화면에서 벗어난 창을 잘라내는 것입니다. 창 관리자는 창의 "그룹"을 표시합니다.
컴포지션 관리자는 창 크기 조정, 비틀기, 페이딩, 회전 및 흐리게 표시와 같은 애니메이션 효과를 표시할 수도 있습니다. 예를 들어, 창을 움직이면 창이 흔들리거나 회전하는 큐브 옆에 가상 데스크탑이 나타날 수 있습니다.
커널 모드 설정
또한 X 서버는 전통적으로 해상도, 새로 고침 빈도 등 그래픽 어댑터의 모드 설정을 담당합니다. 이후 모드 설정은 KMS(커널 모드 설정)라는 Linux 커널 구성 요소로 이동되었습니다. 이는 Linux 간 전환 시 많은 문제를 해결합니다.가상 콘솔.
evdev
X 서버는 입력 장치에 대해서도 알고 있습니다. 예를 들어 마우스 유형은 X 구성에서 지정되어야 합니다. X 서버의 도입으로 이 작업이 완화되었습니다.evdev범용 입력 이벤트 인터페이스를 제공하는 Linux 커널의 하위 시스템입니다.
웨이랜드
이러한 모든 개발로 인해 X 서버에서 수행되는 많은 작업이 X 서버 외부로 이동되었습니다. 직접 렌더링을 사용하면 클라이언트는 더 이상 X 프로토콜을 사용하지 않습니다. KMS 덕분에 X 서버는 그래픽 어댑터의 저수준 프로그래밍을 처리할 필요가 없습니다. evdev를 사용하면 X 서버의 입력 장치 처리가 단순화됩니다. 창을 재배열하고 왜곡하기 위해 합성 창 관리자를 사용할 때 X 서버는 더 이상 화면에서 무슨 일이 일어나고 있는지 알 수 없습니다. "창 관리자는 새로운 X 서버입니다."
Wayland는 X 서버 프로세스가 할 일이 거의 없으며 중간자(X 서버)를 제거함으로써 보다 단순한 데스크탑 그래픽 시스템을 달성할 수 있다는 것을 깨달았기 때문에 탄생했습니다. 이전 버전과의 호환성은 다음을 통해 제공됩니다.엑스웰랜드, Wayland 표면을 사용하여 최상위 X 창을 표시하는 수정된 Xorg 서버입니다.
엄밀히 말하면 Wayland는 클라이언트가 디스플레이 서버와 통신하는 방법을 정의하는 프로토콜일 뿐입니다. Wayland 프로토콜은 X 프로토콜과 완전히 다릅니다. Wayland 프로토콜은 그래픽이나 텍스트 그리기에 대한 메시지를 정의하지 않으며 글꼴을 처리하지도 않습니다.
Wayland 아키텍처에서는 창 관리자와 디스플레이 서버가 단일 소프트웨어 구성 요소인 복합 창 관리자로 결합됩니다. 고객은 Wayland 프로토콜을 사용하여 소프트웨어 라이브러리를 통해 표면을 그릴 것을 요청할 수 있습니다. "ㅏ"표면은 위치, 크기 및 픽셀 콘텐츠로 정의되는 화면의 직사각형 영역을 나타내는 객체입니다.".
클라이언트는 오프스크린 버퍼로 렌더링한 후 표면에 연결되어 화면에 출력을 생성합니다. 클라이언트는 OpenGL, OpenGL ES 등 다양한 렌더링 API를 사용할 수 있습니다. ("드로잉 API란 무엇인가요? 당신이 원하는 무엇이든")는 이중 버퍼링을 사용합니다. 클라이언트는 두 번째 버퍼를 사용하여 이미지를 업데이트하고 해당 버퍼에 일관된 이미지가 포함되면 다음 모니터의 수직 블랭킹 간격에 표시되도록 전환합니다. Wayland의 모토는 "모든 프레임이 완벽합니다"입니다. 즉, 창 찢어지거나 깜박이거나 반짝거리지 않습니다.
Wayland의 입력 처리는 합성기를 통해 이루어집니다.마우스 커서가 어느 창에 있는지 아는 유일한 구성요소(컴포지터가 창을 왜곡할 수도 있다는 점을 명심하십시오.) 합성기는 화면 좌표를 해당 창의 창-로컬 좌표로 변환하고 이벤트를 클라이언트에 보냅니다.
Wayland의 창작 이야기에 관심이 있다면 Daniel Stone의 재미있는 프레젠테이션을 시청하는 것이 좋습니다.Wayland와 X의 실제 이야기.
답변3
*nix에는 래스터 디스플레이로 렌더링되는 메모리 비트맵인 프레임 버퍼 프리미티브가 있습니다. 하드웨어가 개선됨에 따라 한 제조업체의 Khronos API 확장인 EGLOutput/EGLDevice와 다른 제조업체의 GEM은 타협의 결과였으며 DISPLAY 스택의 혁신적인 오픈 소스 솔루션의 저작권 종속성을 위장하기 위해 X와 작업하기 위한 직접 렌더링 인프라로 널리 결합되었습니다.