Fundamental Notes/Operating Systems

Thread

콩콩댕 2009. 1. 7. 20:08
반응형

Threads는 쓰레드ID, 프로그램 카운터, 레지스터 집합, 스택으로 구성된다.

Thread들은 프로그램 코드, 데이타 및 기타 자원들을 공유한다.

 
 
*Benefits
1.응답성: 응용프로그램이 긴 작업을 수행하더라도 프로그램의 수행이 계속된는 것을 허용.
2.자원공유: 자동적으로 그들이 속한 프로세스의 자원들과 메모리를 공유한다. 같은 주소내에 활동성 쓰레드를 여러게 만들 수있다.
3.경제성.:process creation, context switching time은 thread creation, context switcing 의 30배,5배.
4.다중 처리기 구조의 활용: 다중 처리기 구조에서 더욱 속도 증가.
 
*user level Threads
 - 사용자 수준의 쓰레드 라이브러리에 의해 구현되며 커널 지원 없이 쓰레드의 생성과 스케줄링, 관리를 지원한다.<- 커널은 쓰레드를 인식하지 못하기 때문에 , ex)POSIX Pthreads Mach C-threads, UI-hreads
 
*kernel level Threads
 - 커널이 thread management 담당.-> 실제 쓰레드를 지원한다.
 
 
*Multithreading Models
사용자 쓰레드와 커널 쓰레드를 모두 지원 하여, 다중 쓰레드 모델을 낳았다.
 
다대일(Many-to-one)모델 : 많은 사용자 수준 쓰레드를 하나의 커널 쓰레드로 맵한다. 커널 쓰레드를 지원하지 않는 운영체제에서 사용자 수준 쓰레드 라이브러리를 구현할때 사용.
일대일(One-to-One)모델 : 각 사용자 쓰레드를 각각 하나의커널 쓰레드로 맵한다. 다대일모델 보다 많은 병렬성제공, 또한 이모델은 다중 처리기에서 다중 쓰레드가 병령로 수해오디는 것을 허용한다.  단점은 사용자 수준 쓰레드를 생성할때 커널 쓰레드도 생성해야 한다.-> 오버헤드로 성능 저하 될수 있으므로 쓰레드 수를 제한한다.
다대다(Many-to-Many)모델: 다대일과 일대일 모델의 단점을 보완한 모델로  개발자가 필요한 만큼 많은 사용자  수준쓰레드를 생성하면서 병렬성 또한 제공한다.
 
*Threading issues
 1.The fork and exec System Calls : 한개의 쓰래드만 가지고 태어날것인지? 모든 멀티쓰레드를 복사해 가지고 태어날 것인지?
2.Thread cancellation: 예를 들어 여러 쓰레드드이 데이터베이스를 병렬로 검생하고 있다가 그 중 한개의 쓰레드가 결과를 찾았다면  나머지 쓰레드들은 중단 되어도 좋다. 이처럼 cancel되어야할 쓰레드를 target thread라고 부른다.
   -Asynchronous cancellation :  한 쓰레드가 즉시 타겟 쓰레드를 terminate 시킨다.
   -Deferred cancellation : 타겟 쓰레드가 주기적으로 자신이 terminate 되어야 할지를 점검한다.
3.Signal handling
4.Thread pools : 쓰레드가 필요할때마다 만드는 것보다 기존 쓰레드로 서비스 해주는 것이 빠르므로 한정된 갯수의 쓰레드를 만들어 놓는다.
5.Thread specific 데이터
 
*Window 2000 Process Object
 
 

Window 2000 Thread Object

프로세스 오브젝트는 자신에게 할당된 자원의 정보를 가지고 있고 쓰레드 오브젝트는 실제 실행정보를 가지고있다. 쓰레드는 프로세스보다 우선순위가 조금 높거나 낮다. 큰차이 없다.
쓰레드 오브젝트에서 dynamic priority가 실제 실행순서이다.
 
Windows 2000 Threads states

 
Ready : CPU를 받으면 언제든 실행가능한 쓰레드.
Standby : 실행하기 위해 뽑혀있는 상태
Running : 실제실행중 , 실행중에 자기보다 우선순위가 높은 쓰레드가 나타나면 CPU를 뺏기게된다.
Waiting: CPU를 양보할때나 suspend 됐을때.혹은 블럭당햇을때. 블럭이 풀리고 자원을 이용할수 있을때 Ready상태로 간다.
Transition: 블럭은 풀렸으나 자원을 이용하지 못할때
 
 

 
위에것은 User level Thread Library 밑에것은 커널
 
Runnable:실행하고 싶으나 LWP를 할당 받지 못한 쓰레드.
Stopped sleeping:실행못하는 상태.
Active :  LWP를 할당받은 애들.


'Fundamental Notes > Operating Systems' 카테고리의 다른 글

Process Synchronization  (0) 2009.01.07
CPU Scheduling  (0) 2009.01.07
Process  (0) 2009.01.07
Operating System Structure  (0) 2009.01.07
Introduce Operating System  (0) 2009.01.07