본문 바로가기
컴퓨터공학/운영체제&컴퓨터구조

멀티쓰레드란

by 바코94 2019. 11. 2.

쓰레드란 cpu의 실행 단위이자 경량의 프로세스라고 생각하면 편하다.

우선 쓰레드를 사용하는 이유는 프로세스간 switch context overhead가 크고 프로세스간 데이터 통신시에 비용이 큰 것 등 여러가지 성능 이슈와 관련되어 나오게 된 개념이다.

 

쓰레드는 프로세스 하나를 기준으로 여러 개를 만들 수 있게 된다. 즉, 부모는 프로세스 하나며 자식들이 여러 개의 쓰레드가 된다.

이렇게 되면 부모의 자원들을 여러 쓰레드가 공용으로 사용할 수 있어서 쓰레드간 데이터 통신 비용이 적다.

또한 아래 그림의 F) multicore with hyper-threading tech 를 보면 각 코어 별로 cpu state를 별도로 가지고 있다. 이렇게 되면 동일 코어에서 두 개의 쓰레드가 계속해서 스케줄링 되면 context switch가 발생했을 때 사용하는 cpu state만 다른 것을 쓰는 정보만으로 사용할 register 정보를 전환할 수 있다. 

 

멀티쓰레드를 지원하지 않는 E의 경우는 쓰레드가 두개 인 상황을 생각해보자. 이 상황에서 A쓰레드를 실행하고 있다가 B 쓰레드를 실행하면  context switch를 위해서 의 cpu state 대신 새로운 쓰레드를 위한 cpu state로 세팅해야 한다. 

 

 

 

 

'컴퓨터공학 > 운영체제&컴퓨터구조' 카테고리의 다른 글

/proc/cpuinfo  (0) 2019.11.16
멀티 코어란?  (0) 2019.11.02