운영체제 스레드에 대해서 질문이요 .. 아무도 답변 안 달아주시길래 -_- 정말 몰라서 질문드려요
글쓴이: dydaktls002 / 작성시간: 월, 2013/04/15 - 6:41오전
다중처리기 시스템과 다-대-다 모델을 사용하여 작성된 다중 스레드 프로그램을 고려하자. 프로그램의 사용자 수준 스레드의 개수가 시스템의 처리기 개수 보다 많다고 가정하자. 다음과 같은 시나리오에서 성능 예측을 논의하시오.
a. 프로그램에 할당된 커널 스레드의 개수가 처리기 보다 많다.
b. 프로그램에 할당된 커널 스레드의 개수가 처리기의 개수와 같다.
c. 프로그램에 할당된 커널 스레드의 개수가 처리기의 개수 보다 훨씬 많지만 사용자 수준의 스레드 보다는 작다.
책 읽으면서 하는데 잘 모르겠네요 아시는분 댓글좀 부탁드려요
이 문제만 잘 모르겠습니다. 간단하고 쉽게 설명 부탁드립니다. 저 처리기가 들어가니 잘 모르겠습니다.
Forums:
각 커널 쓰레드를 어떤 처리기에 할당하느냐 하는 로드
각 커널 쓰레드를 어떤 처리기에 할당하느냐 하는 로드 밸런싱 정책에 따라 성능이 달라지겠지만, 커널 쓰레드는 모든 처리기에 균등하게 할당되었다고 가정하고 생각해보겠습니다.
b.
처리기 개수와 커널 쓰레드 개수가 동일하면, 처리기 하나당 커널 쓰레드 하나씩 할당하여 병렬 실행 할 수 있으므로 최적의 경우에 해당됩니다.
a. c.
어차피 처리기에서 실행되는 것은 커널 쓰레드이므로, 사용자 수준 쓰레드 개수는 고려 할 필요 없습니다.
커널 쓰레드의 개수가 처리기 개수보다 많아질수록, 각 처리기에 할당된 커널 쓰레드를 처리하기 위해 문맥 교환(Context Switch)이 빈번하게 발생됩니다. (스케쥴링 정책에 따라 차이가 나긴 합니다.)
문맥 교환은 비교적 고비용이므로 문맥 교환 횟수가 잦을수록 기대치보다 성능이 떨어집니다. 그래서, c의 경우는 다-대-다 모델에서 최악의 경우에 해당됩니다.
Just do it!