CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): shanx (ratio)
날 짜 (Date): 2004년 9월 21일 화요일 오후 04시 17분 16초
제 목(Title): Re: user thread, kernel thread


   유닉스의 스레드 구현의 종류는 크게 3가지가 있습니다. 
   여기서는 솔라리스를 기준으로...
       커널 스레드, LWP(경량프로세스), 사용자 스레드

 커널 스레드는 커널이 생성하는 스레드인데 커널 내부에서 작업을 하는 용도로도 
생성할 수도 있고 필요하면 LWP와 바인딩이 되어서 사용이 가능합니다. 
커널 스레드의 스케줄링은 커널의 기본적인 스케줄러에 의해서 이루어집니다. 

 그 다음에 LWP는 커널 스레드를 이용해서 구현이 되는데 한 프로세스 안에서 
스레드 제어를 제공합니다. 솔라리스의 경우 LWP는 글로벌한 네이밍 스페이스를
가지지 않기 때문에 프로세스 내부에서만 보이고 다른 프로세스에선 보이지 
않습니다.
 
  사용자 스레드는 커널의 도움 없이 사용자 라이브러리만으로 구현이 되는 
스레드를 말합니다. 
그래서 자체적인 스레드 스케줄링과 제어를 구현해야 하죠. 
커널 자원도 아끼고 시스템 콜 오버헤드나 문맥 교환의 오버헤드도
상대적으로 작다는 장점이 있습니다. 그래서 간단한 연산이나 처리를 하는 
스레드의 숫자가 아주 많을 때는 사용자 스레드가 훨씬 유리합니다.
  시스템마다 다르지만 완전히 사용자 레벨에서 스레드를 구현한 것도 있지만 
솔라리스의 경우에는 LWP를 이용해서 일부 사용자 스레드를 LWP로 바인딩하기도
하고 그냥 프로세스 내의 풀로 선택해서 사용이 가능하도록 구현하기도 합니다.

  유닉스 종류마다 스레드 사용법이 달라서 POSIX에서 표준 인터페이스로 만든 것이 ]
pthreads 라이브러리입니다.
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.