본문 바로가기

Program Languege/WinAPI

스레드

스레드(Thread)

 

 스레드는 운영체제에서 프로세서 시간을 할당하는 기본 단위.

 프로세스 내에서 실행되는 흐름의 단위.

 

멀티 스레드(MultiThread)

 

 여러개의 스레드를 실행하는 것을 말한다.

 

 장점

  응답성 : 사용자에 대한 응답성이 증가된다.

  자원 공유 : 스레드는 자동적으로 그들이 속한 프로세스의 자원들과 메모리를 공유한다.

  경제성 : 프로세스 생성에 메모리와 자원을 할당하는 것은 비용이 많이 든다. 스레드는 자신이 속한 프로세스의 자원을 공유하기

              때문에 보다 경제적이다.

 

 단점

   다중 스레드는 캐시나 변환 색인 버퍼(TLB)와 같은 하드웨어 리소스를 공유할 때 서로를 간섭할 수 있다.

   하나의 스레드만 실행 중인 경우 싱글 스레드의 실행 시간이 개선되지 않고 오히려 지연될 수 있다.

   멀티스레드의 지원을 위해 응용 프로그램과 운영체제 둘 다 충분한 변화가 필요하다.   

   스레드 스케줄링은 멀티스레딩의 주요 문제이다.

 

- 변환 색인 버퍼(Translation Lookaside Buffer)는 가상 메모리 주소를 물리적인 주소로 변환하는 속도를 높이기 위해 사용되는 캐시.

 

스레드 컨텍스트(Thread context)

 

 스레드 실행 상태에 대한 정보를 스레드 컨텍스트라고 한다. 스레드가 하던 작업의 상태에 관한 정보는 굉장히 복잡할 것 같지만 기계 차원에서 보면 단순한 레지스터 값과 기타 몇가지 값의 집할일 뿐이다.

 

 스레드 간에 작업을 전환하는 작업을 컨텍스트 스위칭이라고 한다. 이 작업이 부하가 심하지 않다는 의견도 있고 부하가 심해서 이것을

얼마나 적게 사용하면서 작업을 하는가가 요점이라는 의견도 있는데 조금 더 찾아봐야할 것 같다.

 

스케줄링(scheduling)

 

 운영체제는 스레드에게 자원을 주어 작업을 할 수 있게 하는데 이때 자원을 나누어 주는 방법을 스케줄링이라고 한다.

 다중 프로그래밍을 가능하게 하는 운영 체제의 동작 기법.

 

다중 프로그램화된 운영체제의 기본으로 운영체제가 CPU를 프로세스 간에 교환함으로써 컴퓨터의 생산성을 높이고자하는데 목적이 있다.

'Program Languege > WinAPI' 카테고리의 다른 글

공통 대화상자 - 2  (0) 2014.05.05
공통 대화상자 - 1  (0) 2014.05.05
프로세스  (0) 2014.04.29
TransparentBlt, AlphaBlend, GdiTranslaparentBlt, GdiAlphaBlend  (0) 2014.04.15
QueryPerformance  (0) 2014.04.10