본문 바로가기

프로그램

리눅스 그래픽 시스템

1. 개요

 리눅스의 그래픽 시스템의 구조는 현재 크게 3가지로 나뉘고 있다. 전통적인 X 윈도우 구조, Framebuffer Device를 이용한 구조, DirectFB를 이용한 구조가 그것이다.

 

2. X 윈도우 구조


 X 윈도우는 서버/클라이언트 모델을 가지고 있다. 응용 프로그램의 각종 그래픽 요청(각종 그리기 연산, 이벤트 전달 등등) X 서버에 전달하면 X 서버는 요청을 받아 들여서 그래픽 카드를 다루는 디바이스 드라이버를 이용하여 그래픽 연산 요청을 처리한다. 응용 프로그램 쪽의 그래픽 요청은 Xlib를 이용하여 이루어지게 되고 커널의 네트워크 계층을 지나서 서버에 전달되게 된다.

 X 윈도우의 서버/클라이언트 모델은 응용 프로그램에 유연성을 제공하고 자원의 공유를 쉽게 할 수 있도록 하지만 각종 요청이 네트워크 계층을 지나야 하고 서버와 클라이언트에 중복된 정보를 유지해야 하는 등의 문제로 성능과 효율성 면에서는 문제점을 가지고 있다.

 응용의 개발은 Xlib를 직접 사용하여 개발 될 수 있지만 대게는 GTK/QT와 같은 보다 상위의 그래픽 위젯을 제공하는 라이브러리를 이용하여 개발된다.

 

3. Framebuffer 구조

사용자 삽입 이미지

 

 Framebuffer는 두 가지 의미로 사용되고 있다. 원래는 그래픽 카드의 비디오 메모리 중에서 실제 한 화면을 표시할 정보를 담고 있는 메모리 공간을 나타내는 말이었지만 커널에서 확보되는 비디오 메모리 내의 Framebuffer로 전달될 메모리 공간도 Framebuffer라고 말한다.

리눅스 Framebuffer Device는 커널 2.4.x 부터 Experimental로 포함된 그래픽 디바이스를 다루는 공통 API이다. 다시 말하면 여러 가지 그래픽 카드를 동일하게 다루기 위해서 정의된 인터페이스이다.

각 그래픽 카드를 Framebuffer Device를 통해서 활용하기 위해서는 Framebuffer device를 지원하는 디바이스 드라이버가 필요하다.

응용 프로그램에서는 Framebuffer 계층의 API를 통해서 직접 그래픽 관련 작업을 수행 할 수 있지만 X 윈도우의 경우와 마찬가지로 Framebuffer 위에 구현된 GTK QT등의 상위 그래픽 위젯을 포함하는 라이브러리를 활용하는 것이 보통이다.

 

3. DirectFB 구조

 

사용자 삽입 이미지
 

DirectFB Framebuffer Device 구조의 확장이라고 볼 수 있다. DirectFB를 지원하는 드바이스 드라이버를 가진 그래픽 카드의 경우에 DirectFB를 이용하여 가능한 그래픽 연산은 DirectFB를 통해서 처리하고 그렇지 않은 경우에는 기존의 Framebuffer Device를 이용하여 처리 한다.

DirectFB는 직접적으로 응용 프로그램에서 직접 그래픽 카드가 가지고 있는 가속 기능을 이용하고 Framebuffer Device 구조보다 쉽게 디바이스를 접근 할 수 있도록 윈도우 생성/관리 기능과 사운드, 키보드, 마우스 등의 입출력 장치를 다룰 수 있는 기능을 추가로 구현한 것이다. 윈도우의 DirectX의 하위 모듈인 DirectDraw를 리눅스에서 구현한 것이라고 불 수 있다.

'프로그램' 카테고리의 다른 글

당분간 FTP 서버 중지...  (0) 2007.11.07
DDK 관련 자료들  (0) 2007.11.06
[펌] DirectDraw - Blit, Flip, RECT, DDBLTFX, Lock  (0) 2007.11.05
객체지향 프로그래밍 튜터 자료  (0) 2007.10.30
인터넷 보안 10장  (0) 2007.10.30