Search
moon
sun

스레드의 종류

키워드
스레드
운영체제

알고 싶은 점

•
컴퓨터 스펙에서 말하는 스레드와 코딩할때 생성하는 스레드의 차이

프로그램/프로세스/스레드

•
프로그램 : 컴퓨터가 실행할 수 있는 명령어 집합
•
프로세스 : 실행중인 프로그램
•
스레드 : 프로세스의 실행 흐름

스레드

1. 특징

•
한 프로세스는 한 개 이상의 스레드 소유
•
한 프로세스 내의 스레드들은 메모리 영역 공유(stack 영역은 제외)
→ Context Switch와 스레드 간의 통신 시 비용이 적고 응답 속도 빠름

2. 스레드의 분류

하드웨어 스레드

•
컴퓨터 스펙에서 말하는 8코어 16스레드의 그 스레드를 의미
•
물리적으로 프로세스를 실행할 수 있는 공간
→ 코어가 메모리에 접근하는 시간 동안의 대기를 비효율적으로 여겨 그 동안 코어가 다른 연산을 할 수 있도록 코어의 사용률을 극대화

OS 스레드

•
Kernel Space에서 생성되고 관리되는 스레드
•
우리가 흔히 말하는 스레드, CPU에서 실행되는 단위(CPU 스케줄링 단위)

User 스레드

•
User Space에서 생성되고 관리되는 스레드
•
User 스레드가 CPU에서 실행이 되려면 결국 커널을 거쳐야 하기 때문에 OS 스레드도 함께 실행

3. 스레드의 모델

One-to-One 모델

•
User 스레드와 OS 스레드가 1:1
→ 스레드 관리는 OS가 진행(스케줄링 포함)
•
하나의 스레드가 막혀도 다른 스레드는 정상적 동작
•
User 스레드를 생성할때마다 OS 스레드가 필요(많은 수의 OS 스레드는 시스템 성능에 부담)

Many-to-One 모델

•
User 스레드와 OS 스레드가 다:1
→ OS 스레드가 하나로 연결되기 때문에 User Space에서만 Context Switching이 일어남
→ One-to-One 모델에 비해 Context Switching이 빠름
•
하나의 스레드가 막히면 전체가 막힘

Many-to-Many 모델

•
User 스레드와 OS 스레드가 다:다
•
하나의 스레드가 막혀도 다른 스레드는 정상적 동작
•
Context Switching이 빠름
•
구현이 복잡

멀티프로그래밍/멀티테스킹/멀티프로세싱/멀티스레딩

1. 멀티프로그래밍

•
단일 프로세스 시스템에선 하나의 프로그램만 실행이 되니, 연산과정에서 CPU의 유후시간이 생김
→ 이러한 유후시간을 이용한 다른 프로세스를 실행시켜 CPU 사용률 증가시킴
•
하나의 프로세스의 CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기

2. 멀티테스킹

•
멀티프로그래밍은 하나의 프로세스의 CPU사용 시간이 길어지면 다른 프로세스는 대기하는 문제점 발생
→ 프로세스의 CPU 사용을 아주 짧게 하여 여러 프로세스가 번갈아 사용
→ 사용자는 마치 동시에 작업하는 것처럼 느낌

3. 멀티프로세싱

•
동시에 여러 작업 가능
•
프로세스는 독립적인 메모리 영역 사용
→ Context Switching이 비용이 비싸고 프로세스간 메모리 공유가 쉽지 않음

4. 멀티스레딩

•
멀티프로세싱의 단점을 해결하기 위해 멀티스레딩 개념이 생김
•
한 프로세스 내의 스레드들은 메모리 영역 공유(stack 영역은 제외)
→ Context Switch와 스레드 간의 통신 시 비용이 적고 응답 속도 빠름

참고자료 🔗

스레드 종류가 참 많죠? 하드웨어 스레드, OS 스레드, 네이티브 스레드, 커널 스레드, 유저 스레드, 그린 스레드까지 한번에 정리해서 알려드립니다!!
#하드웨어스레드 #OS스레드 #유저스레드 #커널스레드 #네이티브스레드 #그린스레드 #스레드모델링 #스레드종류 #thread 아래 스레드들의 의미를 아시나요? - 하드웨어 스레드, OS 스레드, 네이티브 스레드, 커널 스레드, 유저 스레드, 그린 스레드 모르시거나 헷갈린다면 이 영상을 꼭 보고 가시죵~! 설명드리는 김에 스레딩 모델에 대해서도 알려드립니다 :) ===== !!! 보충 내용 !!! ===== 말하고 싶었던 중요한 내용이 영상에서 하나 빠졌네요 ㅠㅠ (영상 만들다보면 이따금 꼭 아쉬운 부분이 하나씩 생깁니당 ㅠㅠ) * 일반적으로 다른 수식어 없이 단순히 '스레드'라고 한다면 보통은 OS 스레드를 말하거나 OS 스레드와 1대 1로 매핑되는 유저 스레드라고 이해하시면 될 것 같아요 * OS와는 별개로 유저 레벨에서 자체적으로 관리되고 스케줄링 되는 스레드는 '유저 스레드' 혹은 '그린 스레드'로 불린다고 생각하시면 될 것 같아요 (지금까지 여러 문서들을 읽어봤을 때 주로 그랬습니다) 00:00 오프닝 00:14 컴퓨터 시스템 구성도 00:48 하드웨어 스레드 04:57 하드웨어 스레드 퀴즈 05:32 OS 스레드 08:44 OS 스레드 퀴즈 09:55 user 스레드 11:48 user 스레드와 OS 스레드의 관계 모델 12:51 one-to-one 모델 15:03 many-to-one 모델 17:33 many-to-many 모델 18:47 조금 다른 의미의 user 스레드 19:22 Green 스레드 20:57 조금 다른 의미의 kernel 스레드 22:00 클로징