Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코틀린
- 문자열
- 동적계획법
- 문자열다루기
- 이분탐색
- 코딩테스트
- component
- 배열
- dfs
- BFS
- BOJ
- activity
- 생명주기
- 완전탐색
- GIT
- 다이나믹프로그래밍
- 스택
- 분할정복
- 세그먼트트리
- Android
- 코딩
- 백준
- 안드로이드
- 카카오블라인드
- 운영체제
- 트리
- 그래프
- 알고리즘
- 프로그래머스
- 자바
Archives
- Today
- Total
HS_development_log
쓰레드 본문
반응형
쓰레드
쓰레드(Thread)
- CPU 이용의 기본 단위
- 프로세스 내에서 실행되는 기본 단위
- LWP(Light Weight Process)
프로세스와 쓰레드
- 프로세스가 여러 쓰레드를 가진다면 동시에 하나 이상의 작업들을 수행할 수 있음
- 같은 프로세스에 속한 쓰레드들은 프로세스의 코드, 데이터, 열린 파일 등을 공유함
- 각 쓰레드는 각자 레지스터 집합(PC 레지스터 포함), 스택을 가짐
싱글 쓰레드 vs 멀티 쓰레드
-
싱글 쓰레드 : 프로세스 내의 쓰레드가 1개인 경우
-
멀티 쓰레드 : 프로세스 내의 쓰레드가 2개 이상인 경우
멀티쓰레드의 장점
- 빠른 응답성
- 프로그램의 한 부분을 수행하다가 중단되어도 다른 부분이 계속 수행할 수 있어 사용자에게 응답성을 좋게 할 수 있다
- 자원 공유
- 쓰레드는 프로세스 내의 code, data, heap 영역을 공유한다
- 경제성
- 프로세스의 생성은 메모리 할당 등 비용이 많이 들지만, 쓰레드는 프로세스 내에서 생성되며 비용이 적게 든다
- 멀티 프로세서의 활용
- 각 쓰레드가 다른 CPU에서 수행될 수 있으므로 멀티 프로세서의 여러 CPU를 활용할 수 있다
쓰레드의 종류
- 사용자 수준의 쓰레드 라이브러리
- 라이브러리에서 쓰레드를 관리하며 응용프로그램에게 쓰레드 생성 등의 관련 함수 제공
- 커널 쓰레드
- 쓰레드를 커널에서 직접 지원. 운영체제가 쓰레드 생성 등의 쓰레드 관리를 위한 시스템 호출을 제공한다
쓰레딩 모델
One-to-One
-
각 사용자 수준 쓰레드가 하나의 커널 쓰레드에 대응된다
-
한 쓰레드가 시스템 호출을 하여 중지 상태가 되었을 때, 다른 쓰레드가 실행 될 수 있다
-
각 쓰레드 마다 커널 쓰레드를 만들어야 하므로 커널에 오버헤드 발생
Many-to-One
- 여러 개의 사용자 수준 쓰레드가 하나의 커널 쓰레드에 대응된다
- 한 쓰레드가 시스템 호출을 하면, 전체 쓰레드가 중지 상태가 된다
- 쓰레드들을 다중 프로세서에서 병렬로 실행할 수 없다
Many-to-Many
- 여러개의 사용자 수준의 쓰레드가 동일한 개수 또는 적은 개수의 커널 쓰레드에 대응된다
- One-to-One과 Many-to-One 의 장단점을 갖게 된다.
반응형
'CS > 운영체제' 카테고리의 다른 글
CPU 스케줄링 (0) | 2020.09.28 |
---|---|
멀티 프로세스 vs 멀티 쓰레드 (0) | 2020.09.28 |
프로세스 (0) | 2020.09.28 |
프로세서 / 메모리 / 인터럽트 (0) | 2020.04.24 |
운영체제 정의 / 기능 / 사례 (0) | 2020.04.04 |