리눅스의 init 프로세스와 systemd 프로세스
포스트
취소

리눅스의 init 프로세스와 systemd 프로세스

세줄 요약

  1. 리눅스 운영체제는 부팅 과정에서 여러 프로세스를 시작하고 관리하기 위해 시스템 초기화 프로세스를 사용하는데, 대표적인 것으로 initsystemd가 있다.

  2. init은 오래된 방식으로 단순한 구조와 설정 파일을 사용하며, systemd는 병렬 처리와 의존성 관리 등 현대적인 기능을 제공한다.

  3. 과거엔 init을 주로 사용했지만, 최근엔 systemd가 대부분의 리눅스 배포판에서 기본적으로 사용되고 있다.


init 프로세스

init은 리눅스 시스템에서 가장 먼저 실행되는 프로세스이다. 시스템이 부팅될 때 커널이 init을 실행하며, init은 모든 다른 사용자 프로세스의 부모 프로세스가 된다. 프로세스 ID는 항상 1이다.

init의 주요 기능

  • 시스템이 부팅되었을 때 실행할 런레벨을 결정한다. 런레벨은 시스템의 동작 모드를 나타낸다.
  • 설정 파일 (/etc/inittab)에 정의된 대로 데몬 및 서비스를 실행하거나 중지한다.
  • 특정 프로세스가 종료되거나 충돌했을 때 이를 감지하고 필요한 경우 재실행한다.

init의 동작 방식

  • init/etc/inittab 파일을 읽어 어떤 스크립트를 실행할지 결정한다.
  • 각 런레벨에 따라 실행해야 할 스크립트가 정의되어 있다. 이 스크립트들은 /etc/rc.d/ 디렉토리에 위치한다.
  • 예를 들어, 런레벨 3일 경우 /etc/rc.d/rc3.d/ 안에 있는 스크립트를 실행한다.

init의 장단점

  • 장점
    • 간단한 구조. 텍스트 기반으로 누구나 쉽게 이해 가능.
    • 오래된 시스템과의 호환성 보장.
    • 설정 파일이 명확하며, 디버깅이 쉬움.
  • 단점
    • 병렬 처리가 불가능해 부팅 속도가 느림.
    • 서비스 간 의존성을 효과적으로 처리하지 못함.
    • 로그 관리가 분산되어 있음.

systemd 프로세스

systemdinit의 한계를 극복하기 위해 개발된 현대적인 시스템 및 서비스 관리자이다. systemd는 단순한 초기화 시스템이 아니라 종합적인 시스템 관리 도구이다.

systemd의 주요 기능

  • 부팅 시 여러 작업(서비스 실행, 마운트 등)을 병렬로 처리하여 부팅 속도를 크게 단축한다.
  • 서비스 간의 의존성을 효율적으로 관리하여 필요한 순서에 따라 서비스를 실행한다.
  • init의 고정된 런레벨 대신 타겟(target)이라는 유연한 단위를 사용한다.
  • journalctl 명령어를 통해 모든 로그를 중앙에서 관리한다.
  • 서비스가 요청될 때 필요한 소켓만 열어 리소스를 절약한다.

systemd의 동작 방식

  1. 커널이 부팅 후 /sbin/init을 실행하고, systemd가 이 역할을 대신한다.
  2. systemd는 설정된 타겟(기본적으로 default.target)을 불러온다.
  3. 타겟에 포함된 모든 유닛을 의존성에 따라 병렬로 실행한다.

systemd의 장단점

  • 장점
    • 부팅 속도가 빠르며, 현대적인 시스템에서 최적화되어 있음.
    • 의존성 관리가 자동화되어 신뢰성이 높음.
    • 통합 로그 관리로 디버깅이 쉬움.
    • 다양한 기능(타이머, 소켓, 장치 관리 등)을 지원.
  • 단점
    • 복잡한 구조로 인해 학습 곡선이 높음.
    • 이진 로그로 인해 로그 파일이 손상되면 복구가 어려움.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

컴퓨터의 음수표현과 2의 보수

systemctl을 사용하여 커스텀 서비스 등록방법

Comments powered by Disqus.