Just do IT
article thumbnail

Thread (스레드)

   Light Weight Process 라고도 함

   프로세스 : 프로세스 간에는 각 프로세스의 데이터 접근이 불가

   스레드 

     - 하나의 프로세스에 여러개의 스레드 생성 가능

     - 스레드들은 동시에 실행 가능

     - 프로세스 안에 있으므로, 프로세스의 데이터를 모두 접근 가능

   Thread는 각기 실행이 가능한 stack이 존재한다

 

Multi Thread (멀티 스레드)

   소프트웨어 병행 작업 처리를 위해 Multi Thread를 사용함

 

멀티 프로세싱 & 멀티 태스킹 & Thread

   최근 CPU는 멀티 코어를 가지므로 Thread를 여러 개 만들어 멀티 코어의 활용도를 높였다

 

Thread의 장점

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

   2. 자원 공유 효율

     IPC 기법과 같이 프로세스간 자원 공유를 위해 번거로운 작업이 필요 없다

     프로세스 안에 있으므로 프로세스의 데이터를 모두 접근 가능하다

   3. 작업이 분리되어 코드가 간결하다 (사실 작성하기 나름)

 

Thread의 단점

   1. 스레드 중 한 스레드만 문제가 있어도 전체 프로세스가 영향을 받는다

   2. 스레드를 많이 생성하면 Context Switching이 많이 일어나 성능이 저하된다

    예: 리눅스 OS에서는 Thread를 Process와 같이 다룬다

    스레드를 많이 생성하면 모든 스레드를 스케줄링 해야 하므로 Context Switching이 빈번할 수 밖에 없다

 

Thread vs Process

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

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

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

   프로세스 간에는 IPC 기법으로 통신해야 함, 스레드는 필요 없음

 

Pthread

   POSIX 스테드 (POSIX Threads, 약어 : Pthread)

   Thread 관련 표준 API

 

 정리

   Thread 개념 정리

     - 프로세스와 달이 스레드간 자원 공유

   스레드 장점

     - CPU 활용도를 높임

     - 성능 개선 가능

     - 응답성 향상

     - 자원 공유 효율 (IPC를 안써도 됨)

   스레드 단점

     - 하나의 스레드 문제가 프로세스 전반에 영향을 미침

     - 여러 스레드 생성시 성능 저하 가능

 

출처 : 제로베이스

profile

Just do IT

@AmyG

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