사용자 인터페이스와 시스템 호출 인터페이스

Command Interpreters (명령어 인터프리터)

대부분의 운영체제는 **커맨드 인터프리터(Command Interpreter)**라는 사용자 인터페이스를 제공합니다. 사용자가 입력하는 명령을 해석하고 실행하는 역할을 하며, 일반적으로 **셸(shell)**이라고 불립니다.

운영체제는 사용자가 로그인하거나 새로운 명령어 기반 프로세스를 시작할 때 이 인터프리터를 실행시킵니다. 사용자는 CLI 환경에서 텍스트 기반의 명령어를 입력하고, 해당 명령이 시스템 자원에 접근하거나 프로그램을 실행하는 방식으로 운영체제를 제어합니다.

다양한 셸의 예

UNIX 및 Linux 기반 운영체제에서는 여러 종류의 셸이 제공되며, 사용자가 자신의 취향이나 필요에 따라 선택할 수 있습니다. 예를 들어:

  • C Shell (csh)

  • Bourne-Again Shell (bash)

  • Korn Shell (ksh)

각 셸은 기능적으로 유사하지만, 문법이나 일부 내장 명령의 동작 방식에 차이가 있습니다.

명령어 처리 방식

운영체제는 사용자가 입력한 명령을 실행하는 두 가지 방식 중 하나를 사용합니다:

  1. 내장 명령 방식 (built-in command) 명령어가 커맨드 인터프리터 내부에 구현되어 있는 방식입니다. 예를 들어 delete 명령이 셸 자체에 구현되어 있다면, 해당 명령어가 입력되었을 때 셸 내부에서 직접 해당 작업을 수행합니다.

    장점: 빠르게 실행 가능 단점: 명령어 수가 많아질수록 인터프리터 크기가 커짐

  2. 외부 프로그램 실행 방식 (external command) 명령어가 실행 파일로 존재하며, 셸은 해당 이름의 파일을 찾아 메모리에 로드하여 실행합니다. 예: rm file.txt를 입력할 경우,

    • 셸은 rm이라는 이름의 실행 파일을 시스템에서 검색하고,

    • 그것을 실행한 후 file.txt를 인자로 전달합니다.

이 방식은 UNIX 시스템에서 주로 사용되며, CLI의 크기를 작게 유지하면서 새로운 명령어를 파일로 쉽게 추가할 수 있는 장점이 있습니다.

Graphical User Interface

그래픽 사용자 인터페이스(GUI)는 명령어 기반 인터페이스보다 시각적이고 직관적인 상호작용을 제공하는 방식입니다. 사용자는 마우스나 터치패드, 키보드 등을 이용해 아이콘, 윈도우(창), 메뉴, 버튼 등 시각적 요소를 조작하며 운영체제와 상호작용합니다.

GUI는 오늘날 거의 모든 데스크탑 및 노트북 운영체제에서 표준으로 자리잡고 있으며, 그 목표는 사용자 친화성접근성 향상에 있습니다.

CLI와의 관계

대부분의 GUI 시스템은 명령어 인터프리터와 공존합니다. GUI는 사용자가 명령어를 직접 입력하지 않고도 시스템을 제어할 수 있도록 돕지만, 여전히 저수준의 제어나 고급 작업에는 CLI가 필요할 수 있습니다.

예를 들어:

  • macOS는 고유의 Aqua GUI를 제공하며 동시에 bash 등의 명령어 셸도 탑재

  • Windows는 GUI 중심으로 설계되었지만, PowerShell이나 cmd.exe와 같은 CLI 도구도 포함

이러한 이중 구조는 사용자의 수준과 목적에 따라 유연하게 시스템을 사용할 수 있게 합니다.

GUI만으로 가능한 기능 vs CLI만으로 가능한 기능

운영체제에 따라 특정 기능은 GUI로만, 또는 CLI로만 제공되는 경우가 있습니다.

  • 어떤 GUI 응용프로그램은 내부적으로 CLI 호출을 하거나 시스템 호출(system call)을 추상화하여 사용

  • 반대로 일부 고급 기능은 GUI에서 접근할 수 없고, CLI를 통해서만 조작이 가능한 경우도 있음

예를 들어, 디바이스 드라이버 로드, 네트워크 커널 파라미터 변경 등은 대부분 CLI에서 제어하게 됩니다.

사용자 경험의 통합

GUI는 CLI보다 사용자 입장에서 훨씬 더 친숙하고 시각적 피드백이 뛰어남.

  • 파일을 드래그하여 삭제

  • 아이콘을 클릭하여 프로그램 실행

  • 다중 창을 이용한 작업 병렬화


Touch-Screen Interface (터치스크린 인터페이스)

터치스크린 인터페이스는 물리적 입력 장치 없이, 사용자가 손가락이나 스타일러스 펜으로 화면을 직접 조작하여 운영체제와 상호작용하는 방식입니다. 이 인터페이스는 스마트폰, 태블릿, 일부 노트북 및 키오스크 등 모바일 및 임베디드 시스템에서 광범위하게 사용됩니다.

GUI와의 차이점

표면적으로는 GUI와 유사하게 보일 수 있으나, 입력 방식에서 근본적인 차이가 존재합니다:

  • GUI는 마우스나 키보드를 통한 간접 입력을 기반

  • 터치스크린은 손가락으로 직접 UI 요소를 조작하는 직접 입력 모델

결과적으로 터치스크린 UI는 보다 크고 단순한 인터페이스 요소, 터치 이벤트에 최적화된 레이아웃을 필요로 하며, 전통적인 데스크탑 GUI와는 별도로 설계됩니다.

운영체제 구조와의 관계

모바일 운영체제(Android, iOS 등)는 GUI 기반 인터페이스 위에 터치스크린 계층을 두고 작동합니다. 하지만 터치스크린 기반 기기에서는 일반적으로 사용자가 운영체제와 직접적으로 상호작용하지 않습니다. 대신:

  • 사용자는 앱을 통해 간접적으로 시스템 기능을 활용

  • 앱은 운영체제의 시스템 콜이나 API를 호출하여 작업을 위임

즉, 사용자는 운영체제가 아닌 앱 중심의 상호작용 모델에 익숙하며, 운영체제는 그 자체보다 앱 생태계를 지원하는 플랫폼 역할을 수행합니다.

CLI의 제한적 존재

터치스크린 기반 시스템에도 CLI가 존재할 수 있습니다. 예:

  • Android는 개발자 도구나 루팅 상태에서 adb shell을 통한 CLI 접근 가능

  • iOS는 일반적으로 CLI 접근이 제한되며, 탈옥을 통해 제한적으로 가능

그러나 일반 사용자 입장에서는 터치스크린 환경에서 CLI는 사실상 존재하지 않는 것과 유사하며, 모든 인터페이스는 앱과 GUI를 통해 구현됩니다.

Last updated