스레드란?

  • 프로세스는 자원과 제어로 특성을 구분할 수 있는데 이 중 제어만 분리한 실행 단위를 스레드(thread)라고 한다.
  • 프로세스 하나는 스레드 한 개 이상으로 나눌 수 있다.
  • 스레드들은 프로세스의 직접 실행 정보를 제외한 나머지 프로세스 관리정보를 공유한다.
  • 실행흐름단위
  • 응용 프로그램에는 적어도 한 개 이상의 프로세스가 있고, 프로세스에는 한 개 이상의 스레드가 있다.
  • 같은 프로세스의 스레드들은 동일한 주소 공간을 공유한다. thread
스레드의 정보

스레드의 이점

프로세스의 자원과 메모리 공유 가능
스레드들이 프로세스 자원 하나와 메모리를 공유하므로 응용 프로그램 하나가 동일한 주소 공간에서 스레드를 여러 개 실행하여 시스템 성능을 향상시킬 수 있다.
경제성 향상
프로세스를 생성하는 것 보다 스레드를 생성하여 문맥 교환을 수행하면 오버헤드가 줄어든다.
다중처리(multi processing)로 성능과 효율 향상
각 스레드를 여러 프로세서에서 병렬로 실행하여 성능과 효율성을 높일 수 있다.

단일 스레드와 다중 스레드

thread

다중스레드는 스택/레지스터 각자의 것 사용한다. 나머지는 공유- 스레드간 통신은 공유메모리 사용

1 . 단일 스레드

프로세스 하나에 스레드 한 개를 실행하는 방법으로 도스가 대표적이다.

2 . 다중 스레드

  • 동일 프로세스의 스레드는 자원을 공유하므로 자원 생성과 관리의 중복성을 최소화하여 실 행 능력을 향상시킬 수 있다.
  • 각 스레드는 커널이 개입하지 않고도 독립적으로 실행 할 수 있어 서버에서 많은 요청을 효과적으로 처리할 수 있다.
  • 프로세스보다 스레드를 생성하는 것이 더 빠르고, 동일한 프로세스에 있는 스레드간의 교환이나 종료도 더 빠르다.
  • 프로그램을 변경하지 않고 스레드를 병렬로 처리하여 효율을 극대화할 수 있다.
  • 스레드별로 실행 환경 정보가 따로 있지만 서로 많이 공유하므로, 프로세스보다 동일한 프로세스의 스레드에 프로세서를 할당하거나 스레드 간의 문맥 교환이 훨씬 경제적이다

댓글 쓰기