하드웨어 스레드, OS 스레드, 네이티브 스레드, 커널 스레드, 유저스레드, 그린스레드

지식저장공간·2023년 3월 2일
0

운영체제

목록 보기
12/15

하드웨어 스레드, OS 스레드, 네이티브 스레드, 커널 스레드, 유저 스레드, 그린 스레드

하드웨어 스레드

코어의 연산 속도는 메모리보다 빠르기 때문에, 메모리에서 데이터를 보내는 시간을 기다리기 아쉽다.

메모리의 데이터를 기다리는 동안 다른 스레드를 실행하는건 어떨까?

코어는 연산 작업을 끝내고 메모리의 데이터를 기다린다.

따라서 한쪽 메모리 값을 기다릴 때 다른 한쪽에서 코어를 사용하도록 한다.
즉, 서로 다른 쓰레드를 실행시킨다. 각각을 하드웨어 스레드라 한다.

CPU 코어 1개당 스레드가 2개이다.

하드웨어 스레드 : OS관점에서는 가상의 코어, CPU의 스레드

OS 스레드

OS Kernel과 관련된 스레드

OS 스레드 : OS 커널 레벨에서 생성되고 관리되는 스레드
OS 스레드의 컨텍스트 스위칭은 커널이 개입 -> 비용발생 (유저모드 -> 커널모드)
사용자 코드와 커널 코드 모두 OS 스레드에서 실행된다.

커널 스레드

어떤 기술 문서에서는 OS 커널의 역할을 수행하는 스레드는 커널 스레드라 한다.

유저 스레드(=유저레벨 스레드)

User Program과 관련된 스레드

유저 스레드 : 스레드 개념을 프로그래밍 레벨에서 추상화 한 것

자바에서 스레드 객체를 생성하고 스레드를 실행시킨다. 자바 레벨에서 스레드를 추상화한다.
유저 레벨 스레드가 시스템 콜을 통해 OS 스레드를 사용하고 CPU상에서 실행된다.

유저 스레드와 OS 스레드 연결

One-to-One model

Java -> 유저 스레드와 OS 스레드가 1:1로 연결된다.
스레드 관리, 스케줄링을 OS에 위임한다. 스케줄링을 커널이 수행
만약 한 프로세스에 스레드가 2개 이상인 경우 한 스레드가 블락이 되도 다른 스레드는 잘 동작한다. 하지만, race condition의 위험이 존재한다.

Many-to-One model

컨텍스트 스위칭이 매우 빠르다.
why? 유저 스레드 레벨에서만 컨텍스트 스위칭이 발생하고, OS 레벨에서 컨텍스트 스위칭이 발생하지 않기 때문에, 프로세스간 컨텍스트 스위칭이 발생하지 않는다.

race condition의 가능성이 적다. 하지만, OS 스레드가 1개이기 때문에 멀티코어를 활용하지 못한다.

유저 스레드가 블락되는 순간 OS 스레드도 블락되기 때문에 한 스레드가 블락되면 모든 스레드가 블락된다 -> 해결 : non block I/O

Many-to-Many model

One-to-One, Many-to-One의 장점만을 사용하는 방식
구현이 어렵다.

다른의미의 유저 스레드

OS와는 독립적으로 유저 레벨에서 스케줄링되는 스레드
(기술 문서마다 차이가 존재한다.)

그린 스레드

기술문서 마다 차이가 존재하기 때문에 맥락을 잘 파악해야한다.
어떤 의미로는 유저 스레드와 같은 의미를 뜻한다.

OS와는 별개로 유저 레벨에서 자체적으로 관리되고 스케줄링 되는 스레드는 '유저 스레드' 혹은 '그린 스레드'로 불린다

출처 : 쉬운코드 유튜브

profile
발전하는 개발자가 꿈입니다. 지식을 쌓고 지식을 활용해 목표 달성을 추구합니다.

0개의 댓글