Thread 관리
JeongSeulho
2023년 01월 21일
준비중...
클립보드로 복사
📌프로세스와 스레드의 관계
프로세스가 하는 일은 2가지로
- 자원을 할당받기
- 제어하기 이 2가지 중 제어만을 담당하기 위해 분리한 것 = 스레드 하나의 프로세스 안에 복수의 스레드가 있다
또한 하나의 프로세스의 여러 스레드들은 같은 주소 공간을 공유한다.
📌스레드란?
- Light Weight Process(LWP) : 자원과 제어중 제어만을 담당하는 가벼운 프로세스
- 프로세스 활용, 실행의 기본 단위
- 구성요소
- thread ID
- Register set(PC, SP 등)
- stack(local data등)
- 제어요소를 스레드마다 보유
- 데이터 및 자원, 메모리를 같은 프로세스의 여러 스레드끼리 공유
- 전통적인 프로세스(이전 까지 설명한 프로세스는) 단일 스레드 프로세스를 기준으로 한 것
📌스레드의 장점
- 사용자 응답성 : 일부 스레드의 처리가 지연되어도 다른 스레드는 작업 처리 가능
- 자원 공유 : 자원을 공유하면 커널의 개입을 피하여 효율성 증가
- 커널의 개입이 많으면 비효율적임(context switching 최소화)
- 경제성
- 멀티 프로세서 : 병렬처리 가능
📌스레드의 구현
📖 사용자 수준 스레드(n:1 모델)
- 사용자 영역의 스레드 라이브러리로 구현된다
- 스레드의 생성, 스케줄링 등
- java thread api, win32 threads 등
- 커널의 스레드가 여러개인지 모른다
- 커널의 관리를 받지 않아서 부하가 적고 이식성이 높음
- 단, 하나의 스레드가 block상태가 되면 모든 스레드가 대기
📖 커널 수준 스레드(1:1 모델)
- 커널, OS에서 직접 관리하는 스레드
- 커널에서 스레드의 관리하여 부하가 크다
- 커널이 각 스레드를 개별적 관리하여 병행 수행가능(다른 스레드가 block되어도 다른 스레드는 수행)
📖 혼합형 스레드(n:m 모델)
- n개의 사용자 수준 스레드, m개의 커널 스레드(n > m)
- 사용자가 원하는 만큼의 스레드 사용 가능
- 병행 처리 가능
📮출처 : https://www.youtube.com/watch?v=hzXVQIlSSos&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN