시스템 서비스 (System Service)

마지막 수정일2021-08-14

시스템 서비스란?

macOS 운영체제의 시스템 서비스(활성 상태 보기)
macOS 운영체제의 시스템 서비스(활성 상태 보기)

시스템 서비스(System Service)는 시스템 유틸리티(System Utility)로도 알려진 시스템 프로그램(System Program)이다. 시스템 사용을 위해 편리하게 제공되며 내부 구현은 복잡한 프로그램이다. 일부는 우리가 알고 있는 시스템 API이다.

사용자는 노래를 들으며, 게임을 어떻게 할 수 있는지 알 필요가 없다. 사용자가 원하는 것을 쉽게 사용할 수 있도록 운영체제가 시스템 서비스를 제공한다. 예를 들어 크롬 브라우저에서 유튜브 뮤직을 재생하고 Stream 앱으로 게임을 실행하고 있어도 노래가 정지되지 않는다.

근본적으로는 노래가 재생되고 있는 Chrome 앱이 백그라운드로 전환 될때 오디오 시스템과 통신하는 데몬을 실행하기 때문에 사용자는 눈치채지 못한다.

macOS의 경우 Chrome 앱이 백그라운드로 전환되면 coreaudiod 데몬이 실행되며 하드웨어 드라이버를 제어한다.

시스템 서비스의 종류

시스템 서비스는 포그라운드 서비스(Foreground Service)와 백그라운드 서비스(Background Service)로 나뉜다. Foreground는 현재 사용자와 직접적인 상호작용을 하는 서비스를 말하고, Background는 프로세스의 상태로 사용자와 직접적인 상호작용을 하지 않는 서비스를 말한다.

각 운영체제별 시스템 서비스의 종류는 다음과 같다:

운영체제 포그라운드 서비스 백그라운드 서비스
Windows 작업 관리자, 엣지 작업 스케줄러, 윈도우 디펜더, 윈도우 업데이트 서비스
macOS 활성 상태 보기, 시스템 환경설정 coreaudiod, 알림 센터, bird (iCloud 데이터 동기화)
Linux vim 에디터, top (프로세스 관리도구) systemd, cron, sshd (SSH 데몬)

포그라운드 서비스

파일 관리

파일과 디렉토리를 생성하며, 삭제, 복사, 명명, 출력, 목록화 및 일반적인 조작을 수행한다.

상태 정보

시스템의 상태정보를 제공한다. 예를들어 날짜, 시간, 가용 메모리 및 디스크, 사용자 수 등과 같은 상태정보를 제공한다. 이러한 기능을 제공하는 서비스들은 환경설정 정보를 저장하고 검색할 수 있는 등록(registry) 기능을 지원하기도 한다.

파일 변경

앞서 설명한 파일관리와 비슷하지만, 기능을 연계하여 파일을 변경(예: text editor)하거나 파일의 속성을 변경하는 기능을 제공한다.

프로그래밍 언어 지원

일반적인 프로그래밍 언어를 지원하기 위해 컴파일러, 링커, 디버거, 런타임 라이브러리 등을 제공한다. 예를들어 리눅스의 경우 기본적으로 gcc 컴파일러를 제공한다.

프로그램 적재와 수행

컴파일 된 프로그램을 링크하는 링키지 에디터(linkage editor)와 실행가능한 바이너리를 메모리에 적재하는 로더(loader)를 제공한다.

  • 로더는 메모리의 절대 주소에 로드하는 절대 로더(Absolute Loader)와 동적인 주소에 로드하는 재배치 가능 로더(Relocatable Loader)로 나뉘며, 큰 프로그램을 부분적으로 메모리에 로드하는 중첩 로더(Overlay Loader)도 있다.

통신

사용자 와 다른 시스템 간에 가상접속을 구현하는 통신 서비스를 제공한다. 예를 들어 리눅스의 ls | grep text와 같은 명령어는 |를 통해 두 프로그램을 연결한다.

백그라운드 서비스

프로그램은 자신의 할일을 완수하면 종료되는 프로그램도 있는 반면에, 시스템이 종료될 때 까지 계속 실행되는 프로그램도 있다. 이러한 프로그램을 백그라운드 서비스(Background Service) 또는 데몬(Daemon) 이라고 한다.

앞서 coreaudiod 데몬은 macOS에서 오디오 시스템을 제어한다고 했었다. 이외에도 네트워크 연결을 청취(Listen)하는 네트워크 데몬이 있고, 시스템 연결요청을 올바른 프로세스에 연결해주는 역할을 수행한다.

또 다른 예로 프로세스를 시작시키는 프로세스 스케줄러, 시스템 오류 감시 서비스 및 출력서버 등이 있다. 또한 OS가 중요한 활동을 커널 컨텍스트(Kernel Context)에서가 아니라 사용자 컨텍스트(User Context)에서 수행 해야하는 경우, 데몬을 이용해서 이 작업을 수행할 수 있다.

서브 시스템

OS의 핵심 기능을 놀리적으로 분할한 작은 단위의 시스템이고 서비스와는 다른 개념이다.
예를 들어 계층으로 분류를 하면 아래와 같다:

운영체제
├── 파일시스템 서브시스템 (File System Subsystem)
│   └── VFS → 실제 파일시스템 → 블록 디바이스 드라이버 → 물리장치
├── 메모리 관리 서브시스템 (Memory Management Subsystem)
│   └── 가상메모리 → 페이지테이블 → 물리메모리
├── 프로세스 관리 서브시스템 (Process Management Subsystem)
│   └── 스케줄러 → 프로세스/스레드 관리 → CPU
└── I/O 서브시스템 (I/O Subsystem)
    └── I/O 스케줄러 → 디바이스 드라이버 → 물리장치

이는 특정 기능 역역 전체를 관리하는 상위 개념이며, 그 아래 있는 여러 계층 구조와 구성요소들을 포함한다.

서브 시스템은 시스템의 핵심 기능을 제공하기 위해 존재하는 작은 단위의 시스템이다.

Copyright © 2019-2025 Alloc · MIT License