.etc/Computer Fundamentals

[운영체제 07] Thread(스레드) - 프로세스와의 비교

Jueun Park 2020. 11. 9. 19:26

::: Thread :::

Light Weight Precess

하나의 프로세스안에 여러개의 스레드를 만들 수 있다.

같은 프로세스 안에 있으므로, 스레드끼리는 데이터 접근이 가능함.

(서로 다른 프로세스끼리는 접근이 불가능함.)

 

스레드의 공간 활용

부모 프로세스와 Stack 나머지 부분을 공유한다.

스레드A 부모 프로세스 스레드B
Code 영역 (공유)
Data 영역 (공유)
Heap 영역 (공유)
A thread Stack 영역 Stack 영역 B thread Stack 영역

 


멀티 프로세싱 VS 멀티 스레드(Thread)

  • 멀티 태스킹 : 한대의 CPU로 여러개의 프로세스를 실행하는 것.
  • 멀티 프로세싱 : 여러대의 CPU가 하나의 job을 나누어 하는 것.(멀티코어)
  • 멀티 Thread: 최근 CPU는 멀티 코어를 가지므로, Thread를 여러 개 만들어 멀티코어 활용도를 높임

➜ 멀티 프로세싱에 멀티 스레드까지 이용하면 병렬성이 증가됨.

Thread 장점

  • 사용자에 대한 응답성 향상(A thread가 다른 일을 하는 동안, B thread가 사용자와 커뮤니케이션 하도록 할 수 있다.)
  • 자원 공유가 효율적이다.(프로세스간의 자원 공유에 필요한 IPC기법이 필요없음)
  • 작업의 분리로 코드를 간결하게 짤 수 있다.(코드 바이 코드)

Thread 단점

  • 스레드 중 하나만 문제가 있어도 전체 프로세스가 영향을 받는다. (멀티 프로세스는 문제가 있는 프로세스만 단독으로 영향받음)
  • 스레드를 너무 많이 생성하면, Context Switching이 많이 일어나 성능이 저하된다.
  • 리눅스 OS에서는 Thread를 Process와 같이 다룬다.(스케쥴링할 대상이 늘어남)

Thread와 Process의 비교

Thread Process
프로세스의 서브셋 각 프로세스가 독립적
프로세스 자원 공유 각각 독립적인 자원을 가짐
주소영역 공유 자신만의 주소영역을 가짐
통신 기법이 따로 필요없음 IPC로 통신 해야 함

POSIX

POSIX 스레드(POSIX Thread, 약어 PThread)

유닉스 계열 시스템에서 일반적으로 사용하는 Thread 관련 표준 API