Thread 개념
프로세스는 프로세스 간에 각 프로세스의 데이트 접근 불가해서 IPC를 사용했어야 했다.
스레드는 하나의 프로세스에 여러개의 스레드 생성가능 ( 다른 프로세스에서 스레드끼리는 공유x )
스레드들은 동시에 실행가능.
프로세스 안에 있으므로, 프로세스의 데이터를 모두 접근 가능해서 IPC 사용 x
- Thread는 각기 실행이 가능한 stack 존재
스레드는 stack영역을 가지고 있는 함수라고 생각하면 된다.
각 스레드를 위한 stack 공간을 별도로 생성, 스레드 별로 PC 레지스터도 따로 존재한다.
stack 영역을 제외한 영역은 공유
Multi Thread
Code, Data, Heap 영역은 공유
스레드를 위한 stack 영역만 별도로 가지고 있다.
멀티 프로세싱과 Thread
멀티 프로세싱은 하나의 프로세스를 여러개의 CPU 사용해 실행속도 높임(병렬실행)
→ 프로세스를 여러개로 나눠서 개별 CPU에 나눠서 실행하는데 스레드를 여러개 만들면 가능하다.
Thread의 장점
1. 사용자에 대한 응답성 향상
2. 자원 공유 효율
- IPC 기법과 같이 프로세스 간 자원 공유를 위해 번거로운 작업 필요 없음
- 프로세스 안에 있으므로, 프로세스의 데이터를 모두 접근 가능
3. 작업이 분리되어 코드가 간결
Thread의 단점
1. 스레드 중 한 스레드만 문제가 있어도 전체 프로세스가 영향을 받음
2. 스레드를 많이 생성하면, Context Switching 이 많이 일어나, 성능 저하
예: 리눅스 OS에서는 Thread를 Process와 같이 다룸
스레드를 많이 생성하면 모든 스레드를 스케쥴링 해야 하므로, Context Switching이 빈번할 수밖에 없음.
Thread VS Process
- 프로세스는 독립적, 스레드는 프로세스의 서브셋
- 프로세스는 각각 독립적인 자원을 가짐, 스레드는 프로세스 자원 공유
- 프로세스는 자신만의 주소영역을 가짐, 스레드는 주소영역 공유
- 프로세스간에는 IPC 기법으로 통신해야 함, 스레드는 필요 없음
PThread
- POSIX 스레드 : 스레드 관련 표준 API
정리
Thread 개념 정리
- 프로세스와 달리 스레드간 자원 공유
스레드 장점
- CPU 활용도를 높이고
- 성능 개선 가능
- 응답성 향상
- 자원 공유 효율(IPC를 안써도 됨)
스레드 단점
- 하나의 스레드에서 발생한 문제가, 프로세스 전반에 영향을 미침
- 여러 스레드 생성시 성능 저하 가능
제로베이스 컴퓨터 공학 전공자 따라잡기 강의 시청 후 정리한 내용입니다.