X11: X.Org 서버는 GUI 환경을 구현하기 위해 어떤 시스템 호출을 사용합니까?

X11: X.Org 서버는 GUI 환경을 구현하기 위해 어떤 시스템 호출을 사용합니까?

최근 Xlib를 연구하는 동안 X.Org 서버가 GUI 환경을 구현하기 위해 어떤 시스템 호출(API)을 사용하는지에 대한 질문이 있습니다.

출력 측에서 시스템 호출을 사용하면 화면에 창(예: 색상이 지정된 사각형)을 그릴 수 있습니다. 입력 측면에서 어떤 시스템 호출을 통해 키보드와 마우스로부터 입력 정보를 얻을 수 있습니다.

X.Org 서버의 도움 없이 창을 그릴 수 있나요? 물론 이것은 실용적이지 않습니다. 하지만 그것이 가능한지 알고 싶습니다.

답변1

X.Org 서버가 GUI 환경을 구현하기 위해 사용하는 시스템 호출(API)은 무엇입니까?

X 서버와 X 클라이언트 간의 통신에 사용되는 네트워크/도메인 소켓입니다.

하드웨어 드라이버가 하드웨어를 제어하는 ​​데 필요한 것이 무엇이든: 초기 Linux에서는 이는 대부분 메모리 매핑된 I/O 및 포트였지만 이제는 대부분 자체 API가 있는 커널 드라이버입니다.

창을 그릴 수 있게 해주는 시스템 호출

이에 대한 시스템 호출은 없습니다.

입력 측면에서 어떤 시스템 호출을 통해 키보드와 마우스로부터 입력 정보를 얻을 수 있습니다.

X에는 ​​여전히 낮은 수준의 드라이버가 있지만 오늘날 기본적으로 모든 것은 evdev드라이버를 사용합니다.커널 입력 레이어.

X.Org 서버의 도움 없이 창을 그릴 수 있나요?

응, 와프레임버퍼 드라이버. 기본적으로 프레임 버퍼를 나타내는 데 사용할 /dev/fb0수 있는 유사한 장치 와 비디오 모드 등을 선택할 수 있는 장치가 있습니다.mmapioctl

물론 이것은 실용적이지 않습니다.

이는 매우 실용적이며 많은 임베디드 Linux 시스템에서 사용됩니다.

답변2

Deckert의 훌륭한 답변에 대한 부록입니다.

X.Org 서버의 도움 없이 창을 그릴 수 있나요?

Wayland는 약 14년 동안 서비스를 제공해 왔으며 이제는 X를 사용하지 않는 것이 예외가 아니라 표준이 되어야 한다는 점을 상기시키고 싶습니다. (지원 부족으로 인해 그렇지 않습니다. 화면 공유가 미래에 필수적인 기능이 아니라는 사실을 깨닫는 데 전염병이 걸린다면 Wayland는 최근 생각만큼 성숙하지 않을 수 있습니다.)

관련 정보