멀티스레딩: 두 판 사이의 차이

12 바이트 제거됨 ,  9년 전
편집 요약 없음
잔글 (봇: 인터위키 링크 15 개가 위키데이터d:q1064412 항목으로 옮겨짐)
편집 요약 없음
# '''경제성''' : 프로세스 생성에 메모리와 자원을 할당하는 것은 비용이 많이 든다. 스레드는 자신이 속한 프로세스의 자원들을 공유하기 때문에, 스레드를 생성하고 문맥교환을 하는 편이 보다 경제적이다.
# '''멀티프로세서 활용''' : 멀티프로세서 구조에서는 각각의 스레드가 다른 프로세서에서 병렬로 수행될 수 있다. 단일 스레드 프로세스는 CPU가 많아도 CPU 한개에서만 실행된다. 즉, 다중 스레드화를 하면 다중 CPU에서 병렬성이 증가된다.
 
=== 단점 ===
* 다중 스레드는 [[캐시]]나 [[변환 색인 버퍼]](TLB)와 같은 하드웨어 리소스를 공유할 때 서로를 간섭할 수 있다.
=== 일-대-일(One-to-One) ===
사용자 스레드들을 각각 하나의 커널 스레드로 매핑시키는 방식이다. 사용자 스레드가 생성되면 그에 따른 커널 스레드가 생성되는 것이다. 이렇게 하면 다-대-일 방식에서 시스템 호출 시 다른 스레드들이 중단되는 문제를 해결할 수 있으며 여러 개의 스레드를 다중처리기에 분산하여 동시에 수행할 수 있는 장점이 있다. 그러나 커널 스레드도 한정된 자원을 사용하므로 무한정 생성할 수는 없기 때문에, 스레드를 생성할 때 그 개수를 염두에 두어야 한다.
 
=== 다-대-다(Many-to-Many) ===
여러 개의 사용자 스레드를 여러 개의 커널 스레드로 매핑시키는 모델이다. 다-대-일 방식과 일-대-일 방식의 문제점을 해결하기 위해 고안되었다. 커널 스레드는 생성된 사용자 스레드와 같은 수 또는 그 이하로 생성되어 스케줄링한다. 다-대-일 방식에서 스레드가 시스템 호출시 다른 스레드가 중단되는 현상과 일-대-일 방식에서 사용할 스레드의 수에 대해 고민하지 않아도 된다. 커널이 사용자 스레드와 커널 스레드의 매핑을 적절하게 조절한다.
 
{{CPU 기술}}
{{병렬 컴퓨팅 주요 분야}}
 
[[분류:중앙 처리 장치]]