스레드란 프로그램이 자체적으로 둘 이상의 동시에 실행중인 작업으로 분할하는 방법이다.

같은 프로세스의 스레드들은 프로세스의 직접 실행 정보를 제외한 나머지 프로세스 관리 정보를 공유한다. 

프로세스 하나에 포함된 스레드들은 공동의 목적을 달성하기 위해 병렬로 수행한다.

스레드를 이용하면 다음과 같은 이점들이 있다.

1) 사용자 응답성 증가 : 응용프로그램의 일부분을 봉쇄하거나 긴 작업을 수행하더라도 병렬 프로그래밍으로 프로그램을 계속 실행할 수 있어 사용자 응답성이 증가한다. 예를 들면 다중 스레드를 적용한 웹 브라우저는 스레드 한 개가 파일을 로딩하는 동안 다른 스레드는 상호 작용을 할 수 있다.

2) 프로세스의 자원과 메모리 공유 가능 : 프로세스 내의 스레드들은 동일한 주소 공간에서 자원과 메모리를 공유하므로 시스템 성능이 향상된다.

3) 경제성이 좋음 : 프로세스간 문맥 교환보다 스레드간 문맥 교환이 오버헤드가 적다.

4) 멀티 프로세싱으로 성능과 효율 향상 : 다수의 스레드를 여러 프로세서에서 병렬로 실행해 성능과 효율성을 높일 수 있다.

멀티 스레드 vs 멀티 프로세싱

멀티 스레드 - 자원을 공유하기 때문에 멀티 프로세싱에 비해 메모리 절약

멀티 프로세싱 - 프로세스가 독립적으로 운용되기 때문에 멀티 스레드에 비해 안정성 향상

 

스레드의 구현

1) 사용자 수준 스레드

2) 커널 수준 스레드

 

3) 혼합형 스레드

사용자 수준 스레드와 경량프로세스간은 다대다, 경량 프로세스와 커널 수준 스레드간은 일대일 매칭이다.

 

+ Recent posts