쓰레드(Thread)

zzzzzang_gu·2023년 3월 9일

cs이론

목록 보기
7/13

쓰레드란?

프로세스 내에서 실행되는 흐름의 단위 혹은 CPU 스케줄링의 기본 단위 라고 할 수 있다. 쓰레드는 다음과 같은 특징을 가지고 있다. 쓰레드는 프로세스 내에서 Code, Data, Heap 영역을 공유한다

  • 프로세스 : 프로세스 간 서로 접근 불가(IPC 사용하여 소통) , 멀티 프로세스/ 병렬실행 (여러개의 코어로 빠르게 작동)

  • 쓰레드 : 하나의 프로세스에 여러개의 쓰레드 생성 가능, 스레드들은 동시에 실행 가능하고 프로세스 안에 있으므로 프로세스의 데이터에 모두 접근이 가능하다.

  • 멀티 쓰레드 :쓰레드는 함수로 구현이 된다. 각각의 스택 영역을 가질 수 있고, IPC기법 없이 공유가 가능하다.

쓰레드의 장점과 단점

장점

1. 사용자에 대한 응답성/성능 향상

process 1

  • 쓰레드 A : 특정 작업을 진행
  • 쓰레드 B : 사용자와 커뮤니 케이션

2. 자원 공유 효율

프로세스 안에 있어 별도 공간이 필요없어 자원 공유 효율이 높다. (IPC 기법 필요 X)

3. 작업이 분리되어 코드가 간결


단점

  • 쓰레드 중 한 쓰레드만 문제가 있어도 전체 프로세스에 영향을 끼침

  • 쓰레드를 많이 생성하면 Context Switching이 자주 일어나 성능이 저하

  • 동기화 이슈로 비정상적으로 동작 가능 -> 동기화 코드를 별도로 추가해야됨


쓰레드 vs 프로세스 정리

  • 프로세스는 독립적, 쓰레드는 프로세스의 서브셋

  • 프로세스는 각각 독립적인 자원을 가짐, 쓰레드는 프로세스 자원 공유

  • 프로세스는 자신만의 주소 영역을 가짐, 쓰레드는 주소 영역 공유

  • 프로세스 간에는 IPC기법으로 통신, 쓰레드는 필요X

0개의 댓글