Thread 개념
응용프로그램 |
API/라이브러리, 플랫폼, 쉘, 컴파일러 |
OS |
HW |
- 1 응용프로그래머
- 2 시스템 프로그래머
- API 사용법
- OS (윈도우는 소스가 달라서 이해가 안되는게 있을수도 있다.)
- 3 하드웨어 개발자
Thread (스레드)
- Light Weight Process 라고도 함
- 프로세스
- 프로세스 간에는 각 프로세스의 데이터 접근이 불가
- 스레드
- 하나의 프로세스에 여러개의 스레드 생성 가능
- 스레드들은 동시에 실행 가능
- 프로세스 안에 있으므로, 프로세스의 데이터를 모두 접근 가능
- Thread는 각기 실행이 가능한 stack 존재
Process VS Thread
Thread 는 스택에 각각의 영역을 가지고 있는 함수이다
* 각 Thread에 존재하는 stack point 와 pc 를 가지고 있다. (SP , PC)
* HEAP , BSS , DATA , CODE 를 공유한다 (프로세스와 다른점)
* IPC를 사용하지않고도 공유하고 있다 .
Multi Thread (멀티 스레드)
- 소프트웨어 병행 작업 처리를 위해 Multi Thread를 사용함
멀티 프로세싱과 Thread
출처: http://donghoson.tistory.com/15
- 최근 CPU는 멀티 코어를 가지므로, Thread를 여러 개 만들어, 멀티 코어를 활용도를 높임
- 멀티 태스킹
- 멀티 프로세싱 (병렬식)
- 하나의 프로세스에 여러개에 CPU를 사용 (Thread를 여러개 만든다.)
- 여러개의 프로세스를 조금씩나눠서 여러개 CPU에 실행
- 하나의 프로세스 하나의 Thread
- 하나의 프로세스 여러개의 Thread
- 여러개의 프로세스 하나의 Thread
- 여러개의 프로세스 여러개의 Thread (요즘 방식 ... 윈도우 리눅스 맥 )
Thread 장점
1. 사용자에 대한 응답성 향상
2. 자원 공유 효율
- IPC 기법과 같이 프로세스간 자원 공유를 위해 번거로운 작업이 필요 없음
- 프로세스 안에 있으므로, 프로세스의 데이터를 모두 접근 가능
3. 작업이 분리되어 코드가 간결
Thread 단점
- 스레드 중 한 스레드만 문제가 있어도, 전체 프로세스가 영향을 받음
- 멀티 프로세스
- 스레드를 많이 생성하면, Context Switching이 많이 일어나, 성능 저하
- 리눅스 OS에서는 Thread를 Process와 같이 다룸
- Thread를 많이 생성하면, 모든 스레드를 스케쥴링해야 하므로, Context Switching이 빈번할 수 밖
에 없음
Thread vs Process
- 프로세스는 독립적, 스레드는 프로세스의 서브셋
- 프로세스는 각각 독립적인 자원을 가짐, 스레드는 프로세스 자원 공유
- 프로세스는 자신만의 주소영역을 가짐, 스레드는 주소영역 공유
- 프로세스간에는 IPC 기법으로 통신해야 함, 스레드는 필요 없음
PThread
- POSIX 스레드(POSIX Threads, 약어: PThread)
- Thread 관련 표준 API
정리
- Thread 개념 정리
- 프로세스와 달리 스레드간 자원 공유
- 스레드 장점CPU 활용도를 높이고
성능 개선 가능
응답성 향상
자원 공유 효율 (IPC를 안써도 됨)
- 스레드 단점
하나의 스레드 문제가, 프로세스 전반에 영향을 미침
여러 스레드 생성시 성능 저하 가능
댓글 영역