세줄 요약
리눅스 운영체제는 부팅 과정에서 여러 프로세스를 시작하고 관리하기 위해 시스템 초기화 프로세스를 사용하는데, 대표적인 것으로
init
과systemd
가 있다.init
은 오래된 방식으로 단순한 구조와 설정 파일을 사용하며,systemd
는 병렬 처리와 의존성 관리 등 현대적인 기능을 제공한다.과거엔
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
프로세스
systemd
는 init
의 한계를 극복하기 위해 개발된 현대적인 시스템 및 서비스 관리자이다. systemd
는 단순한 초기화 시스템이 아니라 종합적인 시스템 관리 도구이다.
systemd
의 주요 기능
- 부팅 시 여러 작업(서비스 실행, 마운트 등)을 병렬로 처리하여 부팅 속도를 크게 단축한다.
- 서비스 간의 의존성을 효율적으로 관리하여 필요한 순서에 따라 서비스를 실행한다.
init
의 고정된 런레벨 대신 타겟(target)이라는 유연한 단위를 사용한다.journalctl
명령어를 통해 모든 로그를 중앙에서 관리한다.- 서비스가 요청될 때 필요한 소켓만 열어 리소스를 절약한다.
systemd
의 동작 방식
- 커널이 부팅 후
/sbin/init
을 실행하고,systemd
가 이 역할을 대신한다. systemd
는 설정된 타겟(기본적으로default.target
)을 불러온다.- 타겟에 포함된 모든 유닛을 의존성에 따라 병렬로 실행한다.
systemd
의 장단점
- 장점
- 부팅 속도가 빠르며, 현대적인 시스템에서 최적화되어 있음.
- 의존성 관리가 자동화되어 신뢰성이 높음.
- 통합 로그 관리로 디버깅이 쉬움.
- 다양한 기능(타이머, 소켓, 장치 관리 등)을 지원.
- 단점
- 복잡한 구조로 인해 학습 곡선이 높음.
- 이진 로그로 인해 로그 파일이 손상되면 복구가 어려움.
Comments powered by Disqus.