728x90
반응형

스레드 개발 동기

DB 서버의 요구 처리

  • 과거 서버는 클라이언트 요구가 도착할 때마다, 새로운 프로세스를 생성 - fork()

단점

  • 프로세스 생성에 대한 오버헤드 (생성 비용 비쌈)
  • 프로세스간 통신 비용 큼(메시지 패싱, 공유 메모리)
  • 네트워크와 같은 자원 공유가 어려움
  • 프로세스를 처리기에 전달하고, 결과를 다시 수집하는 오버헤드

 

전통적인 PCB(Process Control Block) 구성


스레드 (Threads)

CPU 이용의 기본단위
  • 경량 프로세스 (LWP: Light Weight Process)
  • 애플리케이션 내에서 실행
  • 커널은 일반적으로 다중 스레드(Multi Thread)
  • 프로세스 생성은 무겁고, 스레드 생성은 가벼움

 

구성

  • 고유한 스레드 ID, 프로그램 카운터, 레지스터 집합, 스택 등
  • 같은 프로세스에 속한 다른 스레드와 코드, 데이터, 파일, 신호 와 같은 OS자원을 공유

 

장점

  • 응답성 (Responsiveness): 응답성 증가
  • 자원 공유 (Resource Sharing): 자원 소모가 감소
  • 경제성 (Economy)
    • 문맥교환의 내용은 PCB가 소유, 자원을 공유하기 때문에 문맥교환 속도 높음
  • 규모 적응성 (Scalability): 병렬성 증가

 

종류

단일 스레드 프로세스

하나의 스레드만 가진 프로세스

다중 스레드 프로세스

여러 개의 스레드를 가진 프로세스 → 다중 스레드

프로세스(Process) vs 스레드(Thread)


멀티 프로세스(Multi Process) vs 멀티 스레드(Multi Thread)


단일 코어 시스템에서의 동시 실행 (4개 스레드)

단일 코어 시스템에서의 동시 실행

 

여러개의 스레드로 동시 실행되지만 1개의 코어를 사용한다 → 유사 병렬성


다중 코어 시스템에서의 병렬 실행 (4개 스레드)

다중 코어 시스템에서의 병렬 실행

 

여러개의 스레드, 다중 코어를 통해 병렬실행을 할 수 있다.

728x90
반응형
HaSeon9