일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- queue
- 아두이노 소스
- Arduino
- stl
- Deque
- 아두이노 컴파일러
- 라인트레이서
- Algorithm
- C언어
- Stack
- set
- priority_queue
- vector
- 컴퓨터 그래픽스
- arduino compiler
- 통계학
- map
- LineTracer
- Visual Micro
- list
- c++
- 운영체제
- WinAPI
- 아두이노
- 자료구조
- 시스템프로그래밍
- directx
- 수광 소자
- Array
- html
- Today
- Total
Kim's Programming
스레드(Thread) 본문
1. 스레드의 개념과 상태 변화
- 독립적으로 스레드가 갖는 것
- 스레드 실행 환경 정보
- 지역 데터
- 스택
- (공유하는 것들) = 프로세스의 정보
- 코드(Code) 영역
- 전역 데이터
- 힙(Heap) 영역
스레드 중에서 프로세스의 속성 중 일부가 들어 있는 것을 경량 프로세스(LWP: Light Weight Process)라고 한다. 하나의 프로세스에 스레드가 하나인 전통적인 프로세스를 중량 프로세스(HWP: Heavy Weight Process)라고 한다.
프로레스가 하나인 서로 다른 프로세서에서 프로그램의 다른 부분을 동시에 실행할 수 있는데 스레드를 이용하면 다음 이점이 있다.
- 사용자 응답성 증가
- 프로세스의 자원과 메모리 공유 가능
- 경제성이 좋음
- 다중처리(멀티 프로세싱)로 성능과 효율 향상
3. 스레드의 사용 예
단일 사용자 다중 처리 시스템에서는 스레드 한 개로 사용자의 데이터를 읽어 들여 메뉴를 표시하고, 다른 스레드로는 사용자 명령을 실행하도록 하여 이전 명령을 완료하기 전에 다음 명령을 신속하게 준비해서 속도를 향상 시킬 수 있다.
대표적인 예: 프로세스 - 웹 브라우저, 스레드 - 탭
4. 스레드의 상태 변화
스레드는 프로세서를 함께 사용하고 항상 하나만 실행한다. 또 한 프로세스에 있는 스레드는 순차적으로 실행하고 해당 스레드의 정보를 저장하는 레지스터와 스텍이 있다. 보통 프로세스를 생성하면 해당 프로세스의 스레드도 함께 생성한다. 단 스레드 생성에서는 운영체제가 부모 프로세스와 공유할 자원을 초기화 할 피요가 없다.(스레드가 자식 프로세스보다 시간을 줄일 수 있는 이유)
5. 스레드의 제어 블록
프로세스가 프로세스 제어블록에 정보를 저장하듯이 스레드도 스레드 제어 블록(TCB: Thread Control Block)에 정보를 저장한다. 그런데 프로세스는 스레드를 한 개 이상 가질 수 있으므로 결국 프로세스 제어 블록은 스레드 제어 블록의 리스트를 가리킨다.
- TCB의 내용
- 실행 상태
- 스케중링 정보
- 계정 정보
- 스케중링 큐용 다양한 포인터
- 프로세스 제어 블록(PCB)을 포함하는 포인터
스레드는 운영체제에 따라 다양하게 구현할 수 있는데, 대부분 다음 세 가지 형태로 구현한다. 사용자 수준 스레드는 스레드 라이브러리를 이용하여 작동하는 형태이고, 커널 수준 스레드는 커널(운영체제)에서 지원하는 형태이다. 그리고 이 둘을 혼합한 형태가 혼합형 쓰레디이다.
- 사용자 수준 스레드(User-Level Thread) :다대일(n : 1)매핑
- 커널 수준 스레드(Kernel-Level Thread) :다대일(1 : 1)매핑
- 혼합형 스레드(multiplexed thread : 다대다(n : m)매핑
- 장점
- 이식성이 높음
- 어베헤드가 적음
- 유연한 스케줄링이 가능
- 단점
- 시스템의 동시성을 지원하지 않음
- 화장에 제약이 따름
- 스레드 간 보호 불가능
2. 커널 수준 스레드
커널 수준 스레드는 사용자 수준 스레드의 한계를 극복하는 방법으로, 커널이 스레드와 관련된 모든 작업을 관리한다(PCB와 TCB 유지)
->사용자 영역 스레드와 커널 영역 스레드가 일대일(1:1)로 매핑된다.
- 장점
- 커널이 직접 스케줄링하고 실행하기에 사용자 수준 스레드의 커널 지원이 부족한 문제를 해결할 수 있다.
- 커널이 각 스레드를 개별적으로 관리할 수 있어 동일한 프로세스의 스레드들을 병행으로 수행할 수 있다.
- 동일한 프로세스에 있는 스레드 중 한 개가 대기 상태가 되더라도 다른 스레드를 실행할 수 있다.
- 단점
- 커널이 전체 프로세스와 스레드 정보를 유지하여 오버헤드가 커진다.
- 장점 2의 과정에서도 커널 영역으로 전환하는 오버헤드가 발생하고 스케줄링과 동기화를 하려면 더 많은 자원이 필요하다.
3. 혼합형 수준 스레드
사용자 영역 스레드와 커널영역 스레드를 혼합한 구조
->다수 사용자 수준 스레드에 다수의 커널 스레드가 다대다(n:m)로 매핑된다.
'Computer Theory > Operating System' 카테고리의 다른 글
병행 프로세스와 상호배제(2/2) (0) | 2017.06.24 |
---|---|
병행 프로세스와 상호배제(1/2) (0) | 2017.06.23 |
프로세스(Process) (0) | 2017.06.22 |
운영체제란? (2/2) (0) | 2017.06.21 |
운영체제란? (1/2) (0) | 2017.06.21 |