본문 바로가기
운영체제

혼자 공부하는 운영체제 (5) - Thread

by 임동무 2022. 10. 24.

스레드 - 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 를 통해 스레드를 관리하는 방식으로 운영체제는 이 스레드에 대해서 알지 못하는 방식이다.

 

댓글