프로세스와 스레드의 차이점은 무엇일까?

hoon·2023년 2월 14일
0

Thread (스레드)

스레드는 Light Weight Process라고도 하며 프로세스의 실행가능한 최소단위를 말한다. 프로세스는 프로세스 간에는 각 프로세스의 데이터 접근이 불가한 반면, 스레드는 하나의 프로세스에 여러 개의 스레드 생성이 가능하며 동시에 실행하는 것 역시 가능하다. 또한, 스레드는 프로세스 안에 있기 때문에 프로세스의 데이터를 모두 접근 가능하다.

Multi Thread(멀티 스레드)

소프트웨어 병행 작업 처리를 위해 멀티스레드를 이용하여 스레드가 프로세스의 데이터를 공유할 수 있도록 한다.

이를 활용한 멀티 스레딩은 프로세스 내 작업을 여러 개의 스레드, 멀티 스레드로 처리하는 기법이며 스레드간 자원을 공유하기 때문에 효율성이 높다.

멀티 프로세싱과 스레드

  • 최근 CPU는 멀티 코어를 가지므로 스레드를 여러 개 만들어 멀티 코어 활용도를 높인다.
  • 최근에는 짧은 반응 시간이 우선이기 때문에 성능 개선에 신경을 많이 쓰기 때문에 멀티 프로세스 또는 멀티 스레드를 많이 고려한다.
  • 멀티 프로세스보다 스레드를 자연스럽게 더 많이 사용한다. 멀티 프로세스는 처음 구조를 잡을 때 만들어야 하지만, 스레드는 프로그램의 일부 동작에서만 사용하도록 일부 코드 수정으로 가능하기 때문이다.

스레드의 장점

  • 사용자에 대한 응답성 향상 (성능 향상)
    • A스레드에서는 특정 작업을 하고 B스레드에서는 사용자와 커뮤니케이션을 할 수 있다.
  • 자원 공유 효율
    • IPC 기법과 같이 프로세스간 자원 공유를 위해 번거로운 작업이 필요 없다 (프로세스는 필요하다)
    • 프로세스 안에 있기 때문에 프로세스의 데이터에 모두 접근 가능하다
  • 작업이 분리되어 코드가 간결하다.

스레드의 단점

  • 스레드 중 한 스레드만 문제가 있어도 전체 프로세스가 영향을 받는다.
  • 스레드를 많이 생성하면 컨텍스트 스위칭이 많이 일어나서 성능 저하를 초래할 수 있다.
    • ex) 리눅스 OS에서는 스레드를 프로세스와 같이 다루기 때문에 스레드를 많이 생성하면, 모든 스레드를 스케쥴링 해야 하므로 컨텍스트 스위칭이 빈번할 수 밖에 없다.
  • 동기화 이슈로 비정상적으로 동작할 수 있다 (동기화 코드를 적절히 추가해줘야 한다)

스레드 VS 프로세스

  • 프로세스는 독립적이며, 스레드는 프로세스의 서브셋이다.
  • 프로세스는 각각의 독립적인 자원을 가지며, 스레드는 프로세스 자원을 공유한다.
  • 프로세스는 자신만의 주소영역을 가지며, 스레드는 주소 영역을 공유한다.
  • 프로세스간에는 IPC 기법으로 통신해야하며, 스레드는 필요없다.
profile
프론트엔드 학습 과정을 기록하고 있습니다.

0개의 댓글