Rocky 's Blog

컴퓨터 부팅 이후 프로세스 실행 과정

  • CS
  • 운영체제
2025. 11. 23.
게시글 썸네일

개념 정리


시스템 콜이란?
  • 보안과 안정성 때문에 운영체제가 제공하는 서비스(파일 접근, 프로세스 생성 등)를 일반 프로그램(사용자 공간)에서 직접 사용할 수 없음
  • 따라서 사용자 프로그램은 필요한 기능을 요청하기 위해 시스템 콜이라는 특별한 인터페이스를 통해 OS 커널에 대행을 요청함
  • 시스템 콜이 호출되면 CPU의 실행 권한이 사용자 모드에서 커널 모드로 전환되어, 운영체제가 해당 요청을 직접 처리
  • 1. 커널 초기화 및 파일 시스템 마운트


    커널 초기화

    부트로더가 커널을 메모리에 로드하면, 커널은 시스템을 사용 가능한 상태로 만들기 위해 초기화 작업을 시작한다.

    하드웨어 장치 드라이버 초기화

  • CPU, 메모리, 디스크, 네트워크 카드 등 하드웨어 장치를 인식
  • 각 장치를 제어하기 위한 드라이버를 로드하고 초기화
  • 하드웨어와 OS 간 통신 가능한 상태로 설정
  • 루트 파일 시스템 마운트

    마운트(Mount)란?

    물리적 저장 장치(HDD, SSD 등)에 있는 파일 시스템을 OS의 디렉토리 구조에 연결하는 과정이다.

    루트 파일 시스템 마운트 과정

    1. 커널이 부트 파라미터로부터 루트 파일 시스템의 위치를 확인
    2. 해당 저장 장치를 '/' (루트) 디렉토리에 연결
    3. OS가 이 저장소에 접근할 수 있게 됨

    루트 파일 시스템 구성

  • /bin: 기본 실행 파일 (ls, cp, cat 등)
  • /etc: 시스템 설정 파일
  • /usr: 사용자 프로그램 및 라이브러리
  • /var: 가변 데이터 (로그 파일 등)
  • /home: 사용자 홈 디렉토리
  • 이 단계가 완료되면 OS는 설정 파일과 주요 시스템 바이너리를 읽을 수 있는 상태가 된다.

    2. 첫 사용자 공간 프로세스 실행 (init/systemd)


    사용자 공간 vs 커널 공간

    커널 공간(Kernel Space)

  • OS의 핵심 부분이 실행되는 메모리 영역
  • 하드웨어에 직접 접근 가능
  • 높은 권한으로 동작
  • 사용자 공간(User Space)

  • 일반 응용 프로그램이 실행되는 메모리 영역
  • 하드웨어에 직접 접근 불가
  • 시스템 콜을 통해 커널에 요청
  • init 또는 systemd 실행

    커널은 파일 시스템 마운트가 완료되면, 첫 번째 사용자 공간 프로세스를 실행한다.

    init/systemd의 특징

  • PID(Process ID) 1번을 할당받음
  • 시스템에서 가장 먼저 시작되는 사용자 공간 프로세스
  • 커널에 의해 직접 실행되는 유일한 프로세스
  • 모든 다른 프로세스의 부모 프로세스 역할
  • init/systemd의 역할

  • 시스템 초기화 총괄
  • 다른 프로세스 생성 및 관리
  • 서비스(데몬) 시작 및 관리
  • 고아 프로세스(부모가 죽은 프로세스) 수습
  • 시스템 종료 및 재부팅 관리
  • init vs systemd

  • init: 전통적인 초기화 시스템, 순차적 실행
  • systemd: 현대적인 초기화 시스템, 병렬 실행으로 부팅 속도 향상, 대부분의 최신 리눅스 배포판에서 사용
  • 3. 시스템 서비스 및 런레벨 초기화


    서비스 시작 과정

    init/systemd는 설정 파일을 읽어 시스템 운영에 필요한 서비스들을 시작한다.

    실행 방식

  • 순차적 실행: init 시스템에서 사용, 하나씩 차례로 실행
  • 병렬 실행: systemd에서 사용, 여러 서비스를 동시에 시작하여 부팅 속도 향상
  • 주요 시스템 서비스

    네트워크 서비스

  • 네트워크 인터페이스 설정
  • IP 주소 할당 (DHCP 또는 고정 IP)
  • 네트워크 연결 활성화
  • 로그 시스템

  • 시스템 로그 수집 및 기록
  • 이벤트 및 오류 메시지 저장
  • 디버깅 및 문제 해결을 위한 정보 제공
  • 스케줄러

  • 정기적으로 실행되는 작업 관리 (cron)
  • 시스템 유지보수 작업 자동화
  • 백업, 로그 정리 등
  • 데몬(Daemon)

  • 백그라운드에서 지속적으로 실행되는 서비스
  • 예시: 웹 서버(Apache, Nginx), 데이터베이스(MySQL), SSH 서버 등
  • 사용자 로그인 없이도 계속 동작
  • 런레벨 / 타겟

    런레벨(Runlevel) - init 시스템

  • 시스템의 동작 상태를 나타내는 숫자 (0-6)
  • 0: 시스템 종료
  • 1: 싱글 유저 모드 (복구 모드)
  • 3: 멀티 유저 모드 (CLI)
  • 5: 그래픽 환경
  • 6: 재부팅
  • 타겟(Target) - systemd

  • 런레벨과 유사한 개념이지만 더 유연
  • multi-user.target: CLI 환경
  • graphical.target: GUI 환경
  • 4. 사용자 로그인 환경 준비


    로그인 환경 활성화

    시스템 서비스가 정상적으로 실행되면, 사용자가 시스템에 접근할 수 있는 환경이 준비된다.

    로그인 방식

    CLI (Command Line Interface) 환경

  • 텍스트 기반 콘솔 (TTY)
  • 검은 화면에 login: 프롬프트 표시
  • Getty 프로세스가 실행되어 로그인 대기
  • 사용자 입력을 받아 /bin/login 프로그램 실행
  • GUI (Graphical User Interface) 환경

  • 디스플레이 매니저 실행 (GDM, LightDM, SDDM 등)
  • X Server 또는 Wayland 그래픽 서버 시작
  • 그래픽 로그인 화면 표시
  • 마우스와 키보드로 사용자 인증