728x90
쓰레드란?
- CPU 이용의 기본 단위
- 프로세스 내에서 실행되는 기본 단위
- light weight process
- 프로세스와 쓰레드
- 전통적인 프로세스는 하나의 쓰레드를 가지고 있다.
- 프로세스가 여러 쓰레드를 가지면 동시에 여러개의 작업을 수행할 수 있다.
- 특히 멀티 프로세서 시스템에서 쓰레드들을 다른 프로세서에서 실행시킬 수 있다. CPU2개면 1개는 main, 한개는 run 실행
- 같은 프로세스에 속한 쓰레드들은 프로세스의 코드, 데이터, 열린 파일 등을 공유함
- 각 쓰레드는 각자 레지스터 집합(switch를 계속해서) 스택을 가짐
단일 쓰레드: 전통적
다중 쓰레드 : 현재
장점
- 빠른 응답성: 수행하다가 중단되어도 다른 부분이 계속 수행할 수 있다.
- 자원 공유: 쓰레드는 속해있는 프로세스의 메모리 및 자원을 공유
- 경제성: 프로세스내에서 생성되며 비용이 적게 든다.
- 멀티프로세서의 활용: 각 쓰레드가 다른 CPU에서 수행될 수 있으므로 멀피프로세서의 여러 CPU를 활용할 수 있다.
쓰레드 구현 방식
1. 사용자 수준의 쓰레드 라이브러리 : 라이브러리에서 쓰레드를 관리하며 응용프로그렘에게 쓰레드 생성등 함수 제공
2. 커널 쓰레드: 쓰레드를 커널에서 직접한다. 운영체제가 쓰레드 생성 등의 쓰레드 관리를 위한 시스템 호출을 제공
다중 쓰레딩 모델
One-to-One model
- 각 사용자 수준 쓰레드가 하나의 커널 쓰레드에 대응됨
- 한 쓰레드가 시스템 호출을 하여 중지 상태가 되었을 때 다른 쓰레드가 실행될 수 있다.
- 여러 쓰레드들을 다중 프로세서에서 병렬로 실행할 수 있다.
- 각 쓰레드마다 커널 쓰레드를 만들어야 하므로 커널에 오버헤드가 된다. 커널은 생성할 수 있는 쓰레드 개수를 제한하여 오버헤드를 제한한다
Many-to-One model
- 여러 개의 사용자 수준 쓰레드가 하나의 커널 쓰레드에 대응된다.
- 사용자 수준의 쓰레드 라이브러리에서 쓰레드를 관리한다
- 한 쓰레드가 시스템 호출을 하면, 전체 쓰레드가 중지 상태가 됨 : 멀티 프로세스 X
- 쓰레드들을 다중 프로세서에서 병렬로 실행할 수 없다. One To One 과 차이
- 처음 호출때만 Clone 두번째부터는 X
Many-to-Many model
728x90