CS 스터디/운영체제

[쓰레드] 3. 멀티코어와 멀티쓰레딩

doobi 2023. 7. 20. 19:38

멀티코어 상에서의 소프트웨어 성능

멀티코어 구조의 잠재적인 성능 향상은 응용이 이용 가능한 병렬 자원을 효율적으로 이용할 수 있는 능력에 영향을 받는다. 

 

멀티 코어 구조가 속도 향상에 도움이 되지만, 실행시간이 본래부터 순차적으로 동작하는(병렬화 할 수 없는) 코드의 영향을 받는다. 

순차적으로 작동하는 코드가 10%일 때, 속도 향상은 순차적으로 작동하는 코드가 0%일 때에 비해서 절반 정도가 된다. (8 -> 4.7)

또한 소프트웨어는 일반적으로 멀티프로세서들 간의 통신 및 작업 분배와 캐시 일관성 유지를 위한 추가 작업의 결과로 오버헤드를 발생시킨다.  

 

이러한 문제 해결하기 위해서 노력해왔고, 현재는 효과적으로 멀티코어 시스템을 이용할 수 있는 응용들이 많이 있다. 

 

  • 멀티쓰레드화된 네이티브 응용 : 소수의 고도로 쓰레드화 된 프로세스를 갖는 특징을 갖는다.
  • 멀티프로세스 응용: 다수의 단일 쓰레드화된 프로세스들이 존재하는 특징을 갖는다.
  • 자바 응용: 근본적인 방식으로 쓰레딩을 포함. 
  • 멀티인스턴스 응용: 개별적인 응용이 많은 수의 쓰레드를 사용해서 속도를 향상시키지 못할지라도 다수의 응용 인스턴스를 멀티코어 구조상에서 병렬적으로 실행함으로써 속도 향상 가능