Computer Science/Operating System

물리적 스레드 vs 논리적 스레드

Prower 2018. 11. 1. 15:02
728x90
반응형

두 스레드를 구분할 때 물리적과 논리적이라는 단어는 제가 임의로 붙인 단어입니다. 하드웨어적으로 구현된 스레드와 소프트웨어적으로 구현된 스레드를 구분하기 위함입니다.


[물리적 스레드]

- 물리적 스레드를 알기 전에 먼저 코어가 무엇인지 알아봅시다.

- 코어 : CPU에 내장된 처리회로. 명령어를 메모리에서 뽑아 해석하고 실행하는 반도체 유닛.

- CPU는 다수의 코어를 장착할 수 있습니다. 최근에 나오는 듀얼 코어(2코어), 쿼드 코어(4코어), 옥타 코어(8코어) 등이 그 개념입니다.

- 코어의 수가 증가할수록 CPU의 처리 속도는 빨라집니다. 싱글 코어에서 2번 해야될 연산을 듀얼 코어에서는 한번에 수행하여 완료할 수 있습니다. 다만, 코어가 증가할 수록 클럭(코어당 연산의 속도)가 낮아진다는 단점이 있습니다.

- 하지만 코어의 갯수가 많다 하더라도 실행하는 소프트웨어가 다중 코어 연산을 지원해야 합니다. 그렇지 않다면 쿼드 코어에서 실행하나 싱글 코어에서 실행하나 차이가 없을 것입니다.

- 코어의 개념을 알아봤으니 이제 물리적 스레드를 알아봅시다.

- 물리적 스레드 : 하나의 코어가 허용할 수 있는 스레드

- 과거에는 하나의 코어에 하나의 스레드로 데이터를 처리했습니다. 다시말해, 코어에서 동시에 실행 가능한(할당 가능한) 스레드 수가 1개였다는 의미입니다. 마치 1차선 도로와 같습니다.

- 인텔사에서는 스레드 하나로는 코어의 성능을 100%발휘할 수 없으니 여러 스레드를 동시에 적용시키자는 생각을 합니다. 

- 그 결과 코어에서 2개 이상의 스레드를 적용하여 프로그램을 실행할 수 있는 하이퍼 스레딩 개념이 발생합니다. 

컴퓨터 성능을 따질때 얘기하는 스레드가 바로 이것입니다. 1개의 코어의 2개의 스레드가 들어있다면 보통 2코어 4스레드, 4코어 8스레드 등으로 불립니다. 1개의 코어에서 2개의 스레드를 실행 가능하게 되는 것입니다.

- 이는 물리적 스레드이고 (통상적으로 우리가 생각하는)논리적 스레드 개념과는 다릅니다.


[논리적 스레드]

- 논리적 스레드는 물리적 스레드와 개념이  다릅니다

- 논리적 스레드 : 프로세스 내에서 실행되는 세부 작업의 단위. 프로세스 실행의 흐름.

- 논리적 스레드는 물리적 스레드와는 다르게 소프트웨어적으로 얼마든지 할당이 가능합니다.

- 운영체제가 스케쥴링을 할 때 동시에 실행 가능한 스레드 수(물리적 스레드)는 정해져 있습니다. 하지만 메모리가 허용하는 논리적 스레드 수는 얼마든지 많을 수 있습니다.

- 이들 중 운영체제에 의해 실행되지 않는 스레드는 잠들어 있을 수 있으며 운영체제는 이들 중 물리적 스레드가 허용 가능한 만큼의 스레드를 할당하여 동시에 실행시킵니다.

- 책에 비유하자면, 4코어 8스레드는 상/하권으로 분권된 책이 4세트(8권)있는 것과 같습니다. 이를 읽고 싶은 독자(논리적 스레드)는 수십 혹은 수백명이지만 도서관에서 빌릴 수 있는 사람은 최대 8명 입니다. 나머지는 책이 반납될때 까지 기다려야 합니다.


[결론]

- 다시말해, 논리적 스레드는 프로세스 처리의 세부 단위입니다. 프로그램에서 얼마든지 스레드를 할당할 수 있습니다. 하지만 이를 동시에 실행시키는 것은 코어의 몫입니다. 코어는 허용 가능한 갯수 만큼의 스레드를 깨워 실행시킵니다.


[참고 자료]

https://kldp.org/node/154708

- http://movefast.tistory.com/43#recentEntries

- https://m.post.naver.com/viewer/postView.nhn?volumeNo=9140043&memberNo=10558726



728x90
반응형