0%

스레드

Thread(스레드)

  • Light Weight Process라고도 함
  • 프로세스
    • 프로세스간에는 각 프로세스의 데이터 접근이 불가
  • 스레드
    • 하나의 프로세스에 여러개의 스레드 생성 가능
    • 스레드들은 동시에 실행 가능
    • 프로세스 안에 있으므로, 프로세스와 Date,Code,Heap영역은 공유하고 스레드 각자의 스택과 레지스터를 갖는다.
      Thread는 각기 실행이 가능한 stack이 존재한다.image-20200219194857183

Multi Thread(멀티 스레드)

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

멀티 프로세싱과 Thread

  • 멀티 태스킹과 멀티 프로세싱
  • 최근 CPU는 멀티코어를 가지므로, Thread를 여러 개 만들어, 멀티 코어의 활용도를 높임

멀티 스레딩

  • 말 그대로 프로세스내에서 하나의 스레드가 아닌 여러개의 스레드를 형성하여 명령어들을 처리하는걸 의미한다.

Thread 장점

  1. 사용자에 대한 응답성 향상
    image-20200220113259020
  2. 자원 공유 효율
    • IPC기법과 같이 프로세스간 자원 공유를 위해 번거로운 작업이 필요없음
    • 프로세스안에 있으므로, 프로세스의 데이터를 모두 접근 가능
  3. 작업이 분리되어 코드가 간결(이건 작성하기 나름이다.)

Thread 단점

  1. 스레드 중 한 스레드만 문제가 있어도, 프로세스 전체가 영향을 받음
  2. 멀티 프로세스image-20200220113537568
  3. 멀티 스레드image-20200220113556393
  4. 스레드를 많이 생성하면, Context Switching이 많이 일어나서 성능이 저하된다.
  5. 동기화 이슈로 비정상적으로 동작가능 ( 동기화 코드를 적절히 추가해줘야 한다. )

Thread vs Process

  • 프로세스는 독립적, 스레드는 프로세스의 서브셋
  • 프로세스는 각각 독립적인 자원을 가짐, 스레드는 프로세스 자원 공유
  • 프로세스는 자신만의 주소영역을 가짐, 스레드는 주소영역 공유
  • 프로세스간에는 IPC기법으로 통신해야 함, 스레드는 필요없음

정리

  • Thread개념정리
    • 프로세스와 달리 스레드간 자원 공유
  • 스레드 장점
    • CPU활용도를 높이고
    • 성능 개선 가능
    • 응답성 향상
    • 자원공유 효율(IPC를 안써도 됨)
  • 스레드 단점
    • 하나의 스레드가 문제될 시, 프로세스 전반에 영향을 미침
    • 여러 스레드 생성시 성능 저하 가능