Keep going

스레드 라이브러리 본문

School/운영 체제

스레드 라이브러리

코딩천재홍 2021. 4. 16. 23:33

스레드 라이브러리 구현 두 가지 방법

  • user mode에서 스레드 라이브러리 구현하는 방법
  • 운영체제 내부에서 구현하는 방법 (kernel 모드에서 돌아감)

 

스레드 라이브러리 종류

  • POSIX
  • windows
  • java
  • Implicit

 

pthreads

  • 유저 레벨, 커널 레벨 둘다 제공
  • a posix api - 스레드 지원하려면 다음과 같음 메서드들 제공해야 한다고 명시, 어떻게 구현할 건지 지정하는 것은 아님
  • unix systems에서 사용

 

java

  • JVM이 OS가 제공하는 스레드 기능 구현
  • Runnable 인터페이스 내부에 run 메서드 → 스레드 생성

 

Implicit Threading

  • 직접 만드는 것이 아니라 Runtime, Compiler가 만들어주고 암묵적으로 스레드 만들어서 실행하라고 명시하는 것
  • 스레드가 숫자가 증가됨에 따라서 스레드를 많이 사용한다. (정확히 짜는 것 어렵다.)
  • 스레드 만들고 관리하는것 compiler나 실행시스템이 하고 사용자는 하지 않는다.
    • 병렬 실행 부분 지정해주고 컴파일러와 실행시스템이 알아서 만들어서 병렬적으로 실행한다.
  • 스레드 세가지 방법
    • Thread pools
    • OpenMP
    • Grand Central Dispatch

 

 

Thread Pools

  • Thread pool이 없을 경우 : 서버에 요청이 들어오면 요청 처리하는 스레드 하나 만들어서 요청을 처리해주고 다른 요청이 들어오면 또 다른 스레드 만들어서 요청하는 방식
  • 단점
    • 요청이 들어올 때마다 스레드를 만들어야 한다. (스레드를 만드는 시간이 든다.)
    • 요청이 많이 들어오면 스레드 수 많아져서 시스템이 감당할 수 없으면 시스템 속도 느려진다.
    • 해결 법 → 서버 시작할 때 스레드 여러 개 만들어 놓는다. 
  • Thread pool 이용하는 경우
  • 장점 
    • 스레드를 새로 만드는 것보다 이미 생성해서 요청을 처리를 하면 속도가 좀 더 빨라진다.
    • 시스템이 얼마나 부하를 견딜 수 있는지 알기 때문에 스레드 개수 정해지면 정한 개수 이상 스레드는 만들어지지 않으므로 스레드 개수 조정할 수 있다.
    • 간접적 장점 : 스레드 만드는 작업, 스레드 실행 시키는 작업 분리 → ex) 정기적으로 실행 되도록 스레드 만들 수 있다.

 

 

Grand Central Dispatch

  • 작업은 task로 구성하고 task를 serial queue나 병렬 큐에 집어 넣어서 실행기가 serial queue는 순차적으로 parallel은 병렬적으로 실행되도록 만든다.
  • 명시 block은 dispatch queue에 집어 넣으면 queue 종류에 따라서 알아서 실행 된다.

 

 

'School > 운영 체제' 카테고리의 다른 글

CPU 스케줄링  (0) 2021.04.19
스레드 이슈  (0) 2021.04.17
스레드  (0) 2021.04.14
프로세스 간 통신 (Interprocess communication)  (0) 2021.04.14
프로세스 연산  (0) 2021.04.14
Comments