프로세스와 스레드

박진·2026년 2월 10일

2026.02.10 (화)
프로그램, 프로세스, 스레드의 개념


🎛 프로그램, 프로세스, 스레드의 정의

프로그램 (Program)

정의: 실행 가능한 코드의 집합 (파일)
상태: 멈춰 있음 (정적)
비유하자면 일한 내용이 담긴 창고?

프로세스 (Process)

정의: 실행 중인 프로그램의 인스턴스
상태: 살아있음 (동적)
비유해보면?? 시키고 있는 감독관

스레드 (Thread)

정의: 프로세스 내에서 실행되는 흐름의 단위
상태: 일하고 있음 (동적)
비유하자면 시키는대로 일하는 노동꾼 느낌

핵심 차이점

  • 자원 공유: 프로세스는 각각 독립된 메모리 공간을 가진다. 반면, 한 프로세스 내부의 스레드들은 메모리를 서로 공유하고 있다.
  • 영향도: 스레드 하나가 오류로 종료되면 같은 프로세스 내의 다른 스레드들도 영향을 받을 수 있다. 하지만 프로세스 간에는 서로 영향을 주지 않는다.

🔧 Dart의 Isolate란?

일반적인 언어의 스레드와 달리, Dart는 Isolate 라는 개념을 사용한다. 이름되로 '격리된' 실행 단위를 뜻한다.

Isolate 특징

  • 독립된 메모리
    각 Isolate는 자신만의 메모리를 가진다. 스레드와 달리 메모리를 공유하지 않는다.
  • 싱글 스레드 기반
    기본적으로 Flutter 앱은 하나의 Main Isolate에서 실행된다. 이 안에서 이벤트 루프가 돌아가며 UI를 그리고 사용자의 입력을 처리한다.
  • 통신 방식
    메모리를 공유하지 않기 때문에, 서로 데이터를 주고받으려면 메시지 패싱 방식을 사용해야 한다.

⚒ 왜 스레드 대신 Isolate를 쓸까?

일반적인 멀티 스레드 환경에서는 여러 스레드가 동시에 같은 메모리에 접근할 때 발생하는 데이터 충돌을 막기 위해 Lock을 거는 복잡한 과정이 필요하다. 하지만 Isolate는 메모리를 아예 분리해버림으로써 이런 복잡함을 없애고 성능 최적화를 이룬다.

0개의 댓글