2011년 9월 6일 화요일

Windowing System

Windowing System(Window System)
 GUI를 구성을 하기 위한 한 요소로 그래픽적 요소(폰트 드로잉, 라인 드로잉 ,.. )와의 인터페이스와 마우스, 키보드등과 같이 입력 장치를 지원하기 위한 인터페이스를 지원하는 시스템을 의미한다.

윈도우 시스템은 컴퓨터 유저에게 동시에 여러개의 프로그램을 사용할 수 있도록 해주며 각 프로그램은 자신의 사각영역(윈도우)안에서 실행이 된다.

Window Manager
윈도우 매니저는 윈도우 시스템 내의 윈도우의 모양과 위치를 제어하는 시스템 소프트웨어로 윈도우의 열기,닫기,최소화,최대화, 이동, 리사이즈, 실행 되고 있는 윈도우 트래킹 그리고 윈도우 데코레이션을 담당한다. 이러한 기본 기능이외에 docs, task bar, launcher, desktop icon, wallpaper등의 기능을 가지고 있다.

윈도우 시스템과 윈도우 매니저의 경계가 애매 모호한 경우도 있지만 X Window System처럼 그 구분이 확실 한 경우도 있다.  X Window System의 경우 매우 엄격한 계층 구조를 기지고 있으며  GUI에 관련한 Look&Feel, 행동 등에 대한 어떠한 정책도 가지고 있지 않다. 이러한 부분은 윈도우 매니저, 위젲 툴 킷 및 데스크 탑 환경에서 처리하도록 하고 있다. 여러분이 알다시피 리눅스에는 매우 다양한 윈도우 매니저, 위젲 툴 킷 등이 존재하나 기본적으론 X Window System에 그 기반을 두고 있다.

윈도우 매니저의 종류
윈도우 매니저는 크게 3가지 정도 분류 할 수 있다.
Compositing Window Manager: 
 모든 윈도우를 독립적으로 생성되고 그려질 수 있게 하고 각 윈도우를 컴바인하여 디스플레이 하는 방식이다. 이 과정에서 다양한 2D, 3D효과를 적용할 수 있으며 Look&Feel 을 매우 다양하게 줄수가 있다.

컴포지팅 윈도우 매니저의 예)
Microsoft Windows—the Desktop Window Manager
Mac OS X—the Quartz Compositor
GNU/Linux, FreeBSD and OpenSolaris—Compiz, KWin, and Mutter.


2D/3D효과의 예)
alpha compositing, fading, scaling, rotation, duplication, blending and contortion, shuffling, blurring, redirecting applications, virtual desktop

Stacking Window Manager
배경 윈도우 부터 전경 윈도우까지 z-order에 따라 차례로 그리게 하므로서 윈도우의 오버래핑이 가능한 윈도우 매니저이다. 오버랩핑이 된다면 Composting 윈도우 매니저가 아니라면 모두 스태킹 윈도우 매니저라 할 수 있다.

Tiling Window Manager
윈도우를 타일 형태로 배치하여 중첩되지 않도록 해주는 윈도우 매니저이다. Microsoft Windows 1.0 은 타일링 윈도우 매니저 였다. 타일링 윈도우 매니저의 한 종류 Matchbox는 Openmoke, Maemo, MeeGo등의 모빌 환경에서 많이 사용되고 있다.


현대의 대부분의 윈도우 환경(Window 7, MAC OSX, LINUX ,..)은 컴포지팅 윈도우 매니저를 사용하고 있으며 스마트 폰(안드로이드,IOS, MeeGo,..)의 환경 역시 컴포지팅 윈도우 매니저를 사용하고 있다고 생각해도 무방 하다. 다만 스마트 폰과 같은 소형 임베디드 시스템에서는 공 상의 제약조건(작은 디스플레이 사이즈)등으로 인해 한번에 하나의 윈도우만 볼수 있게 하는 싱글 타일링 윈도우 매니저 형태를 갖추고 있다.

안드로이드의 경우 SDK레벨에서는 윈도우 매니저가 노출이 거의 이루져 있지 않아 윈도우 환경이 아니라고 생각할 수 있으나 기본적으로 윈도우 시스템을 갖추고 있다.
굳이 윈도우 매니저 컨셉과 비교해 보자면 액티비티는 메인 윈도우에 해당 되는 것으로 한번에 하나의 액티비티 스크린만 볼수 있으므로 싱글 타일링 윈도우 매니저를 사용한다고 보면 되고, Surface Flinger를 통해 해당 스크린의 합성이 가능하므로 컴포지팅 윈도우 매니저를 사용한다고 할 수 있다. 따라서 안드로이드는 싱글 타일링 컴포지팅 윈도우 매니저라고 할 수도 있겠다.

만일 윈도우 시스템에 대해 스터디 하고 싶다면  http://microwindows.org 사이트에 방문 해보기 바란다. Win 32, X Window System 형태의 윈도우 시스템을 소스 레벨로 분석 하다 보면 윈도우 시스템에 대해 이해할 수 있을 것이다.





댓글 없음:

댓글 쓰기