컴퓨터공학/운영체제&컴퓨터구조
멀티쓰레드란
바코94
2019. 11. 2. 17:49
쓰레드란 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로 세팅해야 한다.