스레드 - Thread
1. 스레드
스레드란 프로세스 안에서 독립적으로 실행되는 흐름의 단위로
[ 메모리 주소 공간, 프로세스 상태, 운영체제 자원들] 처럼 공유할 수 있는 것은 최대한 공유하며 프로세스 하나에 CPU 수행단위만 여러개를 둔다.
1. 프로세스
- 프로세스는 현재 실행되고 있는 즉, 메모리에 올라가서 실행되는 프로그램을 의미한다.
프로그램이 메모리에 올라갈 때, code, data, heap, stack 4가지 메모리 영역을 할당받는데 각각
code 는 명령어, 실제코드가 할당되는 영역
data 는 정적(static) 변수 및 전역변수가 할당되는 영역
heap 은 런타임에 데이터가 동적으로 할당되는 영역
stack 은 함수 호출 정보, 지역 변수, 매개 변수가 할당되는 영역이다.
이러한 프로세스를 실행할 때, 여러 스레드에서 동시에 실행된다면 이를 멀티 스레드라고 한다.
스레드에도 stack 이라는 메모리 영역이 할당되는데 이 때 프로세스와는 달리
code, data, heap 의 프로세스의 자원을 공유하며 실행한다.
아래 사진을 통해 프로세스와 스레드의 차이를 볼 수 있다.
( 출처 : https://wlswoo.tistory.com/57)
2. 멀티 스레드의 장점
1. Responsiveness
- 스레드 하나가 blocked 상태여도 다른 스레드에서는 running 상태일 수 있기 때문에 빠른 처리를 할 수 있다.
2. Resourse Sharing
- 스레드끼리 자원을 공유하여 협력하기 때문에 높은 처리율과 성능 향상을 얻을 수 있다.
3. Utilization of Multi Processor Architecture
- 멀티 프로세서 환경에서 병렬성을 높일 수 있다.
4. Economical creating & CPU switching thread
- 프로세스 간의 CPU swithcing 보다 overhead 가 적다.
3. 스레드의 구현
- 스레드는 Kernel thread 와 User thread 2가지 가 있다.
Kernel thread 는 Kernel 이 관리하는 스레드이며 User thread 는 사용자 프로그램이 외부 library 를 통해 스레드를 관리하는 방식으로 운영체제는 이 스레드에 대해서 알지 못하는 방식이다.
'운영체제' 카테고리의 다른 글
혼자 공부하는 운영체제 (4) - Scheduler (0) | 2022.10.24 |
---|---|
혼자 공부하는 운영체제 (3) - 프로세스의 실행 (0) | 2022.10.22 |
혼자 공부하는 운영체제 (2) - 운영체제의 구조 (0) | 2022.10.18 |
혼자 공부하는 운영체제 (1) - 운영체제란 무엇인가? (0) | 2022.10.13 |
댓글