공부방

프로세스(Process) vs 스레드(Thread)를 쉽게 알아보기 본문

문법

프로세스(Process) vs 스레드(Thread)를 쉽게 알아보기

코딩 화이팅 2025. 3. 20. 17:58

프로세스?

  • 사전적 의미 : 실행 중인 프로그램
  • 독립적인 작업 단위(실행 중인 프로그램)
  • 운영체제가 관리
  • 자신 만의 메모리 공간이 따로 있다.
  • 다른 프로세스와 메모리를 공유하지 않는다.(독립적)
  • 예시 
    • 컴퓨터에서 Chrome 브라우저를 켰다. 그러면 'Chrome.exe' 라는 프로그램이 실행
      => 이 실행 중인 프로그램이 바로 프로세스.
    • 카카오톡을 실행했다고 했을 때, 카카오톡이라는 프로세스가 하나 만들어지는 것

프로세스의 쉬운 비유

  • 회사에서 여러 개의 사무실을 생각했을 때
  • 회사 안에는 각 부서(팀)이 따로 있다.(영업팀, 개발팀, 마케팅팀..등)
  • 이 각 부서가 '프로세스'
  • 각 부서는 자기만의 사무실(메모리 공간)을 가지고 있다.
  • 다른 부서(프로세스)와 공간을 공유하지 않는다.
  • 결론
    • 프로세스는 운영체제가 관리하는 독립적인 작업 단위
    • 각 프로세스는 자기만의 메모리 공간을 사용한다.

스레드?

  • 사전적 의미 : 프로세스 안에서 실행되는 하나의 작업 흐름
  • 한 프로세스 안에는 여러 개의 스레드가 있을 수 있다.
  • 모든 스레드는 프로세스의 메모리를 공유한다.
  • 예시
    • Chrome 브라우저(프로세스)를 실행했을 때 브라우저에서는 여러 개의 탭을 열어 동영상 재생, 웹 사이트 띄우기, 다운로드 등 많은 작업을 동시에 가능
      => 이렇게 여러 작업이 동시에 돌아가는 이유가 스레드 때문
    • 스레드는 프로세스 안에서 실제 일을 하는 단위

스레드의 쉬운 비유

계속해서 회사에 비유한다면

  • 프로세스 = 회사의 부서(팀)
  • 스레드 = 부서에서 일하는 직원들
  • 영업팀(프로세스) 안에는 여러 명의 직원(스레드)이 있다.
  • 각 직원(스레드)은 같은 사무실(메모리 공간)을 공유하면서 일한다.
  • 즉, 한 프로세스 안에서 여러 스레드가 같은 데이터(메모리)를 공유하면서 협력해서 작업하는 것
  • 결론
    • 스레드는 프로세스 안에서 실제로 일을 수행하는 단위
    • 같은 프로세스 안에 여러 개의 스레드가 있을 수 있고, 이들은 같은 메모리를 공유

결론

  프로세스(Process) 스레드(Thread)
정의 실행 중인 프로그램 프로세스 내부에서 실행되는 작은 작업 단위
메모리 각 프로세스는 독립적인 메모리 공간을 가짐 같은 프로세스 내에서 메모리를 공유
통신 방식 프로세스끼리는 메모리를 공유하지 않으므로 통신이 어려움(IPC 필요) 같은 프로세스 안에 있기 때문에 공유된 메모리를 통해 쉽게 통신 가능
독립성 하나의 프로세스가 죽어도 다른 프로세스에는 영향 없음 하나의 스레드가 오류로 종료되면 같은 프로세스 내 다른 스레드도 영향을 받을 수 있음
예시 크롬 브라우저, 카카오톡, VS Code 실행 크롬 브라우저 내 여러 개의 탭, 카카오톡에서 메시지 송수신과 파일 전송

멀티스레드란?(Multi-threading)

멀티스레드란 하나의 프로세스 내에서 여러 개의 스레드가 동시에 실행되는 것을 의미

즉 하나의 프로그램이 여러 작업을 동시에 수행할 수 있도록 하는 기술

쉬운 예)

  • 연극을 하는 배우(스레드)와 무대(프로세스)
    • 프로세스(Process) : 연극 무대 전체(하나의 독립적인 프로그램)
    • 스레드(Thread) : 배우 (각 스레드는 독립적으로 행동 가능)
  • 싱글스레드는 배우가 한 명이라 한 번에 하나의 대사만 말할 수 있다.
  • 멀티스레드여러 배우가 동시에 대사를 말할 수 있다. -> 작업이 병렬적으로 수행된다.

싱글스레드 vs 멀티스레드 차이점

  • 싱글스레드(Single-thread)
    • 하나의 스레드만 실행 -> 하나의 작업이 끝나야 다음 작업 실행 가능
    • 실행 속도가 상대적으로 느림
    • 예 : 한 명의 요리사가 한 명씩 주문을 받고 요리를 하는 경우
      -> 손님이 많아지면 대기 시간이 길어짐
  • 멀티스레드(Multi-thread)
    • 여러 개의 스레드가 동시에 실행
    • 여러 작업을 동시에 수행할 수 있다. -> CPU 자원을 효율적으로 활용
    • 예 : 여러 요리사가 동시에 여러 개의 요리를 만드는 경우
      -> 손님이 많아도 요리가 동시에 진행되어 더 빠르다.

멀티스레드의 장점

  • CPU 활용 극대화 -> 여러 작업을 동시에 처리하여 성능 향상
  • 작업 속도 향상 -> 시간이 오래 걸리는 작업을 동시에 실행 가능
  • 응답성 향상 -> UI 프로그램에서 버튼 클릭 후에도 다른 작업 수행 가능
  • 리소스 공유 가능 -> 하나의 프로세스 내에서 같은 메모리를 공유 가능

멀티스레드의 단점

  • 동기화 문제 : 여러 스레드가 동시에 같은 데이터에 접근하면 데이터 충돌 발생 가능
  • 디버깅 어려움 : 실행 순서가 매번 다르므로 오류 찾기가 어려움
  • 컨텍스트 스위칭 비용 : 너무 많은 스레드를 사용하면 오히려 성능이 저하될 수도 있다.

'문법' 카테고리의 다른 글

쿠키 vs 세션 vs 토큰  (0) 2025.03.27
Java의 예외 처리  (0) 2025.03.24
JVM(Java Virtual Machine)  (1) 2025.03.24
자바 스레드(Thread)?  (0) 2025.03.24