Search
Duplicate

스레드의 종류

키워드
스레드
운영체제

알고 싶은 점

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

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

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

스레드

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 클로징