울음참고 개발공부
article thumbnail
728x90

 

 

 

스레드(Thread)와 프로세스(Process)의 차이

 

 

스레드(thread)와 프로세스(process)는 컴퓨터에서 동작하는 실행 단위입니다. 하지만 각각은 서로 다른 특성과 목적을 가지고 있습니다. 이들의 주요 차이점은 다음과 같습니다

 

 

 

[ 정의

 

 

프로세스 

 

" 실행중인 프로그램으로, 메모리에 로드되어 독립적으로 실행되는 작업 단위 "

각각의 프로세스는 자체 메모리 공간과 시스템 자원(파일, 레지스터 등)을 가지며, 다른 프로세스와는 독립적으로 실행됨

 

 

스레드 

 

" 프로세스의 자원을 공유하면서 프로세스 내에서 동작하는 작은 실행 단위 "

한 프로세스 내에서 여러개의 스레드가 동시에 작업을 수행할 수 있으며, 이들은 같은 프로세스 내의 주소 공간과 자원에 접근할 수 있음

 

 

+ ) 추가 

thread 개념 

- 애플리케이션 코드를 하나하나 순차적으로 실행하는 것은 쓰레드이다.
- 예시로 자바 메인 메서드를 처음 실행하면 main 이라는 이름의 쓰레드가 실행된다
- 쓰레드가 없다면 자바 애플리케이션 실행이 불가능하다
- 쓰레드는 한번에 하나의 코드 라인만 수행한다
- 동시 처리가 필요하면 쓰레드를 추가로 생성해야한다

출처 : 인프런 - 스프링 MVC 1편 백엔드 웹 개발 핵심 기술 

 

 

 

[ 차이점 ]

 

 

1. 자원 공유 측면

 

  • 프로세스
    • 독립적인 메모리 공간을 가지기 때문에, 다른 프로세스와 메모리를 공유하기 위해서는 별도의 통신 메커니즘이 필요함
    • 이로 인해 프로세스 간의 자원 공유가 비교적 어렵고 느릴 수 있음 
  • 스레드
    • 프로세스 내에서 동작하기 때문에 같은 프로세스에 속한 스레드들은 프로세스의 자원을 바로 공유함
    • 이로 인해 스레드간의 데이터 교환과 자원 공유가 간단하고 빠르게 이루어질 수 있음

 

 

2. 생성과 종료

 

  • 프로세스
    • 독립적인 실행 단위이기 때문에, 개별 프로세스는 서로 영향을 주지 않고 생성되거나 종료할 수 있음
  • 스레드
    • 하나의 프로세스 내에서 실행되기 때문에, 스레드를 생성하거나 종료하는 것은 프로세스의 다른 스레드들에게 영향을 미칠 수 있음

 

 

3. 오버헤드

 

  • 프로세스 
    • 프로세스 간의 전환은 운영체제에 의해 수행되며, 이로 인해 상대적으로 오버헤드가 큼
  • 스레드
    • 스레드 간의 전환은 프로세스의 주소 공간을 공유하므로, 오버헤드가 비교적 작음

 

 

4. 안전성

 

  • 프로세스
    • 독립된 메모리 공간을 가지기 때문에, 하나의 프로세스가 오류로 인해 종료되더라도 다른 프로세스에는 영향을 미치지 않음
  • 스레드
    • 프로세스 내에서 실행되기 때문에, 하나의 스레드가 오류로 인해 종료되면 해당 프로세스 전체가 영향을 받을 수 있음 

 

 

 

스레드와 프로세스 차이에 대한 이해를 돕기 위한 예시

상황 : 자동차를 생산하는 공장 라인

자동차를 만들기 위한 공장 라인에 여러개의 독립적인 작업 공정들이 존재한다.
엔진 조립, 차체 부착, 도장 작업 등 각각의 작업들은 독립적으로 실행되며, 하나의 작업이 끝나면 다음 작업으로 이어진다. 이때 각 작업은 독립된 프로세스로 볼 수 있다.

작업 중에 하나인 자동차 조립 작업에서 여러 작업자가 동시에 특정 부품을 조립하거나 검사하는 등의 작업을 수행할 수 있다.이때 하나의 자동차 조립 작업은 프로세스가 되고, 그 안에서 작업하는 작업자들은 스레드가 된다.

 

 

728x90
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!