.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