달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

'OS이야기'에 해당되는 글 86

  1. 2010.05.08 어버이날 OS 이야기
2010. 5. 8. 14:44

어버이날 OS 이야기 OS이야기2010. 5. 8. 14:44

쓰레드풀
쓰레드 풀의 기본아이디어는 프로세스를 시작할 때 아예 일정한 수의 쓰레들을 미리 풀로 만들어두는 것이다. 이 쓰레드들은 평소에 하는 일 없이 일감을 기다린다. 그러다가 한 개의 요청이 들어오면 이 풀에서 한 쓰레드에게 그것을 할당한다. 요청을 서비스해주고 다시 쓰레드풀로 돌아온다. 이렇게 하다가 풀에 남아 있는 쓰레드가 바닥나면 서버는 자유 쓰레드가 하나 생길 때까지 기다려야 한다.

장점 :
1. 새 쓰레드를 만들어 주기보다 기존 쓰레드로 서비스해 주는 것이 더 빠르다.
2. 쓰레드 풀은 임의 시각에 존재할 쓰레드 개수에 제한을 둔다. 이러한 제한 많은 수의 쓰레드를 병렬 처리할 수 없는 시스템에 도움이 된다.

쓰레드별 데이터
한 프로세스에 속한 쓰레드들은 그 프로세스의 자료를 모두 공유한다. 이와 같은 자료 공유는 다중 쓰레드 프로그래밍의 큰 장점 중 하나 이다. 그러나 상황에 따라서는 각 쓰레드가 자기만 접근할 수 있는 자료를 가져야 할 필요도 있다. 그러한 자료를 쓰레드별 데이터라고 부른다.

스케쥴러 액티베이션 (Scheduler Activation)
다중 쓰레드 프로그램과 관련하여 쓰레드 라이브러리와 커널의 통신 문제이다. 다대다 및 두 수준 모델에서 반드시 해결해야 할 문제이다. 이러한 통신의 조정은 응용 프로그램이 최고의 성능을 보이도록 보장하기 위하여 커널 쓰레드의 수를 동적으로 조절하는 것을 가능하게 한다.
다대다 또는 두 수준 모델을 구현하는 시스템은 사용자와 커널 쓰레드 사이에 중간 자료구조를 둔다. 이 자료구조를 경량 프로세스 또는 LWP라고 불린다. 사용자 쓰레드 라이브러리에게 LWP 방식은 응용이 사용자 쓰레드를 수행하기 위하여 스케쥴할 가상 처리기 처럼 보인다.각 LWP는 커널 쓰레드에 부속되어 있으며 물리 처리기에서 스케쥴하는 대상 바로 이 커널 쓰레드이다.
입 출력이 완료되기를 기다리는 동안 같이 커널 쓰레드가 봉쇄되면  LWP도 같이 봉쇄된다. 이 연관을 따라  LWP에 부속된 사용자 수준 쓰레드도 역시 봉쇄된다.

프로그램을 효율적으로 실행되기 위하여 임의 개수의  LWP를 필요로 할 수도 있다.  CPU 중심 프로세스를 고려해보자. 한 순간에 오직 하나의 쓰레드만이 실행될 수 있다. 따라서 하나의  LWP면 충분. 그러나 입/출력 중심 프로세스는 여러개의 LWP가 필요할 수 도 있다. 동시에 발생하는 봉쇄형 시스템 호출마다 하나의  LWP가 필요하다. 예를 들어, 서로 다른 5개의 파일 읽기 요청이 발생했다고 가정하자. 모든 LWP가 입/출력 완료를 기다리면서 커널 안에서 대기할 수 있기 때문에 5개의 LWP가 필요하다.만일 프로세스가 4개의 LWP만 가지고 있다면 다섯 번째 요청은 하나의 LWP라도 커널에서 복귀할 때까지 기다려야 한다.

사용자 쓰레드 라이브러리와 커널 쓰레드간의 통신 방법 중 하나는 스케쥴러 액티베이션ㄴ이라고 알려진 방법. 동작하는 방법은 다음과 같다. 커널은 프로그램에게 가상 처리기(LWP)의 집합을 제공하고 응용 프로그램은 사용자 쓰레드를 가용한 가상 처리기로 스케쥴한다. 게다가 커널은 응용프로그램에게 특정 사건에 대해 알려줘야 한다. 이 프로시저를 upcall이라고 부른다.
:
Posted by НooпeУ


Code Start Code End