문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 SMT (문단 편집) ==== 멀티스레딩의 종류 ==== 멀티스레딩에는 방식에 따라 크게 2가지로 구분한다. * '''일시적 멀티스레딩''' (TMT: Temporal Multi-Threading) 한 번에 하나의 스레드에서만 명령어를 실행하거나 작업을 수행할 수 있는 멀티스레딩으로, 대표적으로 협동형(비선점형) [[멀티태스킹]]처럼 하나의 스레드가 맡고 있는 일련의 명령어들이 먼저 다 수행한 다음에 다른 스레드가 수행하는 Coarse-grained 방식이 있고, 선점형 멀티태스킹처럼 하나의 스레드가 맡고 있는 일련의 명령어들을 먼저 다 수행하기도 전에 다른 스레드가 끼어들어 또 다른 명령어를 수행하면서 결과적으로 서로 다른 스레드들이 각자 맡고 있는 별개의 명령어들을 번갈아 수행하는 Fine-grained 방식이[* 이런 특징 때문에 Interleaved 방식의 멀티스레딩이라고도 부른다.]라는 하위 방식들이 있다. [[프로세스 스케줄링]]에 따라 일정 시간 단위로[* 크게는 어떤 스레드의 작업이 다 끝날 때까지의 걸리는 시간 단위부터 작게는 1사이클(1클럭)이라는 매우 세밀한 시간 단위까지 포함된다.] 여러 스레드들을 번갈아 가면서 동작하기 때문에 '시분할 멀티스레딩'이라고도 부르며, 싱글코어 싱글스레드 CPU에도 적용할 수 있는 방식이다. 쉽게 말해서 한 사람이 정해진 계획에 따라 여러 가지의 일들을 다 수행하는 방식이라고 보면 된다. '''한 마디로 멀티태스커인 [[1인 개발]]자'''. 좋게 말하면 적은 하드웨어 자원으로도 구현할 수 있는 방식이지만, 나쁘게 말하면 자원이 한정되어 있어서 프로그램 개별적인 성능이 떨어지는 단점이 있을 수밖에 없다. 그 대신 싱글코어 싱글스레드 CPU밖에 없었던 일반 가정용 PC에서도 여러 프로그램들을 같이 실행할 수 있는, 이른바 멀티태스킹이 가능하여 멀티태스킹이 불가능했던 시절보다 비교가 안 될만큼 훨씬 더 나은 [[사용자 경험]]([[UX]]: User Experience)을 제공할 수 있었다. * '''동시 멀티스레딩''' (SMT: Simultaneous Multi-Threading) 일시적 멀티스레딩과는 다르게 SMT는 여러 스레드들을 한꺼번에, 동시에 명령어들을 실행하거나 작업들을 수행할 수 있다는 차이점이 있다. 쉽게 말하면 혼자가 아닌 여러 사람이 여러 가지 일들을 분담해서 수행하는 것과 같다고 보면 된다. '''한 마디로 개발팀'''. 현재까지 가장 진보된 멀티스레딩 방식으로 '완전한 멀티스레딩'이라고 부르기도 하며, 이와 대비되는 일시적 멀티스레딩을 가짜 멀티스레딩이라고 부르기도 한다. 동시에 동작할 수 있기에 멀티태스킹도 일시적인 멀티스레딩보다 더 쾌적해져, 실행 중인 프로그램에서 다른 프로그램을 실행해도 기존 실행 중인 프로그램의 성능이 거의 떨어지지 않는다. 그야말로 병행 처리, 병렬 처리가 가능한 '완전한 멀티태스킹'. 하지만, 이를 구현하려면 CPU의 형태가 어떻든 여러 개의 스레드들을 한꺼번에 감당할 수 있는 자원이 필요하다는 단점이 있다. 하드웨어 자원의 문제는 곧 비용의 문제로 이어지기 때문. 하드웨어가 지원해도 소프트웨어도 이에 맞게 수행할 수 있게끔 프로그래밍해줘야 제대로 발휘할 수 있다. 거저먹을 수 있는 혜택이 아니라는 뜻이다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기