X 윈도우(X window)는 컴퓨터 그래픽 환경을 구축하고 관리하는 데 사용되는 소프트웨어입니다, 또한 리눅스 마스터 시험 대비를 위한 것뿐만 아니라, 원격지 근무를 하시는 분들에게도 도움이 될 수 있습니다
X 윈도우(X window)의 개념
X 윈도우"는 리눅스 및 유닉스 기반 시스템에서 사용되는 그래픽 사용자 인터페이스 시스템의 일종이며 아래와 같은 특징을 가집니다
- 그래픽 요소 표시 및 조작:
- X 윈도우 시스템은 화면에 그래픽 요소를 표시합니다. 이것은 윈도우, 아이콘, 메뉴, 대화 상자 및 다른 그래픽 요소들을 의미합니다.
- 사용자는 마우스 및 키보드를 사용하여 그래픽 응용 프로그램을 조작하고 제어할 수 있습니다.
- 그래픽 요소들은 다양한 크기와 모양으로 나타날 수 있으며, 이것은 다양한 응용 프로그램 및 사용자 환경에서 유용합니다.
- 다중 유저 지원:
- X 윈도우는 다중 유저 환경에서 여러 사용자가 동시에 작업할 수 있도록 지원합니다.
- 각 사용자는 자신만의 독립적인 그래픽 세션을 가질 수 있으며, 서로의 작업에 영향을 주지 않습니다.
- 이것은 서버/클라이언트 아키텍처를 기반으로 하며, 여러 사용자가 하나의 시스템을 공유하는 서버에서 그래픽 화면을 표시하고 클라이언트에서 작업합니다.
- 다양한 윈도우 관리자 및 데스크톱 환경:
- X 윈도우 시스템은 다양한 윈도우 관리자 및 데스크톱 환경을 지원합니다.
- 사용자는 자신의 선호도에 따라 화면 배치, 테마, 아이콘 스타일, 단축키 등을 사용자 정의할 수 있습니다.
- GNOME, KDE, Xfce 등과 같은 다양한 데스크톱 환경은 사용자에게 그래픽 환경을 제공하며, 각각의 고유한 특징과 스타일을 가지고 있습니다.
- 네트워크 투명성:
- X 윈도우는 네트워크 투명성을 가지고 있어, 다른 컴퓨터나 서버에서 그래픽 응용 프로그램을 실행하고 화면을 표시할 수 있습니다.
- 원격 서버에서 원격 데스크톱 환경을 사용하거나 다른 컴퓨터에서 애플리케이션을 실행하는 데 유용합니다.
- 네트워크를 통해 그래픽 화면을 전송하고 관리할 수 있어서 원격 작업에 매우 효과적입니다.
X 윈도우(X window)의 역사(간략히)
X 윈도우는 1984년에 개발되었으며, MIT (Massachusetts Institute of Technology)에서 시작되었습니다. 초기 버전은 단순한 윈도 관리자로 시작했지만, 시간이 흐르면서 발전하여 강력한 그래픽 환경을 제공하게 되었습니다.
X 윈도우의 특징
. 위에 설명한 것 중 중요한 특징은 다음과 같습니다:
- 다중 사용자 지원: 여러 사용자가 동시에 시스템에 로그인하여 작업할 수 있습니다.
- 네트워크 지원: X 윈도우는 네트워크를 통해 다른 시스템과 연결하여 원격으로 작업할 수 있습니다.
- 확장 가능성: X 윈도우 환경은 다양한 확장 모듈과 테마를 통해 사용자 정의가 가능합니다.
그림에 나온 구조 에따른 구동 순서
- X 서버는 로컬 키보드와 마우스로부터 입력을 받아 화면에 표시합니다.
- 웹 브라우저 또는 터미널 에뮬레이터를 사용자의 워크스테이션에서 실행
- 터미널 에뮬레이터는 원격 컴퓨터에서 실행
- 사용자 컴퓨터에서 제어 및 모니터링됩니다.
워크스테이션
워크스테이션은 사용자의 개인 작업 환경을 의미하며, 이 환경에서 다양한 응용 프로그램을 실행하고 제어합니다.
X 서버(X Server)
X 서버는 X 윈도우 시스템에서 중요한 구성 요소 중 하나입니다.
X 서버의 주요 역할:
- 그래픽 출력 관리:
- X 서버는 하드웨어와 상호 작용하여 그래픽 출력을 관리합니다. 이는 화면에 그래픽 요소를 그리고 제어하는 데 필수적입니다.
- 사용자가 마우스와 키보드를 통해 그래픽 애플리케이션을 조작할 수 있도록 합니다.
- 원격 통신을 위한 TCP 포트 6000번 사용:
- X 서버는 원격지의 X 클라이언트와 통신하기 위해 TCP 포트 6000번을 사용합니다. 이를 통해 다른 컴퓨터에서 X 클라이언트가 X 서버에 연결하여 원격 작업을 수행할 수 있습니다.
- 오픈소스 프로젝트로 XFREE86과 X.org:
- 대표적인 X 서버 구현체로 XFREE86과 X.org가 있습니다. 이들은 오픈소스 프로젝트로, X 윈도 시스템을 구현하고 개발하는 데 사용됩니다.
- 오픈소스 프로젝트는 다양한 플랫폼 및 하드웨어에서 X 서버를 실행하고 확장하는 데 기여합니다.
- 로컬 및 원격지 다수의 X 클라이언트 연결 허용:
- X 서버는 로컬 및 원격지에서 다수의 X 클라이언트 연결을 허용합니다. 이는 다중 사용자 환경에서 여러 클라이언트가 동시에 X 서버에 연결하여 그래픽 애플리케이션을 실행하고 작업할 수 있음을 의미합니다.
- 이로써 사용자는 하나의 시스템을 공유하면서도 독립적으로 그래픽 애플리케이션을 사용할 수 있습니다.
X 클라이언트(X client)
- X 클라이언트는 X 서버와 상호 작용하여 그래픽 애플리케이션을 실행하는 프로그램입니다. 사용자가 그래픽 애플리케이션을 시작하면, X 클라이언트가 X 서버와 통신하여 그래픽 요소를 화면에 그립니다.
- 이러한 클라이언트 프로그램은 사용자가 그래픽 응용 프로그램을 조작하고 화면에 정보를 표시하는 데 중요한 역할을 합니다.
X 프로토콜(X protocol)
- X 프로토콜은 X 서버와 X 클라이언트 간의 통신을 위한 프로토콜입니다. 이 프로토콜은 그래픽 데이터를 전송하고 윈도우 관리와 관련된 명령을 처리하는 데 사용됩니다.
- X 프로토콜은 네트워크를 통해 데이터를 안전하게 전송하는 데 주요 역할을 합니다. 이것은 원격 서버에서 그래픽 응용 프로그램을 실행하거나 다른 컴퓨터에서 그래픽 애플리케이션을 표시하는 데 필수적입니다.
프로토콜
프로토콜은 컴퓨터와 네트워크 장치 간에 데이터 통신을 위해 사용되는 규칙과 규약의 집합을 의미합니다. 이것은 데이터를 보내고 받는 방법, 데이터의 형식, 오류 검사 및 복구 방법 등과 관련된 규칙을 정의합니다. 프로토콜은 정보를 안전하게 전송하고 수신하기 위해 통신 상호 작용을 관리하며, 네트워크에서 데이터를 원활하게 교환할 수 있도록 도와줍니다. 네트워크, 인터넷, 웹, 이메일 및 다른 컴퓨터 통신 시스템에서 프로토콜은 핵심 역할을 합니다.
X 세션 (X Session)
- 그래픽 환경 시작:
- X 세션은 사용자 또는 시스템에서 그래픽 환경을 시작하는 데 사용됩니다. 일반적으로 컴퓨터 부팅 시 하나의 X 세션이 시작됩니다.
- 사용자가 로그인하면 새로운 X 세션이 시작되며, 각 세션은 독립적인 그래픽 환경을 제공합니다.
- 독립적인 디스플레이 화면:
- 각 X 세션은 고유한 디스플레이 화면을 가집니다. 이것은 다른 사용자나 X 세션에서 실행 중인 응용 프로그램과 완전히 분리되어 있습니다.
- 따라서 사용자는 여러 개의 그래픽 응용 프로그램을 실행하고 각각의 화면에서 볼 수 있습니다.
- 다중 사용자 지원:
- X 세션은 다중 사용자 환경을 지원합니다. 여러 사용자가 동시에 시스템에 로그인하고 각자의 X 세션에서 작업할 수 있습니다.
- 각 사용자는 자신만의 환경 설정, 그래픽 응용 프로그램 실행 및 파일 액세스 권한을 가집니다.
- 작업 완료 및 로그아웃:
- 사용자는 X 세션에서 그래픽 응용 프로그램을 실행하고 작업을 완료한 후 세션을 로그아웃하거나 종료할 수 있습니다.
- 세션을 종료하면 해당 그래픽 환경은 메모리에서 해제되고 사용자는 로그인 화면 또는 다른 세션으로 이동할 수 있습니다.
요약하면, X 세션은 그래픽 환경을 시작하고 디스플레이를 관리하며 다중 사용자 환경을 제공하며, 사용자가 작업을 완료한 후 로그아웃하거나 종료할 수 있는 독립적인 작업 환경을 제공합니다.
XLib/XCB:
- XLib과 XCB는 X 프로그래밍을 위한 라이브러리입니다. XLib는 고전적이고 간단한 인터페이스를 제공하며, XCB는 효율적인 비동기 통신을 지원합니다.
- 개발자들은 이러한 라이브러리를 사용하여 X 윈도우 애플리케이션을 개발하고 사용자 환경을 커스터마이징 할 수 있습니다.
- XLib는 편리한 기능과 사용하기 쉬운 API를 제공하고, XCB는 더 높은 성능을 위해 설계되었습니다. 개발자는 이러한 라이브러리 중에서 선택하여 개발 환경에 맞게 활용할 수 있습니다.
디스플레이 매니저 (DISPLAY Manager) 또는 login Manager
- 디스플레이 매니저는 리눅스 운영 체제에서 로그인 관리자로 사용됩니다. 디스플레이 매니저는 부팅 프로세스가 끝날 때 기본 셸 대신 표시되는 그래픽 인터페이스입니다.
- 디스플레이 매니저는 일반적으로 각 테마에 대해 일정 수준의 사용자 지정 및 테마 가용성을 제공합니다.
- 리눅스에서 사용 가능한 다양한 디스플레이 매니저로는 GDM (그놈 디스플레이 매니저), KDM (KDE 디스플레이 매니저), LightDM, SDDM (Simple Desktop Display Manager) 등이 있습니다.
- 모든 GUI 환경이 같은 매니저에서 된다는 보장이 없습니다. 예를 들어, GDM은 GNOME 데스크탑 환경과 관련되어 있고, KDM은 KDE 데스크탑 환경과 관련되어 있습니다.
윈도우 매니저 (Window manager)
윈도우윈도 매니저는 컴퓨터 그래픽 환경에서 윈도의 생성, 조작, 배치 및 표시를 관리하는 소프트웨어입니다. 다양한 윈도 매니저가 존재하며, 각각은 다른 기능과 스타일을 가지고 있습니다
대표적인 종류를 살펴보면 아래와 같습니다
- 스택 윈도우 매니저(Stacking Window Manager):
- 스택 윈도우윈도 매니저는 윈도를 겹쳐 표시하는 방식을 사용합니다. 사용자가 활성 윈도를 선택하면, 이 윈도가 다른 윈도 위로 올라와서 가장 상위에 표시됩니다. 이러한 방식은 간단하고 직관적이며, 윈도를 쉽게 식별할 수 있습니다. 예를 들어, Fluxbox 및 Openbox는 스택 윈도 매니저의 예입니다.
- 타일 윈도우 매니저(Tiling Window Manager):
- 타일 윈도우윈도 매니저는 화면을 타일 형태로 나누어 사용합니다. 각 윈도는 화면의 일부 영역에 자동으로 배치됩니다. 이 방식은 창을 겹쳐 두지 않고 공간을 효율적으로 활용하므로 멀티태스킹에 유용합니다. 예를 들어, i3 및 Xmonad는 타일 윈도 매니저의 대표적인 예입니다.
- 다이얼로그 윈도우 매니저(Dialog Window Manager):
- 다이얼로그 윈도우윈도 매니저는 주로 다이얼로그 상자 및 대화 상자와 같은 팝업 윈도를 관리하는 데 특화되어 있습니다. 이러한 윈도 매니저는 주로 데스크톱 환경과 함께 사용되어 팝업 창을 효과적으로 처리합니다. 예를 들어, Metacity 및 Mutter는 다이얼로그 윈도 매니저의 예입니다.
- 복합 윈도우 매니저(Composite Window Manager):
- 복합 윈도우윈도 매니저는 그래픽 효과 및 3D 가속 기능을 갖추고 있어 시각적으로 풍부한 사용자 환경을 제공합니다. 윈도의 투명도, 그림자 효과, 회전 등을 지원하며 주로 컴퓨터의 그래픽 하드웨어 성능을 활용합니다. Compiz 및 KWin은 복합 윈도 매니저의 예입니다.
- 가상 윈도우 매니저(Virtual Window Manager)::
- 가상 윈도우 매니저는 여러 개의 가상 데스크톱을 제공하고, 사용자가 이러한 데스크톱 간을 전환하며 다양한 작업을 효율적으로 수행할 수 있도록 도와주는 소프트웨어입니다. 이러한 매니저는 일반적으로 가상화 환경에서 사용되며, 각 가상 데스크톱은 독립된 작업 환경을 나타냅니다. 사용자는 이러한 데스크톱 간을 전환하면서 다른 작업 공간으로 이동하거나 작업을 구분할 수 있습니다
아직 커널이 무엇인지 햇갈리신다면?
커널이란?
커널은 컴퓨터 운영 체제의 핵심 부분으로, 하드웨어와 소프트웨어 간의 상호 작용을 관리하고 제어하는 중요한 소프트웨어 구성 요소입니다. 이는 운영 체제의 핵심 역할을 수행하며 다음과 같은 주요 기능을 포함합니다:
- 하드웨어 관리: 커널은 컴퓨터의 하드웨어 리소스를 관리합니다. 이에는 중앙 처리 장치(CPU), 메모리, 저장 장치, 입출력 장치(키보드, 마우스, 디스크 드라이브 등)가 포함됩니다. 커널은 하드웨어와 소프트웨어 간의 효율적인 상호 작용을 담당합니다.
- 시스템 호출 관리: 프로세스가 운영 체제와 상호 작용하기 위해 시스템 호출(system call)을 사용하는데, 커널은 이러한 시스템 호출을 관리하고 처리합니다. 이를 통해 프로세스는 파일 시스템 접근, 메모리 할당, 네트워크 통신 등과 같은 운영 체제의 기능을 사용할 수 있습니다.
- 자원 할당 및 스케줄링: 여러 프로세스가 동시에 실행되는 환경에서 커널은 CPU 시간과 메모리 리소스를 효율적으로 할당하고 관리합니다. 프로세스 스케줄링 알고리즘을 사용하여 어떤 프로세스가 CPU를 사용하고 얼마나 오랫동안 사용할지를 결정합니다.
- 인터럽트 처리: 하드웨어에서 발생하는 인터럽트(예: 입출력 완료 인터럽트)를 처리하여 운영 체제가 해당 이벤트에 대응하고 적절한 작업을 수행할 수 있도록 합니다.
- 보안 관리: 커널은 시스템 자원에 대한 액세스 권한을 관리하고, 사용자와 프로세스 간의 격리를 유지하여 시스템의 안전성과 보안을 보장합니다.
xhost와 xauth를 이용하여 접근제어를 하는 실습을 준비 중입니다 :) 이론 편이 완료된 후에 하나씩 순서별로 진행하도록 할 예정입니다
다음글
2023.09.08 - [리눅스/리눅스마스터1급] - [리눅스마스터1급] 핵심 내용 정리 : 쉘(Shell) 이해하기
이전글
2023.09.05 - [리눅스/리눅스마스터1급] - [리눅스마스터1급] 핵심 내용 정리 : 파일 시스템 구조
'리눅스 > 리눅스마스터1급' 카테고리의 다른 글
[리눅스마스터1급] 핵심 내용 정리 : 쉘(Shell) 이해하기 (33) | 2023.09.08 |
---|---|
[리눅스마스터1급] 핵심 내용 정리 : 파일 시스템 구조 (24) | 2023.09.05 |
[리눅스마스터1급] 핵심 내용 정리 : 부팅의 절차 & (systemd,init) (33) | 2023.09.03 |
[리눅스마스터1급] 핵심 내용 정리:부트 매니저 (boot manager) 에 모든것 (20) | 2023.09.02 |
[리눅스마스터1급] 핵심 내용 정리: 디스크 인터페이스 & LVM (20) | 2023.09.02 |