[OS] 스레드(Thread) 란?
1. Thread
- Light weight process 로 불림
- Process vs Thread
- 프로세스
- 프로세스 간에는 각 프로세스의 데이터 접근 불가능
- 스레드
- 하나의 프로세스에 여러 개의 스레드 생성 가능
- 스레드들은 동시에 실행 가능
- 프로세스 안에 있으므로, 프로세스 데이터 접근 가능
- 프로세스
1.1. MultiThread
- software 병행 작업 처리를 위해 멀티스레드 사용
1.2. Multi processing & Thread
- Multi tasking = 단일 CPU
- Multi processing = 다수의 CPU
- 최근 CPU는 멀티 코어를 가지므로, 스레드를 여러 개 만들어 멀티 코어로 활용도를 높임
2. Thread 장점
-
사용자에 대한 응답성 향상
-
자원 공유 효율
- IPC 기법과 같이 프로세스간 자원 공유를 위해 번거로운 작업이 필요없음, 프로세스의 데이터 접근 가능
3. Thread 단점
- 스레드중 한 개만 문제가 있어도, 전체 프로세스가 영향을 받음
- 스레드를 많이 생성하면 context switching이 많이 일어나 성능 저하
- 예: 리눅스 OS에서는 스레드를 프로세스와 같이 다룬다.
- 스레드를 많이 생성하면 모든 스레드를 스케줄링해야 하므로, context switching 이 빈번할 수 밖에 없음
4. Thread vs Process
프로세스 | 스레드 |
---|---|
독립적 | 프로세스의 subset |
각각 독립적인 자원을 가짐 | 스레드는 주소영역을 공유 |
자신만의 주소영역을 가짐 | 주소영역을 공유 |
프로세스간 IPC 통신 | IPC 통신 안함 |
- PThread (Posix Thread) : 스레드 관련 표준 API
참고
This is personal diary for study documents.
Please comment if I'm wrong or missing something else 😄.
댓글남기기