Multithread

agpine12·2021년 11월 13일
0

⚙️  os

목록 보기
2/4
post-thumbnail

Thread의 종류

  1. user thread
    • Java는 VM이다. OS위에 VM에서 thread를 제공해주는것
    • 이는 OS에 있는 CPU의 core를 넘나들 수 없다.
    • Java thread 변화
      • 기존 : green thread (user thread)
      • 최신 : native thread (kernel thread)
  2. kernel thread
    • 운영체제의 CPU를 사용. 운영체제가 직접 관리 해준다.

user thread : kernel thread 의 관계

  1. Many-to-One (N:1) → 기본적인 모델
  2. One-to-One (1:1)
  3. Many-to-Many (N:N)

Thread API

: thread를 생성하고 managing 하는 API

  • POSIX Pthreads
    • Linux/Unix 계열에서 사용
    • 표준 (IEEE 1003.1c) : 실제로 behavior만 정의하고, 구현은 하지 않으나 OS에서 각각 구현되어있다.
  • Windows thread
  • Java thread
    • 실제로 운영체제에 종속적인 thread를 사용

Implicit Threading

  • concurrent & parallel한 어플리케이션은 multi thread + multi core 환경임
  • 복잡한 환경에서 컴파일러가 이를 대신하게 하는 라이브러리가 있음
    • java.concurrent.*
    • OpenMP (complier)
  1. Thread pool
    • thread를 여러개 만들어서 wait시켜둠
  2. Fork & Join
    *fork : 쓰레드 생성
  3. OpenMP
    • 컴파일러 지시어를 통해 C/C++에서 병렬처리를 할수 있게 지원
    • parallel regions을 지정해주면, 해당 코드블럭을 병렬처리 해줌
  4. GCD(Grand Central Diapatch)
    • macOS/iOS에서 사용

Reference
https://www.inflearn.com/course/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B3%B5%EB%A3%A1%EC%B1%85-%EC%A0%84%EA%B3%B5%EA%B0%95%EC%9D%98/dashboard

profile
Later never comes 👩🏻‍💻

0개의 댓글